SFTPサーバーの構築手順

1. SFTP用グループの作成

まず、SFTP専用のユーザーを束ねるためのグループを作成します。

# groupadd sftp_users
# getent group sftp_users
sftp_users:x:1002:

2. 制限付きユーザーの追加とパスワード設定

シェルアクセスを無効にしたSFTP専用ユーザーを作成し、グループに所属させます。

# useradd -g sftp_users -s /sbin/nologin ftpuser01
# echo "SecurePass!2024" | passwd --stdin ftpuser01

3. チルトディレクトリの準備

ユーザーごとの隔離されたホームディレクトリを構築します。

# mkdir -p /srv/sftp/ftpuser01
# usermod -d /srv/sftp/ftpuser01 ftpuser01

4. SSHサーバー設定の変更

/etc/ssh/sshd_config を編集し、以下のように設定を追加・変更します。

#Subsys­tem sftp /usr/libexec/openssh/sftp-server

Subsystem sftp internal-sftp
Match Group sftp_users
    ChrootDirectory /srv/sftp/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

5. ディレクトリ権限の厳格化

チルトルートはroot所有でなければならず、書き込み不可に設定します。

# chown root:sftp_users /srv/sftp/ftpuser01
# chmod 755 /srv/sftp/ftpuser01

6. アップロード用サブディレクトリの作成

ユーザーがファイルをアップロードできるディレクトリを用意し、適切な権限を付与します。

# mkdir /srv/sftp/ftpuser01/inbox
# chown ftpuser01:sftp_users /srv/sftp/ftpuser01/inbox
# chmod 750 /srv/sftp/ftpuser01/inbox

7. SSHサービスの再起動

設定を反映させるためにSSHデーモンを再起動します。

# systemctl reload sshd
# systemctl is-active sshd
active

8. 接続テスト

クライアントマシンから接続を試み、ディレクトリ構造を確認します。

$ sftp ftpuser01@server-host
ftpuser01@server-host's password: 
Connected to server-host.
sftp> ls -la
drwxr-xr-x    3 root     sftp_users     4096 Oct 23 11:21 .
drwxr-xr-x    3 root     sftp_users     4096 Oct 23 11:21 ..
drwxr-x---    2 ftpuser01 sftp_users     4096 Oct 23 11:21 inbox

9. 主要なSFTPコマンド

  • put <local> [<remote>] — ローカルファイルをアップロード
  • get <remote> [<local>] — リモートファイルをダウンロード
  • mkdir <dir> — リモート側にディレクトリ作成
  • rm <file> — ファイル削除
  • chmod <mode> <file> — 権限変更

タグ: openssh sftp linux-security chroot sshd-config

5月24日 03:21 投稿