我想通过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如前所述,我已经问了几个问题。其中一些使我更接近解决方案,并构成了我当前问题的基础。我在此主题上先前提出的其他问题只是表明我的无知和无能力以正确的形式提出问题。在这一点上,这个当前问题代表了我最大的能力来陈述我的问题是什么以及我想要的解决方案是什么,但是我的其他一些问题仍然是未解决的。这是相关的。
desktop
它位于NAT路由器之后且laptop
位于NAT路由器之后,因此是必需的。