SFTP設定 · 1 min read · Sep 24, 2025
LinuxサーバーにSFTPをインストールして使用する方法

SFTPまたはSSHファイル転送プロトコルは、2台以上のコンピュータ間でデータを安全に転送するための方法です。これはSSHプロトコルの上で動作するFTPであり、そのセキュリティを活用し、認証を完全にサポートします。
今日では、レガシーFTPまたはFTP/Sプロトコルの代わりにSFTPを使用することが推奨されています。SFTPはデフォルトで安全であり、これはSSHの動作方法です。セキュリティの観点から、SFTPはパスワードスニッフィングや中間者攻撃(MiTM)からも保護します。
SSHと同様に、SFTPは暗号化と暗号ハッシュ関数を使用してデータの整合性を保護します。また、パスワードおよびキーに基づく認証を含む複数の安全な認証方法をサポートしています。さらに、SSHプロトコルと同じポートで実行されるため、サーバーの外部ネットワークへのオープンポートを減らします。
前提条件
このガイドでは、LinuxシステムにSFTPサーバーをセットアップする方法を学びます。また、sftpクライアントの基本コマンドも学びます。
以下は、実装のための現在の環境です:
- Linuxサーバー - Debian、Ubuntu、CentOS、Fedora、Rocky、または他のLinuxディストリビューションを使用できます。
- LinuxシステムにOpenSSHパッケージが利用可能であることを確認してください。
- SFTPクライアント - sftpコマンドラインまたはお好みのGUIクライアント。
OpenSSHパッケージの確認
SFTPサーバーをセットアップするには、LinuxシステムにOpenSSHパッケージがインストールされている必要があります。ほとんどのLinuxディストリビューションサーバーには、デフォルトでOpenSSHパッケージがインストールされています。しかし、システムにOpenSSHパッケージがない場合は、公式リポジトリからインストールできます。
- LinuxシステムにOpenSSHパッケージがインストールされていることを確認するには、以下のコマンドを使用します。
DebianまたはUbuntuサーバーの場合、以下のdpkgコマンドを使用できます。
dpkg -l | grep ssh以下は、私たちのDebianシステムからの出力です。
ii libssh2-1:amd64 1.9.0-2 amd64 SSH2クライアント側ライブラリ
ii openssh-client 1:8.4p1-5 amd64 セキュアシェル(SSH)クライアント、リモートマシンへの安全なアクセス用
ii openssh-server 1:8.4p1-5 amd64 セキュアシェル(SSH)サーバー、リモートマシンからの安全なアクセス用
ii openssh-sftp-server 1:8.4p1-5 amd64 セキュアシェル(SSH)sftpサーバーモジュール、リモートマシンからのSFTPアクセス用最初の列 ‘ ii ‘ は、パッケージがインストールされていることを意味します。パッケージ ‘ openssh-sftp-server ‘ はDebian/Ubuntuシステムにインストールされています。
RHEL/CentOS/Fedora/Rocky Linux/AlmaLinuxユーザーの場合は、以下のrpmコマンドを使用できます。
rpm -qa | grep sshグループとユーザーの作成
このステップでは、SFTPサーバー用の新しいグループとユーザーを作成します。このグループ内のユーザーはSFTPサーバーにアクセスできます。セキュリティ上の理由から、SFTPユーザーはSSHサービスにアクセスできず、SFTPサーバーにのみアクセスできます。
- 以下のコマンドを実行して、新しいグループ ‘ sftpgroup ‘ を作成します。
sudo groupadd sftpgroup- 以下のコマンドを使用して、新しいユーザー ‘ sftpuser ‘ を作成します。
sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser詳細なオプション:
- -G: ユーザーを ‘ sftpgroup ‘ に自動的に追加します。
- -d: 新しいユーザーのホームディレクトリを指定します。
- -s: 新しいユーザーのデフォルトを ‘ /sbin/nologin ‘ に設定します。これは、ユーザーがSSHサーバーにアクセスできないことを意味します。
- 次に、以下のコマンドを使用してユーザー ‘ sftpuser ‘ のパスワードを作成します。
passwd sftpuser強力なパスワードを入力し、再度入力してから ‘ Enter ‘ を押して確認します。

