通过 ssh 隧道链从 Linux 进行 RDP

通过 ssh 隧道链从 Linux 进行 RDP

我在一台 Linux 笔记本电脑上尝试访问位于两台 (!) Linux 服务器(server1、server2)后面的 Windows 工作站,其中只有 server1 可以从外部访问,只有 server2 可以访问工作站:

Linux -> server1 -> server2 -> windows:3389

我正在尝试建立与 Windows 机器的远程桌面连接。

我设法通过在笔记本电脑上运行以下命令建立了可以将 ssh 转发到服务器 2 的隧道:

ssh -f -N -L 2001:server2:22 server1

连接方式:

ssh -p2001 localhost

因此,这将创建一个从我的本地端口 2001 通过服务器 1 到服务器 2:22 的隧道。我还设法通过它运行 sftp,这样我就可以直接从文件管理器窗口访问服务器 2 上的数据,而不是使用控制台

sftp://localhost:2001

在地址行中。

太好了,现在进入下一个阶段。我在 server1 上运行:

ssh -f -N -L 2222:windows:3389 server2

这应该将 Server1 上的端口 2222 连接到工作站上的 RDP 端口。现在,我是否应该能够将我的 RDP 软件(我尝试了 Remmima 和 KRDC)直接指向 Server1:2222,然后就完成了?不幸的是,这没有任何作用(连接超时)。Remmina 有隧道选项,但我完全搞不清楚他们是否能在这种情况下帮助我。

那么:我错在哪里了?

答案1

现在,我是否应该不能直接将我的 RDP 软件(我尝试了 Remmima 和 KRDC)指向 Server1:2222

不,ssh 默认将端口转发绑定到本地主机接口,因此该端口无法“从外部”访问。

您需要绑定外部接口,这将使所有看到 server1 的人都可以访问您的内部 Windows 服务。这还需要调整GatewayPortsserver1 上的 ssh 配置中的选项:

ssh -f -N -L server1:2222:windows:3389 server2

或者你需要再次建立隧道,直接连接到你的机器,例如从你的计算机像这样:

ssh -fNL 2222:localhost:2222 server1

然后连接到您的本地主机:2222。

相关内容