![通过隧道进行 SSH 访问](https://linux22.com/image/1544535/%E9%80%9A%E8%BF%87%E9%9A%A7%E9%81%93%E8%BF%9B%E8%A1%8C%20SSH%20%E8%AE%BF%E9%97%AE.png)
我有以下设置,
机器 A(Windows 10 并连接到 ISP(X))和机器 B(Windows 10 并连接到 ISP(Y))。这两台机器(A 和 B)都没有任何直接连接。机器 A 可以访问机器 C(在云端运行 RHEL 的 Linux Box),同样,机器 B 也可以访问机器 C。
现在将机器 C 作为隧道,是否可以从机器 A 访问在机器 B(VirtualBox 内部)中运行的 Linux 机器?如果可以,我们如何使用 putty 做到这一点?我猜这可以通过反向 ssh 隧道实现,但不确定步骤。
编辑1:
PUBLIC IP SSH (Putty) (Machine C)
Machine A Windows 10 (192.168.1.2) --> ISP(49.xxx.xxx.xxx) ---> (34.xxx.xx.xxx)
PUBLIC IP SSH (Putty) (Machine C)
Machine B Windows 10 (192.168.1.15) --> ISP(216.xxx.xxx.xxx) --->(34.xxx.xx.xxx)
Machine B Windows 10 (192.168.1.15) --> Virtual Box (192.168.1.100)
现在我想从机器 A 访问192.168.1.100,我该如何实现这一点?只有一台机器(机器 C)可供机器 A 和机器 B 访问。有没有办法进行一些隧道和访问192.168.1.100来自机器 A?
答案1
机器 B 有一个 Linux VirtualBox 客户机。我假设您已将虚拟机的网络配置为与主机位于同一本地网络上,例如两者都位于 192.168.1.x 上。您可以设置从路由器到虚拟机的端口转发吗?
你要么对情况描述得太少,要么你有一个XY问题。
反向隧道
我们假设目标的 IP 是192.168.20.55
(您想要访问的 Linux 机器)。
您想通过 IP 从 Linux 客户端进行访问138.47.99.99
。
目的地 (192.168.20.55) <- |NAT| <- 源 ( 138.47.99.99
)
使用以下命令从目标通过 SSH 连接到源(具有公共 IP):
ssh -R 19999:本地主机:22[电子邮件保护]
注意:端口 19999 可以是任何未使用的端口。
现在您可以通过 SSH 隧道从源 SSH 到目标:
ssh 本地主机-p 19999
第三方服务器也可以
192.168.20.55
通过目标 (138.47.99.99
) 进行访问。
目的地 (192.168.20.55) <- |NAT| <- 源 (138.47.99.99) <- Bob 的服务器
来自Bob的服务器:
远程控制[电子邮件保护]
成功登录Source后:
ssh 本地主机-p 19999
注意:目的地和源之间的连接必须始终处于活动状态。
提示:您可以在目标上运行命令(例如 watch、top)以保持连接处于活动状态。