以下のような sftpuser を作成します。
- ssh でのログインはできない
- sftp でファイルのアップロード、ダウンロードが可能
- sftp でのログイン時はサーバー側で /some/where/ChrootDir/ に chroot される
- 環境
- Ubuntu 14.04 (Trusty Tahr) Server
/etc/ssh/sshd_config の最後に以下を追加
Match User sftpuser
ChrootDirectory /some/where/ChrootDir
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
- ChrootDirectory /some/where/ChrootDir により sftp した時に指定したディレクトリに chroot されます。
- ForceCommand internal-sftp により、sftpuser は sftp はできますが、ssh ログインはできなくなります。
- AllowTcpForwarding no により、シェルを起動しない ssh 接続の場合でもポートフォワードができなくなります。
- X11Forwarding no により、X11 転送ができなくなるようです。(普段 X11 転送は使っていないので試してません)
sshd を再起動
$ sudo service ssh restart
sftpuser を作成
$ sudo adduser \
--home /sftpuser \
--shell /usr/sbin/nologin \
--no-create-home \
sftpuser
- --home /sftpuser により、/some/where/ChrootDir/ に chroot された sftp 直後のカレントディレクトリ (ホームディレクトリ) は /some/where/ChrootDir/sftpuser/ となります。
- --shell /usr/sbin/nologin により、ssh 以外でもログインできなくなります。
- --no-create-home により、chroot 前の /sftpuser/ ディレクトリが作成されないようにしています。
chroot するディレクトリを作成
$ sudo mkdir -p /some/where/ChrootDir
$ sudo chown root:root /some/where/ChrootDir
$ sudo chmod 755 /some/where/ChrootDir
$ ls -ld /some/where/ChrootDir
drwxr-xr-x 2 root root 4096 Mar 15 18:16 /some/where/ChrootDir
- chroot 先のディレクトリ (/some/where/ChrootDir/) のオーナーは root である必要があり、更にどんなグループの書き込み権限も付与されていない必要があるようです。
sftp ログイン時のホームディレクトリを作成
$ sudo mkdir /some/where/ChrootDir/sftpuser
$ sudo chown sftpuser:sftpuser /some/where/ChrootDir/sftpuser
$ ls -ld /some/where/ChrootDir/sftpuser
drwxr-xr-x 2 sftpuser sftpuser 4096 Mar 16 20:44 /some/where/ChrootDir/sftpuser
参考
0 件のコメント:
コメントを投稿