Ubuntuでsftpサーバー構築
コンテンツ
sftp は ssh を利用したセキュアなファイル転送プロトコルです。
sftp用ユーザーの作成
sftpを利用するユーザーを作成します。
sftpユーザー作成
Ubuntuの場合、ユーザー作成コマンドは他のLinuxディストリビューションと異なります。
#Ubuntu ユーザー作成コマンド
adduser ユーザー名
$ sudo adduser sftpuser1
※ユーザーを削除する
ユーザーを削除する場合は、 deluser コマンドを実行します。
ユーザー削除コマンド
$ sudo deluser ユーザー名
sftp用グループ作成
sftpを利用するユーザーが属するグループを作成します。
#グループ作成
groupadd グループ名
$ sudo groupadd sftpusers
ユーザーをグループに追加します。
ユーザーをグループに追加コマンド
adduser ユーザー名 グループ名
$ sudo adduser sftpuser1 sftpusers
sftp用ディレクトリの作成
sftpユーザーがファイルを転送するディレクトリを作成します。
$ sudo mkdir /var/sftp
$ sudo chown root:root /var/sftp
$ sudo mkdir /var/sftp/sftpuser1
$ sudo sftpuser1:sftpusers /var/sftp/sftpuser1
$ sudo chmod 755 /var/sftp/sftpuser1
sftpユーザーのディレクトリ制限の設定
sftpユーザーの利用するディレクトリを制限する設定を行います。
ssh設定ファイルの変更
ssh接続の不可、sftpユーザーのディレクトリ制限を実施するため、ssh設定ファイルを変更します。
sshの設定ファイル /etc/ssh/ssh_config
Subsystem sftp /usr/libexec/openssh/sftp-server
の定義があればコメントアウトをし、下記設定を追記します。
Subsystem sftp internal-sftp
Match User sftpuser1
ChrootDirectory /var/sftp
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes
ForceCommand internal-sftp
sshで接続できないことを確認
下記コマンドで ssh 接続ができないことを確認します。
$ ssh sftpuser1@localhost
下記メッセージが表示されれば ssh 接続不可が確認されます。
This service allows sftp connections only.
Connection to localhost closed.
ssh設定が反映されない場合
通常 ssh の設定ファイルは /etc/ssh/ssh_config ですが、 ubuntuでのssh設定ファイルは /etc/ssh/sshd_configのようです。 設定ファイル変更後、下記コマンドでエラーの有無を確認します。
$ ssh sftpuser1@localhost
上記コマンドで、下記のようなエラーが発生する場合は、 /etc/ssh/sshd_configを編集します。
$ ssh sftpuser1@localhost
/etc/ssh/ssh_config: line 58: Bad configuration option: subsystem
Unsupported Match attribute Group
/etc/ssh/ssh_config line 60: Bad Match condition
lost connection
sftpサーバーに鍵認証で接続
sftpに鍵認証で接続する手順です。
クライアントPCで秘密鍵、公開鍵を生成
クライアントPCで秘密鍵、公開鍵を生成します。
$ ssh-keygen -t rsa -b 4096 {-f <鍵の名前>}
-f オプションを指定しない場合、ホームディレクトリの .ssh ディレクトリに秘密鍵、公開鍵が生成されます。
$ ls .ssh
id_rsa id_rsa.pub
クライアントPCから公開鍵をsftpサーバーに送信し設置
クライアントPCで生成した公開鍵をsftpサーバーに配置します。
$ mv id_rsa.pub ~/.ssh # ファイルの配置
$ cd ~/.ssh
配置後 .sshディレクトリ配下にある authorized_keys ファイルに統合する
$ cat id_rsa.pub >> authorized_keys
$ rm id_rsa.pub
authorized_keys ファイルのパーミッションは 0600 に変更
$ chmod 600 authorized_keys
完了後、クライアントPCから sftp 接続し確認します。
丁寧な説明有り難うございます。
以下、誤記がある様なのでコメント投稿します。
sftp用ディレクトリの作成
sftpユーザーがファイルを転送するディレクトリを作成します。
新イメージ
04 $ sudo chown sftpuser1:sftpusers /var/sftp/sftpuser1
旧イメージ
04 $ sudo sftpuser1:sftpusers /var/sftp/sftpuser1
以上です。