未分類

UbuntuでSFTPサーバーを作成する

検証環境はGCPにてUbuntu 16.04 LTSのインスタンスを作成しています。
手順自体はSSHキーの登録より後は他の環境でも共通です。

SSHキーの登録

公開鍵を設置します。
GCPの場合はインスタンスの詳細に入って編集、sshキーがx個ありますのところを表示して編集するとOKです。
「ssh-rsa」からコピーして貼り付けます。
末尾のところが自動でユーザー名になるので利用予定のユーザー名と合わせましょう。他は編集してはいけません。

GCPじゃない場合は
$ sudo adduser sftp-user
でユーザーを作成(useraddだとディレクトリ作成とかされないので面倒)
設定するパスワードを確認も含めて2回入力、その後は空のままEnterでOK
作成した後、適宜SSHキーを登録してください。

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

$ sudo groupadd sftp_users
$ sudo usermod -G sftp_users sftp-user

sshd configの設定

$ sudo vi /etc/ssh/sshd_config



Subsystem sftp /usr/lib/openssh/sftp-server をコメントアウト
Subsystem sftp internal-sftp を追加

末尾に
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home/%u
ForceCommand internal-sftp
を追加して保存

$ sudo systemctl restart ssh

ChrootDirectoryに設定するディレクトリはrootにする必要がある(でなければ接続できない)
$ sudo chown root:root /home/sftp-user

sftpでファイルを置くディレクトリを作成(filesも任意に変更可)
$ sudo mkdir /home/sftp-user/files
$ sudo chown sftp-user:sftp-user /home/sftp-user/files

これで sftp-user は/file 以下にのみアクセスできるSFTP用のユーザーになりました。
設定完了です。

参考:
https://www.server-world.info/query?os=Ubuntu_16.04&p=ssh&f=5
https://qiita.com/usutani/items/fdabef73b5dff60c95c6

-未分類