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 test
新增 sftp 各帳號的根目錄,以及權限設定 *重要*
mkdir /sftp-server mkdir -p /sftp-server/test-root/test chown mytest:mytest /sftp-server/test-root/test
TIPs:
- ChrootDirectory 所定義的目錄 Owner 必須是 root,否則 /var/log/secure 會出現錯誤:
Accepted password for test from 10.12.25.68 port 60213 ssh2
pam_unix(sshd:session): session opened for user test by (uid=0)
fatal: bad ownership or modes for chroot directory "/home/test"
pam_unix(sshd:session): session closed for user test- sftp 各帳號的目錄架構類似
# tree -l /sftp-server
/sftp-server
├── test2-root
│ └── test2
│ └── readme.txt
└── test-root
└── test
4 directories, 1 fileNOTE: 如果不多建一層目錄 test-root,會使每個帳號再登入後,可以看到其他目錄的名稱,如果不在意這,可以修改成
ChrootDirectory /sftp-server省略 test-root 這層目錄
Accepted password for test from 10.12.25.68 port 60213 ssh2
pam_unix(sshd:session): session opened for user test by (uid=0)
fatal: bad ownership or modes for chroot directory "/home/test"
pam_unix(sshd:session): session closed for user test
A: ChrootDirectory 所定義的目錄 Owner 必須是 root。
設定 Chroot 目錄權限:錯誤的目錄權限設定會導致在 log 中出現 "fatal: bad ownership or modes for chroot directory XXXXXX" 的訊息。根據 openssh 5.1 chrootdirectory permissions issue 這篇文章的資訊顯示,目錄的權限設定有兩個要點:
A: CentOS 5 以前版本可用下述方式
修改某帳號的 shell
# usermod -s /usr/libexec/openssh/sftp-server john # echo "/usr/libexec/openssh/sftp-server" >> /etc/shells
Images 0 | ||
---|---|---|
No images to display in the gallery. |