两个服务器之间的动态隧道

两个服务器之间的动态隧道

从我的计算机(客户端)我可以通过 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

然后从 sshhost1host2并设置代理:

host1$ ssh -D 1080 host2

将浏览器的代理配置指向clientlocalhost 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

相关内容