我在一台 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 服务。这还需要调整GatewayPorts
server1 上的 ssh 配置中的选项:
ssh -f -N -L server1:2222:windows:3389 server2
或者你需要再次建立隧道,直接连接到你的机器,例如从你的计算机像这样:
ssh -fNL 2222:localhost:2222 server1
然后连接到您的本地主机:2222。