如何在 VPS 上创建 SSH 隧道,以便通过 RDP 连接到受限制 ISP 后面的 Windows 主机

如何在 VPS 上创建 SSH 隧道,以便通过 RDP 连接到受限制 ISP 后面的 Windows 主机

我花了好几次时间试图弄清楚这一点,并尝试关注许多其他帖子。但出于某种原因,这让我感到困惑,而且其他情况似乎都不适用。

我想做的事:

注意:这些机器都不在同一个局域网上。

工作站 A - 互联网上某处/任何地方的 Linux 机器

服务器 - 互联网上的 Linux 虚拟专用服务器互联网 IP 地址 1.2.3.4

工作站 B - 我家用的 Windows 机器运行 RDP Internet IP 地址 5.6.7.8 NAT IP 地址 192.168.10.51

我希望 Linux 服务器充当 SSH“网关”,以便我可以通过 RDP 从工作站 A 连接到工作站 B

工作站 B 位于受限制的 ISP 上,它无法运行 sshd,但可以使用 SSH 客户端(如 Putty)连接到服务器。

这是我最近的努力:

因此从工作站 B 来看:

Using Putty:  Host Name ( Ip Address ) 1.2.3.4
              Port                     22

              SSH Tunnel Source Port   3389
                         Local Port    localhost:3389

(已更新)选中“本地端口接受来自其他主机的连接”未选中“远程主机执行相同操作”在目标下选择“本地”和“自动”

然后在服务器上:

ssh -p 33890 -L 9833:192.168.10.51:3389 [email protected]

然后在工作站 A 上:

rdesktop 1.2.3.4:33890

我尝试了很多种方法,但我甚至不确定我是否正确理解了整个 ssh 隧道。

另外,我特别需要 SSH 隧道,但无法在 Worstation B 上安装 sshd。我实际上知道如何设置 PPTPD、IPsec 和其他,但这些在这里不起作用。因此,如果您有其他解决方案,则不适用。我只是想知道我的方案是否可以实现(因为我很困惑)以及我可能做错了什么。

抱歉,如果内容很长,我们会尽量避免含糊其辞。

我看了这篇帖子:[how-to-tunnel-windows-remote-desktop-through-ssh-using-a-linux-box][1] 它非常接近我的情况,但是 linux 机器不在我的本地网络上。

答案1

在 A 上,你可以运行例如

ssh -L 33890:192.168.10.51:3389 1.2.3.4

这将通过 ssh 连接到 1.2.3.4,并打开从 A 上的 33890 端口到 B 上的 3389 端口的隧道。因此,您可以在 A 上运行

rdesktop localhost:33890

连接到 B 上的 RDP。

A 和服务器之间的连接是加密的,但服务器和 B 之间的连接不是加密的(在您的 LAN 内)。如果您也想加密该部分,则让 B 连接到服务器并将服务器的端口转发到 B 上的 RDP 端口。在 B 上运行:

ssh -R 33891:localhost:3389 1.2.3.4

然后在 A:

ssh -L 33890:localhost:33891 1.2.3.4

(您可以用服务器上的任何可用端口替换 33891。)然后在 A 上您可以rdesktop localhost:33890像以前一样进行连接。

这种方法的缺点是它依赖于 B 到服务器的连接保持畅通,但这些连接通常会在一段时间后超时。您可以尝试通过设置ServerAliveIntervalB 到服务器的连接来调整它,或者使用自动SSH当隧道发生故障时自动重新启动隧道。

相关内容