我有 3 台以链形式连接起来的机器,A、B、C。
A-->B-->C
A 是我的计算机,B 是服务器,C 是另一台计算机,上面有一些服务和 Web 服务器。由于一些问题,我需要从 A 访问 C 上的 Web 服务器(端口 80),我可以使用 ssh 从 A 登录到 B,然后从 B 登录到 C,但此时控制台太少了。我需要 Web 浏览器,使用带选项的 ssh-X
不起作用(Firefox 启动时 dbus 出现一些问题)。
我使用经典命令在 B 上进行端口转发,为 ssh 转发 22 端口:
ssh -L 2222:localhostB:22 user@ipC
但使用相同的方法转发端口 80 不起作用:
ssh -L 8888:localhostB:80 user@ipC
我知道还有一些其他的转发可以使其工作,但我不知道如何以及做什么。
我需要这样的东西:
A --> B (frd from B:8888 to C:80) --> C (port 80 web server)
因此当我输入 ipB:8888 时,我将被转发到 C:80。
任何帮助,如解释必须做什么,或带有命令的脚本,都将不胜感激。我从一篇博客中注意到,必须转发两次才能ssh -L
完成,但我不明白为什么。
答案1
你走在正确的道路上。
在 A:
ssh -L 8888:ipC:80 user@ipB -N
将使 C 上的 Web 服务器可以通过 A 上的 localhost:8888 访问
应原始发帖者的要求,提供更多细节:
我从你的问题中假设你想要访问 A 上 C 的网络服务器(我猜你在 A 上有一个 GUI 环境,带有网络浏览器)。
你不能直接访问 C(无论出于什么原因),但你可以访问 B,反过来 B 又可以访问 C。因此,我们在 A 和 B 之间创建一个隧道,要求 B 将隧道的一端连接到 C 上的 Web 服务器