SFTP Server
適用 CentOS 6 以後版本
編輯 /etc/ssh/sshd_config
NOTE: 註解 Subsystem 行,加上其他幾行
# override default of no subsystems #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftp-only ChrootDirectory /sftp-server/%u-root X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
新增帳號/群組
groupadd sftp-only useradd -c "sftp users" -G sftp-only -M -s /sbin/nologin mytest
新增 sftp 各帳號的根目錄,以及權限設定 *重要*
mkdir /sftp-server mkdir -p /sftp-server/mytest-root/mytest chown mytest:mytest /sftp-server/mytest-root/mytest
A: 修改 /etc/ssh/sshd_config,如果 OpenSSH-Server 版本低於 4.8p1
Subsystem sftp internal-sftp ChrootDirectory /home AllowTCPForwarding no X11Forwarding no
Tips:
* ChrootDirectory 所指定的目錄owner必須是 root
* home 目錄下的用戶名稱仍可以被其他用戶看到,尚無解決方法。
* 帳號登入後,自動進入所屬 home 目錄,可修改帳號的設定,參考指令:
# usermod -d /john john
設定 Chroot 目錄權限:錯誤的目錄權限設定會導致在 log 中出現 "fatal: bad ownership or modes for chroot directory XXXXXX" 的訊息。根據 openssh 5.1 chrootdirectory permissions issue 這篇文章的資訊顯示,目錄的權限設定有兩個要點:
A:
修改某帳號的 shell
# usermod -s /usr/libexec/openssh/sftp-server john # echo "/usr/libexec/openssh/sftp-server" >> /etc/shells