我有一台位于网络 A 上的 Windows PC 和一台位于网络 B 上的 Windows PC。此外,在网络 BI 中还有几台 Linux 服务器。从网络 A 上的 PC,我可以 ssh 到网络 B 上的任何服务器。但是,我无法从网络 B 上的计算机连接到网络 A 上的 PC。
Windows PC Local
__ _
can ssh [__]|=|
.-,( ),-. ---------> .-,( ),-. /::/|_|
.-( )-. .-( )-.
( Network A ) ( Network B )
'-( ).-' '-( ).-'
'-.( ).-' <--------- '-.( ).-'
can't ssh Linux Server #1
Windows PC Remote __ _
__ _ [_Linux Server #2
[__]|=| /: __ _
/::/|_| [__]|=|
/::/|_|
我希望能够从我的网络 B PC 通过 RDP 到我的网络 A PC。是否可以使用某种通过 Linux 机器的反向隧道来实现这一点?
答案1
解决方案一:从网络 A 上的 PC 创建一个反向 SSH 隧道与类似的东西油灰通过连接到网络 B 上的 Linux 主机。本地端口应该是3389
,远程主机127.0.0.1
和端口是任意的(让我们使用6000
作为示例)。然后从网络 B 上的 PC,使用 putty 连接到同一台 Linux 主机,并执行转发隧道。本地端口应设置为其他端口3389
(因为 Microsoft RDP 客户端不允许连接到本地主机,但它将要允许在任意端口上连接到本地主机)。因此,让我们重复使用相同的端口号6000
,远程 IP 应该是127.0.0.1
远程端口6000
。然后将 RDP 客户端指向127.0.0.1:6000
。
实际上,您连接到6000
网络 B 中 PC 上的端口。Putty 将其转发到 Linux 主机,该主机已设置为转发到127.0.0.1
端口6000
。来自网络 A 上的 PC 的 putty 连接侦听6000
并将其转发到127.0.0.1
PC A 上的端口3389
,然后 RDP 接受该连接。
解决方案2:在网络 B 上的 PC 上设置 SSHD,然后只需执行单个反向端口转发。有Bitvise 固态混合硬盘它在 Windows 上运行,并且免费供非商业用途。 Bitvise 还制作了一个单独的客户端,与 WinSSHD 一起处理 RDP 隧道。这个解决方案的好处是保存用户名、设置(如全屏等),并且可以从保存文件启动,并且将阻止您在使用 RDP 之前设置/记住连接端口转发。