Linux

允許 SFTP 但不允許 SSH?

  • April 26, 2021

我正在為幾個朋友和小客戶創辦一家很小的託管公司,沒什麼大不了的。

我想讓我的“客戶”有權管理他們在伺服器上的文件。我討厭 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,這樣會變得更容易)

引用自:https://serverfault.com/questions/354615