開発案件などにおいて、効率的な作業を行う目的で、自社(または個人)で所有するサーバーの一部の領域を第三者に公開(一時的に開放)したいケースがあったりします。
例えば、
そこまで頻繁に発生する事案でない場合、それだけのために FTP サーバーをセットアップするのも手間かと思います。
今回 sftp と chroot を利用して、簡単お手軽にパートナーさん等に公開するサーバー領域を確保できたので、その時のメモになります。
sftp とは?(ついでに ftps との違いも)
SFTP | SSH File Transfer Protocol(略称:SFTP)とは、SSHの仕組みを使用しコンピューター間でファイルを安全に転送するプロトコルである。 sftpは、このプロトコルを利用するコマンドの名前である。 OpenSSHには、sftpコマンドがサブシステムとして含まれる。by Wikipedia |
---|---|
FTPS | FTPS (File Transfer Protocol over SSL/TLS) は、FTPで送受信するデータをSSLまたはTLSで暗号化するプロトコル。 IETFにより、RFC 2228やRFC 4217で標準化されている。 通常のWell-known Portは、990/tcp。by Wikipedia |
chroot とは?
chroot | アクセスした領域以外への移動を禁止します。つまりアクセスして来たユーザーをある領域内に閉じ込めてしまいます。 |
---|
今回は、sftp での接続を目的としますが、純粋な ssh で接続させることも可能です。
その場合、コマンドやライブラリ(lib64など)を予め用意(コピー)する必要があります。
情報が必要な方はググッてみてください。
OS | CentOS 6.5 |
---|---|
openssh | OpenSSH_5.3p1 |
% sudo su
# groupadd sftp-user01 -g 20001 # useradd -g 20001 -s /sbin/nologin -u 20001 -d /home/chroot/sftp-user01 sftp-user01 # passwd sftp-user01(パスワード認証の場合)
重要 |
---|
ChrootDirectory先のディレクトリ(/home/chroot/sftp-user01)の所有者は「root」、パーミッションは「755」にしておく
# ls -l /home/chroot drwxr-xr-x 4 root root 4096 11月 19 16:11 2018 sftp-user01
# cd /home/chroot/sftp-user01 # mkdir htdocs # chown sftp-user01:sftp-user01 htdocs
# vi /etc/ssh/sshd_config
# override default of no subsystems #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp Match User sftp-* ChrootDirectory ~ X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
# /etc/init.d/sshd restart