3台机器之间的端口转发

Maz*_*ryt 3 ssh port-forwarding ssh-tunnel

我有 3 台机器,它们连接成一条链,A、B、C。

 A-->B-->C
Run Code Online (Sandbox Code Playgroud)

A 是我的机器,B 是服务器,C 是其他机器,上面有一些服务和 Web 服务器。由于一些问题,我需要从A访问C上的Web服务器(端口80),我可以使用ssh从A登录到B,然后从B登录到C,但此时控制台太少了。我需要网络浏览器,并且使用带选项的 ssh-X不起作用(Firefox 启动时 dbus 出现一些问题)。

我使用经典命令在 B 上进行端口转发,为 ssh 转发 22 端口:

ssh -L 2222:localhostB:22 user@ipC
Run Code Online (Sandbox Code Playgroud)

但使用相同的方法转发端口 80 不起作用:

ssh -L 8888:localhostB:80 user@ipC
Run Code Online (Sandbox Code Playgroud)

我知道还有其他一些转发可以使其工作,但我不明白如何以及什么。

我需要这样的东西:

A --> B (frd from B:8888 to C:80) --> C (port 80 web server)
Run Code Online (Sandbox Code Playgroud)

因此,当我输入 ipB:8888 时,我将被转发到 C:80。

任何解释必须做什么的帮助或带有命令的脚本将不胜感激。我从一篇博客中注意到必须完成两次ssh -L转发,但我不明白为什么。

Geo*_*ord 5

你走在正确的轨道上。

在A上:

ssh -L 8888:ipC:80 user@ipB -N
Run Code Online (Sandbox Code Playgroud)

将使 C 上的 Web 服务器可通过 A 上的 localhost:8888 进行访问

应OP要求提供更多详细信息:

我从你的问题假设你想访问A上C的网络服务器(我猜你在A上有一个GUI环境,带有网络浏览器)。

您无法直接访问 C(无论出于何种原因),但您可以访问 B,B 又可以访问 C。因此,我们在 A 和 B 之间创建一条隧道,要求 B 将其隧道末端连接到 C 上的 Web 服务器