通过SSH反向隧道的远程桌面以替换TeamViewer


14

我想通过SSH(反向)隧道打开从笔记本电脑到桌面的远程桌面会话。那应该很简单(或至少可行),对吗?到目前为止,我一直在使用Team Viewer登录到远程桌面。我希望在没有Team Viewer的情况下获得类似的结果。

这是我的SSH隧道的样子:

laptop--->nat--->middleman<--nat<--desktop

所有机器都运行Linux(主要是Kubuntu 12.04或OpenSuse 12.3)。我不能在nat路由器上更改任何端口或进行任何配置更改。

我将描述我的SSH隧道,因为理解这对于解决VNC /远程桌面问题(这是我的问题的核心)似乎是必要的。关于这条腿:

middleman<--nat<--desktop

...它是如何建立的:

autossh -M 5234 -N -f -R 1234:localhost:22 user@middleman.com

关于这条腿:

laptop--->nat--->middleman

我可以按以下方式连接到中间人:

me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman  

但是,我真正需要做的是直接连接到桌面,而不是中间人。为此,我在中间人上使用netcat(“ nc”)。基于,似乎需要nc。所以我在笔记本电脑上编辑SSH配置文件以使用ProxyCommand和nc:

me@laptop:~/.ssh$ nano config

内容是:

Host family_desktops
  ProxyCommand ssh middleman_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

哪里middleman_fqdn像“ middleman.com”

然后,我只需一步就可以连接到“桌面”:

me@laptop:~$ ssh family_desktops -p 1234

(我是根据这里这里的帮助以及我所问的其他相关问题来进行这项工作的。由于这个问题我已经花了很多周时间了,所以我就这个话题问了很多问题。)

通过这种SSH连接,我可以在计算机上看到一个功能完备的Shell,标记为desktop。完善。

现在,我只需要在此SSH隧道上使用类似于VNC(或类似TeamViewer)的远程桌面解决方案。怎么样?

到目前为止,这是我尝试过的:

中间人<-nat <-桌面

autossh -M 5235 -N -f -R 1235:localhost:5901 user@middleman.com

建立了连接:

x11vnc -autoport 5901 

我注意确保它已连接到端口5901。

笔记本电脑-> nat --->中间人<-nat <-桌面

笔记本电脑〜/ .ssh / config:

Host family_desktops
  ProxyCommand ssh -NL 5901:localhost:1235 middleman.com nc localhost 1235
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

隧道设置:

me@laptop:~$ sudo ssh family_desktops

VNC客户端:

connect to localhost:5901

这给出了“找不到服务器”的错误

我在ProxyCommand上尝试了多种变体,但都没有成功。显然,我正在猜测哪些参数应该在ProxyCommand中,哪些应该在ssh命令行中。我可以看到我的安装程序有一些潜在的问题,但是我仍然无法弄清楚什么会使它全部正常工作。

PS如前所述,我已经问了几个问题。其中一些使我更接近解决方案,并构成了我当前问题的基础。我在此主题上先前提出的其他问题只是表明我的无知和无能力以正确的形式提出问题。在这一点上,这个当前问题代表了我最大的能力来陈述我的问题是什么以及我想要的解决方案是什么,但是我的其他一些问题仍然是未解决的。是相关的。


1
旁注:请不要使用“此处”“此”链接。为链接提供一个有意义的名称,例如,链接到问题或网页的标题。
Marco Marco

你没问这个问题吗?unix.stackexchange.com/questions/82255/...
SLM

@slm-请参阅我的问题中的某些链接。它们是我的一些相关问题。我仍在努力寻求解决方案,每个问题似乎都让我更加接近……
MountainX

这似乎令人费解。我通过SSH将我的Windows 8计算机的远程桌面连接到也在防火墙中打开端口的同一网络上的计算机。
蒂姆(Tim)

@Tim这是反向SSH隧道,由于desktop它位于NAT路由器之后且laptop位于NAT路由器之后,因此是必需的。
MountainX

Answers:


3

您可以不做nc而尝试执行第二步吗?也就是说-仅使用-L和-R来执行VNC。我认为问题在于您的netcat会话正在连接回已经打开的会话。因此,在执行VNC时,请勿使用netcat。


1

代替ProxyCommand,您应该为中间人sshd.conf设置“ gatewayports yes”。

  1. 然后从桌面到中间人建立远程隧道,并在中间人和本地vnc中打开tcp端口x。
  2. 然后,从笔记本电脑到中间人的本地隧道打开vnc端口到您的本地主机,并将其隧道传输到x。
  3. 然后连接到localhost:vnc,这样它将通过本地隧道到达中间人,并通过远程隧道到达笔记本电脑vnc。

在它起作用之后,进一步了解网关端口的更多安全设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.