通过中间 Linux 服务器通过 SSH 隧道实现 RDP

通过中间 Linux 服务器通过 SSH 隧道实现 RDP

当我在网络 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 条隧道

相关内容