通过中介服务器的远程桌面的SSH隧道

我在网上看到很多SSH隧道的例子,但是我仍然没有运气。 这是设置:

  1. Windows 7个人电脑在一个私人networking,坐在防火墙后面,PowerShellInsider SSH服务器设置和工作正常。
  2. 公共访问Linux服务器,可以访问PC。
  3. Windows 7笔记本电脑,在家里,我希望在PC上做远程桌面

现在,这是我迄今为止所尝试的:

  1. 从笔记本电脑到Linux服务器的SSH隧道:ssh -f my_user @ LINUX_SERVER -L 6666:LINUX_SERVER_IP:6666-N
  2. SSH到我build立到PC的隧道的Linux服务器:ssh -f'PRIVATE_DOMAIN \ my_user'@PC_NAME -L 6666:PC_IP:3389-N

不幸的是,我一定是做错了,因为它似乎没有工作。 任何想法为什么,或者至less,我怎样才能尝试debugging这个设置的任何build议? 目前,我可以访问所有3台机器(Linux上的非root),所以我可以testing任何我想要的…

当我遇到一个非常类似的问题时(这是我的Linux通过Linux,我使用VNC端口5901):

首先,我们使得笔记本电脑上的所有到localhost:13389连接都将转到中间服务器(在端口3389上):

laptop$ ssh -L 13389:localhost:3389 my_user@LINUX_SERVER_IP

然后,我们把所有与中间服务器上的localhost:3389连接都转发到防火墙后面的PC(在端口3389上):

my_user@LINUX_SERVER_IP$ ssh -L 3389:localhost:3389 'PRIVATE_DOMAIN\my_user'@PC_NAME

(请注意,该命令在中间服务器上的交互式shell中运行。)

现在,您应该能够连接到localhost:13389和远程PC上的访问端口3389。

debugging

由于它不工作,我们可以尝试一些事情。 我们将以某种方式来隔离问题的出处:

  1. 在你想访问的远程PC上,你可以telnet localhost 3389来确保它已经打开并准备好连接了吗? 微软有一个很好的文章
  2. 如果是这样的话,你可以尝试在中间服务器上执行telnet localhost 3389来检查它是否正确转发到远程PC?
  3. 最后,在你的笔记本电脑上, telnet localhost 13389 ,看看它是否一直转发。

只要你遇到一个错误停在那里,请添加评论,所以我们搞清楚了。

我认为你的使用ssh命令时使用了错误的语法。

既然你在Windows 7机器上运行PowerShellInsider SSH服务器,我假设你想要通过隧道到达SSH服务器,对不对?

无论如何,假设SSH服务器在标准端口上运行,在家用计算机上运行的命令应该是这样的:

 $ ssh -N -L 22222:ip-address-windows7-at-work:22 user@linux-server 

然后,使用本地套接字(22222)ssh到远程Windows 7中:

 $ ssh localhost:22222 

如果您尝试隧道远程桌面协议,则只需更改“正确的”端口号即可:

 $ ssh -N -L 22222:ip_address_windows7_work:3389 user@linux-server