对所有 SSH 连接使用 ProxyCommand

对所有 SSH 连接使用 ProxyCommand

我曾经考虑过使用 SSH 代理服务器,或者说 Jump Host,用它来连接我所有的“隐”服务器。基本上我有以下设置。请注意,我在这里故意使用 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

否则它将尝试使用代理命令到达跳转主机本身。

相关内容