SFTPサーバを用意する

  • 72
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

環境
- Ubuntu 12.10 64bit

要求
- 専用のユーザを作成して、SFTP 接続のみ利用可能で、SSH 接続を許可しない。
- アップロード先のディレクトリだけアクセス可能にしたい。

(参考)SSH(シェル)の制限かけてchrootの設定を有効にしたSFTPサーバを提供する方法

-
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

sshdを再起動する

$ sudo service ssh restart

-

ssh(シェル)が実行できないことを確認する

$ ssh sftp-user@123.45.67.890 
sftp-user@123.45.67.890's password: 
This service allows sftp connections only.
Connection to 123.45.67.890 closed.