老规矩,先说结论:
#用于,未经测试$ssh-="nc--%h%p"user@
或者:
#如果代理服务器需要认证,可以使用nc的升级版ncat指定代理服务器的用户名和密码#用于。在上使用ncat无法连接,原因不明$ssh-="ncat--proxy-typehttp/socks4/socks5--proxyproxy.net:port--proxy-authproxyuser:proxypwd%h%p"user@server.net
由于不明原因,在macOS上,Ncat某版本升级后,上述方式不再生效,起码7.91版本在macOS10.15.7上是不行的。但Linux上没问题。所以增加个socat的替补方案:
#主机:user@server.net#代理:http://proxyuser:proxypwd@proxy.net:30808$ssh-o\ProxyCommand='socat-proxy:proxy.net:%h:%p,proxyport=30808,proxyauth=proxyuser:proxypwd'\user@server.net
Scout本身很强大,但对代理的支持这部分貌似差一些,只支持SOCKSv4和HTTPProxy,不支持SOCKS5。详情参考《socat初窥门径》。
一、背景
有些时候,由于网络限制等原因,不能直接连通过SSH连到指定服务器,需要经过代理进行连接。例如如下场景:
客户机:client.net
代理服务器:proxy.net,安装代理服务器软件,通过1080端口,提供Socket5代理服务
目标服务器:server.net,在默认22端口,提供SSH服务
其中,
client.net
不能直接访问server.net
client.net
可以访问proxy.net
proxy.net
可以访问server.net
二、解决方案
使用SSH的ProxyCommand选项,配合nc/Ncat命令,实现client.net通过代理proxy.net,以SSH访问server.net。
1、连接代理工具
(1)nc
macOS上常用这种方案。但是nc不支持需要认证的代理。
常用参数:
-X
指定代理协议
4
SOCKSv.4
5
SOCKSv.5(默认)
connect
HTTPSproxy