ユーザーを追加するには、ステージ番号 2 と 3 を繰り返します。最も重要なことは、すべてのSFTPユーザーが ‘ sftpgroup ‘ グループに属し、SSHを通じてシェルアクセスがないことです。
Chroot Jailディレクトリの設定
新しいグループとユーザーを作成した後、SFTPユーザー用のchrootディレクトリを作成して構成する必要があります。
- ユーザー ‘sftpuser’ の新しいホームディレクトリは ‘/srv/sftpuser‘ になります。以下のコマンドを実行して作成します。
mkdir -p /srv/sftpuser- ユーザー ‘ sftpuser ‘ のためにchrootを設定するには、ディレクトリの所有権をユーザーrootに変更する必要がありますが、グループは書き込みアクセスなしで読み取りおよび実行を維持します。
以下のコマンドを使用して、ディレクトリの所有権をユーザー ‘root’ に変更します。
sudo chown root /srv/sftpuserグループに読み取りおよび実行の権限を与えますが、書き込みは許可しません。
sudo chmod g+rx /srv/sftpuser- 次に、 ‘/srv/sftpuser‘ ディレクトリ内に新しい ‘data’ ディレクトリを作成し、その ‘ data ‘ ディレクトリの所有権をユーザー ‘ sftpuser ‘ に変更します。
mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data
これまでのところ、SFTPユーザーのディレクトリの詳細な構成は以下の通りです。
- ディレクトリ ‘/srv/sftpuser‘ はデフォルトのホームディレクトリです。
- ユーザー ‘ sftpuser ‘ はディレクトリ ‘/srv/sftpuser‘ に書き込むことはできませんが、そのディレクトリ内を読み取ることができます。
- ユーザー ‘ sftpuser ‘ は、SFTPサーバーのディレクトリ ‘/srv/sftpuser/data‘ にファイルをアップロードできます。
SSHサーバーでSFTPを有効にする
OpenSSHでSFTPサーバーを有効にするには、SSH構成 ‘/etc/ssh/sshd_config’ を編集する必要があります。
- nanoまたはvimを使用してssh構成 ‘/etc/ssh/sshd_config‘ を編集します。
sudo nano /etc/ssh/sshd_config- スタンドアロンの ‘ sftp-server ‘ 機能を無効にするために、以下の構成をコメントアウトします。
#Subsystem sftp /usr/lib/openssh/sftp-server- 以下の構成を行の最後に貼り付けます。
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory %h
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftp構成を保存して終了します。
詳細な構成:
- サブプロセス ‘ sftp-server ‘ の代わりに、 ‘ internal-sftp ‘ を使用しています。
- グループ ‘ sftpgroup ‘ に対してSFTPサーバーが有効になっています。
- 新しい構成を適用するために、以下のコマンドを使用してsshサービスを再起動します。
sudo systemctl restart sshdSFTPサーバーは準備が整い、アクセス可能であり、SSHサービスと同じポートで実行されています。
SFTPサーバーへのアクセス
クライアント側では、ほとんどのLinuxディストリビューションにデフォルトでインストールされているsftpコマンドラインを使用します。しかし、他のコマンドラインクライアントやGUI FTPクライアント(FileZilla、Cyberduckなど)を使用することもできます。
- SFTPサーバーに接続するには、以下のようにsftpコマンドを実行します。
sftp ftpuser@SERVER-IPSFTPおよび/またはSSHサーバーがカスタムポートで実行されている場合は、以下のようにsftpコマンドを使用できます。
sftp -P PORT ftpuser@SERVER-IPユーザー ‘ sftpuser ‘ のパスワードを入力します。
- SFTPサーバーに接続したら、以下のコマンドを実行します。
現在の作業ディレクトリのパスを表示し、すべての利用可能なファイルとディレクトリをリストします。
pwd
ls
- ローカルファイルをSFTPサーバーのディレクトリ ‘/‘ にアップロードします。これは ‘ permission denied ‘ という結果になります。なぜなら、それはchrootディレクトリだからです。
put /path/to/file/on/local /- SFTPサーバーのディレクトリ ‘/data/‘ にローカルファイルをアップロードします。構成が正しければ、ファイルは ‘/data/‘ ディレクトリにアップロードされます。
put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/
- 次に、以下のコマンドを使用して ‘/data‘ ディレクトリ内の利用可能なファイルを確認します。
ls /data/そして、SFTPサーバーにアップロードしたファイルが表示されます。
結論
おめでとうございます!LinuxシステムにSFTPサーバーを正常に構成しました。このタイプの構成は、OpenSSHがインストールされたほとんどのLinuxシステムに適用できます。また、SFTPユーザーのためのchrootディレクトリの設定方法と、基本的なsftpクライアントコマンドを学びました。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。