LoginSignup
20
26

More than 3 years have passed since last update.

SFTPサーバの設定

Last updated at Posted at 2019-06-06
  • 専用のユーザを作成して、SFTP 接続のみ利用可能で、SSH 接続を許可しない。
  • アップロード先のディレクトリだけアクセス可能にしたい。
  • 対象クライアントは多数想定

SFTP専用のユーザを作成してパスワードを設定する

$ sudo useradd sftp-user
$ sudo passwd sftp-user

SFTP専用ユーザのホームディレクトリを /(rootディレクトリ)に設定する
ChrootDirectory を使うと見かけ上ホームディレクトリは / になるため。

$ sudo usermod -d / sftp-user

実際にファイルを読み書きするディレクトリを作成する

$ sudo chown root:root /home/
$ sudo mkdir /home/sftp-user
$ sudo chown root:root /home/sftp-user
$ sudo chmod 755 /home/sftp-user

SFTP専用ユーザーのグループを作成する

$ sudo groupadd sftponly

SFTP専用ユーザーのグループを設定を変更する

$ id sftp-user
uid=1001(sftp-user) gid=1001(sftp-user) groups=1001(sftp-user)
$ sudo usermod -G sftponly sftp-user
$ id sftp-user
uid=1001(sftp-user) gid=1001(sftp-user) groups=1001(sftp-user),1002(sftponly)
sshd設定、internal-sftpを使用する

$ sudo vim /etc/ssh/sshd_config

/usr/lib/openssh/sftp-serverをコメントアウトし、 internal-sftp を追加する

-#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

SFTP専用ユーザが読み書きするディレクトリを作成する
下記の例では、接続すると test ディレクトリのみが表示されるようになる。

$ cd /home/sftp-user
$ sudo mkdir test
$ sudo chown sftp-user:sftp-user test

SFTP専用ユーザをchrootに閉じ込める

$ sudo vim /etc/ssh/sshd_config
下記の設定を追加する。

Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
AuthorizedKeysFile /home/%u/.ssh/authorized_keys

sshdを再起動する

$ sudo service sshd restart

sftpログイン確認
sftp -i ~/.ssh/xxxx.pem -oStrictHostKeyChecking=no ログインユーザ@IPアドレス

ユーザを追加する場合
SFTP専用グループの作成は不要で、ユーザをグループに追加する

- 参考文献

SFTPサーバを用意する - Qiita (usutaniさんの投稿)
https://qiita.com/usutani/items/fdabef73b5dff60c95c6

20
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
26