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パッケージがない場合は、公式リポジトリからインストールできます。

  1. 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サーバーにのみアクセスできます。

  1. 以下のコマンドを実行して、新しいグループ ‘ sftpgroup ‘ を作成します。
sudo groupadd sftpgroup
  1. 以下のコマンドを使用して、新しいユーザー ‘ sftpuser ‘ を作成します。
sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

詳細なオプション:

  • -G: ユーザーを ‘ sftpgroup ‘ に自動的に追加します。
  • -d: 新しいユーザーのホームディレクトリを指定します。
  • -s: 新しいユーザーのデフォルトを ‘ /sbin/nologin ‘ に設定します。これは、ユーザーがSSHサーバーにアクセスできないことを意味します。
  1. 次に、以下のコマンドを使用してユーザー ‘ sftpuser ‘ のパスワードを作成します。
passwd sftpuser

強力なパスワードを入力し、再度入力してから ‘ Enter ‘ を押して確認します。

ユーザーとグループの追加sftpserver

ユーザーを追加するには、ステージ番号 2 と 3 を繰り返します。最も重要なことは、すべてのSFTPユーザーが ‘ sftpgroup ‘ グループに属し、SSHを通じてシェルアクセスがないことです。

Chroot Jailディレクトリの設定

新しいグループとユーザーを作成した後、SFTPユーザー用のchrootディレクトリを作成して構成する必要があります。

  1. ユーザー ‘sftpuser’ の新しいホームディレクトリは ‘/srv/sftpuser‘ になります。以下のコマンドを実行して作成します。
mkdir -p /srv/sftpuser
  1. ユーザー ‘ sftpuser ‘ のためにchrootを設定するには、ディレクトリの所有権をユーザーrootに変更する必要がありますが、グループは書き込みアクセスなしで読み取りおよび実行を維持します。

以下のコマンドを使用して、ディレクトリの所有権をユーザー ‘root’ に変更します。

sudo chown root /srv/sftpuser

グループに読み取りおよび実行の権限を与えますが、書き込みは許可しません。

sudo chmod g+rx /srv/sftpuser
  1. 次に、 ‘/srv/sftpuser‘ ディレクトリ内に新しい ‘data’ ディレクトリを作成し、その ‘ data ‘ ディレクトリの所有権をユーザー ‘ sftpuser ‘ に変更します。
mkdir -p /srv/sftpuser/data  
chown sftpuser:sftpuser /srv/sftpuser/data

sftpuserのためのchrootディレクトリの設定

これまでのところ、SFTPユーザーのディレクトリの詳細な構成は以下の通りです。

  • ディレクトリ ‘/srv/sftpuser‘ はデフォルトのホームディレクトリです。
  • ユーザー ‘ sftpuser ‘ はディレクトリ ‘/srv/sftpuser‘ に書き込むことはできませんが、そのディレクトリ内を読み取ることができます。
  • ユーザー ‘ sftpuser ‘ は、SFTPサーバーのディレクトリ ‘/srv/sftpuser/data‘ にファイルをアップロードできます。

SSHサーバーでSFTPを有効にする

OpenSSHでSFTPサーバーを有効にするには、SSH構成 ‘/etc/ssh/sshd_config’ を編集する必要があります。

  1. nanoまたはvimを使用してssh構成 ‘/etc/ssh/sshd_config‘ を編集します。
sudo nano /etc/ssh/sshd_config
  1. スタンドアロンの ‘ sftp-server ‘ 機能を無効にするために、以下の構成をコメントアウトします。
#Subsystem      sftp    /usr/lib/openssh/sftp-server
  1. 以下の構成を行の最後に貼り付けます。
Subsystem sftp internal-sftp  
  
Match Group sftpgroup  
     ChrootDirectory %h  
     X11Forwarding no  
     AllowTCPForwarding no  
     ForceCommand internal-sftp

構成を保存して終了します。

詳細な構成:

  • サブプロセス ‘ sftp-server ‘ の代わりに、 ‘ internal-sftp ‘ を使用しています。
  • グループ ‘ sftpgroup ‘ に対してSFTPサーバーが有効になっています。
  1. 新しい構成を適用するために、以下のコマンドを使用してsshサービスを再起動します。
sudo systemctl restart sshd

SFTPサーバーは準備が整い、アクセス可能であり、SSHサービスと同じポートで実行されています。

SFTPサーバーへのアクセス

クライアント側では、ほとんどのLinuxディストリビューションにデフォルトでインストールされているsftpコマンドラインを使用します。しかし、他のコマンドラインクライアントやGUI FTPクライアント(FileZillaCyberduckなど)を使用することもできます。

  1. SFTPサーバーに接続するには、以下のようにsftpコマンドを実行します。
sftp ftpuser@SERVER-IP

SFTPおよび/またはSSHサーバーがカスタムポートで実行されている場合は、以下のようにsftpコマンドを使用できます。

sftp -P PORT ftpuser@SERVER-IP

ユーザー ‘ sftpuser ‘ のパスワードを入力します。

  1. SFTPサーバーに接続したら、以下のコマンドを実行します。

現在の作業ディレクトリのパスを表示し、すべての利用可能なファイルとディレクトリをリストします。

pwd  
ls

sftpコマンドでsftpserverに接続

  1. ローカルファイルをSFTPサーバーのディレクトリ ‘/‘ にアップロードします。これは ‘ permission denied ‘ という結果になります。なぜなら、それはchrootディレクトリだからです。
put /path/to/file/on/local /
  1. SFTPサーバーのディレクトリ ‘/data/‘ にローカルファイルをアップロードします。構成が正しければ、ファイルは ‘/data/‘ ディレクトリにアップロードされます。
put /path/to/file1/on/local1 /data/  
put /path/to/file2/on/local /data/

sftpserverへの読み取りと書き込みを確認

  1. 次に、以下のコマンドを使用して ‘/data‘ ディレクトリ内の利用可能なファイルを確認します。
ls /data/

そして、SFTPサーバーにアップロードしたファイルが表示されます。

結論

おめでとうございます!LinuxシステムにSFTPサーバーを正常に構成しました。このタイプの構成は、OpenSSHがインストールされたほとんどのLinuxシステムに適用できます。また、SFTPユーザーのためのchrootディレクトリの設定方法と、基本的なsftpクライアントコマンドを学びました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。