Linux
允許 SFTP 但不允許 SSH?
我正在為幾個朋友和小客戶創辦一家很小的託管公司,沒什麼大不了的。
我想讓我的“客戶”有權管理他們在伺服器上的文件。我討厭 FTP,因為它不安全,而且在我看來它已經過時了。
所以我想允許我的使用者通過 SFTP 連接,但不允許他們通過 SSH 連接。(我知道,我知道,SFTP 使用的是 SSH)。但我只是想知道,這可能嗎?
所以我不必在伺服器上安裝 FTP 服務,一切都會很棒!
從 4.9 版開始 OpenSSH(在 centos 5.x 中不可用,但 ChrootDirectory 功能被向後移植)有一個
internal-sftp
子系統:Subsystem sftp internal-sftp
然後阻止其他用途:
Match group sftponly ChrootDirectory /upload/%u X11Forwarding no AllowTcpForwarding no AllowAgentForwarding no ForceCommand internal-sftp
將您的使用者添加到
sftponly
組中。chroot 目錄必須由 root 擁有,並且不能是組可寫的,因此為每個使用者創建一個子目錄,例如,uploads
或者home/$username
由適當的使用者擁有(如果您匹配他們的主目錄,它將是連接時的預設工作目錄) . 我還設置/bin/false
為使用者的外殼。例如,使用者可以上傳單個文件:
sftp username@hostname <<< 'put filename.ext uploads/'
(希望很快會修改 scp 以使用 sftp,這樣會變得更容易)