三台机器之间的 SSH 隧道

三台机器之间的 SSH 隧道

我遇到过这样的情况:A 可以通过 SSH 访问 B(B 无法访问 A,因为 nat),A 可以通过 SSH 访问 C(C 无法访问 A,因为 nat),B 和 C 无法互相访​​问,因为它们位于不同的网络中。

A->B,A->C,C->B?我的问题是如何设置隧道或命令让 C 可以访问 B?

答案1

要建立从 B 到 C 的 ssh 隧道,请在主机 A 上运行以下命令:

ssh -n -R 3300:localhost:3300 B sleep 999999999 &
ssh -n -L 3300:localhost:22 C sleep 999999999 &

用适当的主机名替换 B 和 C。

现在您可以在 B 上

ssh -p 3300 localhost

并连接到主机 C。当您想要拆除隧道时,在主机 A 上将 ssh 命令从后台调出并输入Ctrl-C

答案2

与此问题密切相关的变体是,B 和 C 都无法访问,但都可以访问 A。目标是允许 C 访问 B。

即 B -> A,C -> A,C -> B?

来自B

ssh -n A -R 9007:localhost:22 sleep 999999999 &

来自C

ssh -n A -L 9008:localhost:9007 sleep 999999999 &

来自C

ssh -p 9008 localhost

答案3

听起来您需要研究“端口转发”或甚至可能允许 DNZ。这样,您的 LAN 之外的任何人都必须知道您的公共 IP 是什么。以及您的 VPN 服务器/客户端所连接的端口号。(我假设您正在尝试使用 PPTP“隧道”与 VPN 结合使用,而不是尝试运行 Web 服务器或类似的东西。)

否则,如果所有这些都发生在同一个 LAN 上,那么可能是防火墙问题(我首先怀疑)、DNS 问题,甚至可能是 DHCP 问题。更奇怪的是,也可能是交换机故障。但我非常怀疑您自己的 LAN 中存在 NAT(网络地址转换)问题。

相关内容