另一个SSH隧道问题

这是图

服务器A —->服务器B <—–笔记本电脑

所以基本上服务器A和笔记本可以直接连接到服务器B,但是不能直接build立从服务器A到笔记本的连接,所以我们设置了从服务器A到服务器B的反向ssh隧道,这样笔记本就可以连接到服务器A了。由服务器A设置隧道。所以现在ssh到笔记本电脑的服务器A解决了。

现在,我在服务器A中安装了一个应用程序,需要通过笔记本电脑上的端口443访问,我该怎么做?

有一点猜测,你已经:

从反向隧道开始:

serverA:~ $ ssh -R 22:localhost:10022 serverB 

然后从笔记本电脑连接到服务器B,并将本地转发连接到您在反向转发中定义的端口:

 laptop:~ $ ssh -L 10023:localhost:10022 serverB 

如果我正确地理解了你的话,那就是你已经做的那部分。 现在到最后一部分:

连接到您在本地转发中使用的端口上的本地主机,这将所有包直接发送到serverA,指定另一个端口转发,以便您的应用程序可以连接到serverA

 laptop:~ $ ssh -p 10023 -L 10443:localhost:443 localhost 

如果您的应用程序需要连接到443,并且不能使用另一个端口,例如我在示例中使用的10443,则必须以root身份执行最后一次连接:

 laptop:~ $ su - laptop:~ # ssh -p 10023 -L 443:localhost:443 user@localhost 

要么

 laptop:~ $ sudo ssh -p 10023 -L 443:localhost:443 user@localhost 

一些解释:

  • “443:localhost:443”在远端得到解决….所以它实际上是serverA
  • “user @”是login到serverA所需的用户,如果现在不需要,现在就是你本地的root用户
  • “本地主机”在本地解决,所以它实际上是笔记本电脑。

如果您希望服务器B上的-R转发端口可以从服务器A访问,则需要在远程端口左侧的服务器B上指定绑定地址。 例如,如果B的地址为1.2.3.4,并且您正在连接笔记本电脑:

 laptop:~ $ ssh -R 1.2.3.4:10443:127.0.0.1:443 server-b 

这将服务器b上的端口10443转发到笔记本电脑上的443。 如果您想使用端口443,请以root用户身份login到服务器b。

如果你有SSH访问服务器A,那么做一些像ssh -L 8443:localhost:443 user @ serverA应该工作。 然后你可以使用https:// localhost:8443来连接。