我想使用 ssh 隧道连接特定机器到一组机器。但在找到的所有解决方案中,我需要在 ssh 配置文件中为每台机器指定一个条目。我想以这种方式使用通配符:
Host *.mydomain.com
// some magic here
目前找到的最佳解决方案是:
答案1
如果您可以在隧道服务器上运行nc
或netcat
或之类的程序,则可以使用而不是端口转发:socat
ProxyCommand
# 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