ssh 端口转发

ssh 端口转发

我想使用 ssh 隧道连接特定机器到一组机器。但在找到的所有解决方案中,我需要在 ssh 配置文件中为每台机器指定一个条目。我想以这种方式使用通配符:

   Host *.mydomain.com
   // some magic here

目前找到的最佳解决方案是:

http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no-stinking-vpn-software/

答案1

如果您可以在隧道服务器上运行ncnetcat或之类的程序,则可以使用而不是端口转发:socatProxyCommand

# Only necessary if it matches the *.mydomain.com wildcard. Useless otherwise.
Host tunnelbox.mydomain.com
    ProxyCommand none

Host *.mydomain.com
    ProxyCommand ssh tunnelbox.mydomain.com nc %h %p
    #ProxyCommand ssh tunnelbox.mydomain.com ncat %h %p
    #ProxyCommand ssh tunnelbox.mydomain.com socat stdio tcp:%h:%p
    #ProxyCommand ssh tunnelbox.mydomain.com netcat %h %p

根据隧道服务器安装的工具,取消注释适当的 ProxyCommand。


请注意,这将为建立的每个隧道设置和拆除单独的 SSH 连接,这意味着连接速度将比通过 SOCKS 慢。(它不会影响性能连接。)

如果您的 SSH 版本支持,您可以启用连接多路复用:

Host tunnelbox.mydomain.com
    ControlMaster no
    ControlPath none

Host *.mydomain.com
    ControlMaster auto
    ControlPath ~/.ssh/S.%l.%r@%h:%p
    ControlPersist 10m

相关内容