我有一台位于网络A上的Windows PC和一台位于网络B上的Windows PC.同样在网络B中我有几台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,通过连接到网络B上的Linux主机,创建一个类似Putty的reverse ssh tunnel.本地端口应为3389,远程主机127.0.0.1,端口是任意的(让我们使用6000作为一个例子).然后从网络B上的PC上,使用putty连接到同一个Linux主机,并进行前向隧道.本地端口应设置为不是3389(因为microsoft RDP客户端不允许连接到localhost,但它允许连接到任意端口上的localhost).因此,让我们重用相同的端口号6000,远程ip应该是127.0.0.1和远程端口6000.然后将RDP客户端指向127.0.0.1:6000.
实际上,您连接到网络B中PC上的端口6000.Putty将其转发到Linux主机,该主机已设置为在端口6000上将其转发到127.0.0.1.来自网络A上的PC的putty连接侦听6000和前向它在PC A上的127.0.0.1到端口3389,然后RDP接受连接.
解决方案2:在网络B上的PC上设置SSHD,然后您只需要向前执行一个反向端口.有一个在Windows上运行的Bitvise SSHD,可以免费用于非商业用途. Bitvise还做一个单独的客户端,与WinSSHD一起处理RDP隧道.这个解决方案的优点在于它可以保存用户名,设置(如全屏等),并且可以从保存文件启动,并且可以阻止您在使用RDP之前设置/记住连接端口.来源:https://www.icode9.com/content-3-385051.html