對所有 SSH 連線使用 ProxyCommand

對所有 SSH 連線使用 ProxyCommand

我正在考慮擁有一個 SSH 代理伺服器或其他稱為跳轉主機的想法,我將用它來連接到我的所有“隱”伺服器.所以基本上我有以下設定。請注意,我在這裡故意使用 IP 位址而不是主機名稱。

<client> ---> <proxy_ssh> ---> <192.168.0.*>

我的意圖是它應該對使用者盡可能透明。因此理想情況下使用者只需執行以下命令

# ssh [email protected]

為了使其正常工作,我創建了以下.ssh/config.

Host *                                                                                                                                                                           
    ServerAliveInterval 240                                                                                                                                                      
    Compression yes                                                                                                                                                              
    ForwardAgent yes                                                                                                                                                             
    ForwardX11 yes                                                                                                                                                               

Host 192.168.0.*                                                                                                                                                                   
    ProxyCommand ssh my_user@proxy_ssh.example.com netcat -w 120 %h %p

這很好用。但如果我的proxy_ssh伺服器後面有更多的網路可以使用,那就有點無聊了。所以我嘗試簡單地將其添加ProxyCommandHost *不起作用的部分。

我想讓這對最終用戶更加透明,並將 ssh 配置更改為以下內容,只是省略了特定的主機定義。

Host *
    ServerAliveInterval 240                                                                                                                                                      
    Compression yes                                                                                                                                                              
    ForwardAgent yes                                                                                                                                                             
    ForwardX11 yes                                                                                                                                                               
    ProxyCommand ssh my_user@proxy_ssh.example.com netcat -w 120 %h %p

這導致我無法再連接到終端主機。連接只是超時了!

因此,我的問題是,有什麼方法可以讓我的所有 SSH 連線都使用主機,使其更加透明proxy_ssh

答案1

上面的範例將使其遞歸,每個連線都將使用代理命令,這又是帶有另一個代理命令的 ssh。 DOS 代理的好方法。

您應該從清單中排除代理,使用-F /dev/null忽略代理命令的配置或僅忽略代理 ssh 的代理命令:

ProxyCommand ssh -oProxyCommand=none my_user@proxy_ssh.example.com netcat -w 120 %h %p

答案2

在跳轉主機的配置中新增一個項目來覆蓋代理命令:

Host proxy_ssh.example.com
  ProxyCommand none

否則它將嘗試使用代理命令來存取跳轉主機本身。

相關內容