另一个 SSH 隧道问题

另一个 SSH 隧道问题

图表如下

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

因此基本上服务器 A 和笔记本电脑可以直接连接到服务器 B,但是您不能直接建立从服务器 A 到笔记本电脑的连接,因此我们从服务器 A 到服务器 B 设置了一个反向 ssh 隧道,以便笔记本电脑可以通过服务器 A 设置的隧道连接到服务器 A。所以现在从笔记本电脑 ssh 到服务器 A 的问题解决了。

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

答案1

猜猜你已经拥有什么:

从反向隧道开始:

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

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

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

如果我理解正确的话,你已经做了类似的事情。现在来看最后一部分:

连接到本地转发中使用的端口上的 localhost,这会将所有包直接发送到 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@” 是登录 serverA 所需的用户,如果之前不需要,那么现在就需要了,因为你现在是本地 root 用户
  • “localhost” 在本地解析,因此它实际上是笔记本电脑。

答案2

如果您希望服务器 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 身份登录到服务器 b。

答案3

如果你有 SSH 访问权限,那么执行类似 ssh -L 8443:localhost:443 user@serverA 的操作应该可以。然后你就可以使用https://本地主机:8443连接。

相关内容