当我在网络 B 上的 Windows 笔记本电脑上时,我想使用 RDP 连接到网络 A 上的 Windows 机器。
在网络 A 中,我得到了:Windows 机器(我的目标)和装有 Ubuntu 的 Linux Box。这里没有人有公共 IP。
在互联网上,我获得了一个具有公共 IP 的 Linux 服务器(Ubuntu 服务器),然后在网络 B 上获得了我的笔记本。
网络 A 和 B 都可以通过 SSH 访问 Linux 服务器。
在 Windows 上,我使用 MobaXTerm 和 putty 来 ssh Linux。我不想在 Windows 机器 (A) 上安装任何东西(如果可能的话),但我可以在笔记本上安装我想要的所有东西。
我无法在 Linux 服务器上修改 IPTables(我不知道是否需要)。
我怎样才能实现这个目标?
为了更清楚起见,我认为的模式是:
SSH (public ip) Reverse SSH ?
Win Notebook ----------- Linux Server ------------- Linux BOX ----- Windows PC
("N") Internet ("S") Internet ("L") LAN ("P")
谢谢你!
答案1
因此,我认为更完整的答案需要使用 ssh 命令来设置 RemoteForward(从 Linux Box“L”到“Linux Server“S”)和 LocalForward(从 Notebook“N”到 Linux Server“S”),并且还假设 Linux Box“L”和 Windows PC“P”之间没有防火墙或过滤。考虑到所有这些,以下应该有效:
在 Linux Box “L” 上:
ssh -R4489:windows-pc:3389 linux-server
... 在 Linux 服务器“S”上设置一个端口,将端口 4489 上接收的所有流量转发到 Windows PC 的端口 3389(默认 RDP 端口)。
然后,在 Windows Notebook“N”上:
ssh -L5589:localhost:4489 linux-server
... 在您的笔记本电脑上设置端口 5589,将所有流量转发到 Linux 服务器端口 4489。
该链现已设置,您可以通过 RDP 客户端连接,方法是指定主机和端口:
localhost:5589
您可以使用任何您想要的端口,但为了提高清晰度,我将它们做成了不同的端口。您必须将适当的选项转换为笔记本电脑上的 Putty 配置。
答案2
假设您的 Linux 服务器可以从两台 Windows 计算机访问,您可以:
- 在 Windows PC 上启用 RDP 服务器
- 使用 putty 通过选项 -L 3389:ip-of-the-winwdows-pc:3389 ssh 进入 Linux 服务器(为了使其正常工作,应在笔记本电脑上禁用 RDP 服务器,否则会发生冲突)
- 在 Windows 笔记本上启动 RDP 客户端(远程连接),使用 127.0.0.1 作为“远程”地址
答案3
如果您需要使用 MobaXterm 通过 2 个 SSH 跳转主机连接到远程 PC,则可以使用以下教程:http://blog.mobatek.net/post/ssh-tunnels-and-port-forwarding/#how-to-reach-my-server-behind-multiple-jump-hosts
主要思想是创建 2 条隧道: - 第 1 条隧道从“N”到“L”,穿过“S” - 第 2 条隧道从“N”到“P”,穿过第 1 条隧道