Linux
啟用 SSH shell 訪問但禁用 SFTP 訪問
我已經為這個問題尋找了一個可行的答案,大多數答案都包括關於為什麼不這樣做的建議。但是,這是場景,以及有必要這樣做的原因:
我有一個控制台應用程序,在每個使用者的 .profile 中,都有一個應用程序的啟動命令,在啟動它的命令之後,有一個“退出”命令,它將它們從系統中註銷。我只希望他們能夠通過它提供的界面訪問這個控制台應用程序。啟動時,應用程序會向使用者顯示可以通過應用程序訪問的客戶端列表,每個客戶端都有自己的數據目錄。使用者只能訪問他們需要訪問的客戶端。
現在問題來了:如果我給使用者 SSH 訪問權限,他們也將能夠使用 SFTP 客戶端登錄,這將使他們能夠直接訪問應用程序的數據目錄,這是非常不可取的,因為這也會給他們訪問他們不應該訪問的數據目錄。
當使用 telnet/FTP 組合時,這是一件非常簡單的事情,但現在我想讓使用者從 Internet 上的任何地方訪問,我無法找到一種方法將他們拒之門外,而仍然允許他們訪問可以執行應用程序的 shell。
編輯:
如果不明顯,以下答案並非旨在防止任何對伺服器具有 shell 訪問權限的人使用 SFTP的*安全方法。*這只是一個解釋如何從外部可見性中禁用它的答案。有關使用者級安全性的討論,請參閱 @cpast 和 @Aleksi Torhamo 的回答。如果安全是您的重點,那麼這個答案不是正確的。如果簡單的服務可見性是您的重點,那麼這就是您的答案。
我們現在繼續原來的答案:
註釋掉 sshd_config 中的 sftp 支持(當然還有 restart
sshd
):
#Subsystem sftp /usr/lib/openssh/sftp-server