Ssh
在 ssh authorized_key 中使用 sleep 命令來阻止使用者的操作
我正在設置一個 Ubuntu 伺服器來接收來自客戶端的 ssh 連接,這樣我就可以連接回他們的機器(反向 SSH 隧道)。我搜尋了一種禁止客戶端在伺服器上執行任何操作的方法,並找到了不同的解決方案,但似乎沒有一個比在伺服器上配置特定客戶端的授權密鑰更簡單,方法是添加:
command="sleep x seconds"
我是否遺漏了一些重要的東西,會使該解決方案不是一個好的解決方案?
如果限制是針對多個使用者的,我會在 , 中設置一個
Match
塊/etc/sshd_config
,以對該組使用者應用限制。如果限制是針對特定的 ssh 密鑰,我會考慮採用您建議的路線並阻止~/.ssh/authorized_keys
文件中的命令。
Match
擋住/etc/sshd_config
閱讀 的文件
Match
,並像往常一樣更改連接子系統的ssh
工作方式時,確保您在遠端系統上有可用的 root 登錄以恢復或調整任何更改。# Add users to the UNIX group "restrictedusers" Match Group restrictedusers AllowTCPForwarding yes X11Forwarding no AllowAgentForwarding no ForceCommand echo No logins permitted
鍵入
~/.ssh/authorized_keys
command
通過將訪問控制選項添加到現有或新密鑰條目的前綴,不僅可以強制,而且可以禁用 X11Forwarding、代理轉發等。確保您在遠端系統上有一個可用的登錄名來恢復或調整對文件的任何更改。restrict,port-forwarding,command="echo No logins permitted" ssh-ed25519 ed25519-public-key-code-goes-here...
在這兩種情況下,一旦設置好,呼叫者需要為您設置反向回調。例如,這個將
remoteHost
的本地埠連接50123/tcp
到呼叫者的本地埠123/tcp
ssh -fN -R 50123:localhost:123 remoteHost
最重要的是,這一切都可以在呼叫者的
~/.ssh/config
for中準備好remoteHost
,這樣他們就只需要ssh remoteHost
啟動回調:Host remoteHost ForkAfterAuthentication yes SessionType none # listenPort targetHost:targetPort RemoteForward 50123 localhost:123