Ssh

在 ssh authorized_key 中使用 sleep 命令來阻止使用者的操作

  • January 12, 2022

我正在設置一個 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/configfor中準備好remoteHost,這樣他們就只需要ssh remoteHost啟動回調:

Host remoteHost
   ForkAfterAuthentication yes
   SessionType none
   # listenPort targetHost:targetPort
   RemoteForward 50123 localhost:123

引用自:https://unix.stackexchange.com/questions/685967