从我的计算机(客户端)我可以通过 SSH 连接到一台服务器(host1),然后从那里我可以通过 SSH 连接到另一台服务器(host2)。
但是我想在我的客户端和主机2之间建立一个动态隧道。
我可以从我的客户端到主机 1 建立动态隧道,也可以从主机 1 到主机 2 建立动态隧道,但我似乎无法让隧道从客户端指向主机 2。
host1和host2不在同一个本地网络上。
由于我的网络防火墙阻止了自定义端口,我无法从我的客户端连接到 host2,但我可以连接到 host1。
答案1
设置常规 ssh 隧道以host1
:
client$ ssh -L 1080:127.0.0.1:1080 host1
然后从 sshhost1
到host2
并设置代理:
host1$ ssh -D 1080 host2
将浏览器的代理配置指向client
localhost 1080。
答案2
我将使用 ProxyCommand 选项在 host1 和 host2 之间生成 netcat 会话。在客户端,您可以执行以下操作
$ ssh -D 1080 host2 -o 'ProxyCommand ssh host1 nc -w1 %h %p'
%h 和 %p 是主机名和端口号的变量。也可以简单地对这些值进行硬编码。
-w 选项用于在完成后使 netcat 超时。如果没有它,您将在 host1 上留下悬空的 netcat 会话。该选项可能因 netcat 版本的不同而不同。
您不必每次都运行那个长 ssh 命令,您可以将这些内容放入 ~/.ssh/config 中
Host host2
ProxyCommand ssh -e none host1 nc -w1 %h %p
让客户端的输入变得简单
$ ssh -D 1080 host2