从我的电脑(客户端)我可以SSH连接到服务器(host1),从那里我可以SSH连接到另一台服务器(host2)。
不过我想在我的客户端和host2之间build立一个dynamic隧道。
我可以dynamic隧道从我的客户端到host1罚款,我可以dynamic隧道从主机1到主机2,但我似乎无法得到从客户端指向隧道host2。
host1和host2不在同一个本地networking上。
由于我的networking上的防火墙阻止了自定义端口,所以无法连接到来自客户端的host2,但是我可以连接到host1。
设置一个正常的ssh隧道到host1 :
client$ ssh -L 1080:127.0.0.1:1080 host1
然后从host1到host2 ssh并设置代理:
host1$ ssh -D 1080 host2
将浏览器的client代理configuration指向本地主机1080。
我将使用ProxyCommand选项在host1和host2之间产生一个netcat会话。 在客户端上,您可以执行以下操作
$ ssh -D 1080 host2 -o 'ProxyCommand ssh host1 nc -w1 %h %p'
%h和%p是主机名和端口号的variables。 也可以简单地硬编码这些值。
-w选项是在完成后让netcat超时。 没有它,你将离开主机1上的悬挂netcat会话。 该选项可能会因netcat版本而异。
而不是每次你可以把这些行放在你的〜/ .ssh / config中的时候运行这个长的ssh命令
Host host2 ProxyCommand ssh -e none host1 nc -w1 %h %p
使它成为客户端的一个简单的键入
$ ssh -D 1080 host2