首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程支持:在ssh隧道上路由RDP?

远程支持:在ssh隧道上路由RDP?
EN

Unix & Linux用户
提问于 2013-07-08 22:16:05
回答 2查看 1.6K关注 0票数 1

我想用自由和开放源码软件解决方案取代TeamViewer。我需要支持一些远程计算机。我在两台计算机之间设置了一个运行中的SSH隧道,使用这样的中间人服务器:

代码语言:javascript
复制
Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop

这条SSH隧道现在可以用了。

接下来,我想使用SSH隧道从"Kubuntu_desktop“连接到"Kubuntu_laptop”上的桌面。

关于这一专家组的连接:

代码语言:javascript
复制
Debian_Server<--nat_fw<--Kubuntu_desktop

这是如何建立的:

代码语言:javascript
复制
autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22

我无法更改现有的监视端口(5234)或远程(- R)端口号(本例中为1234)。vnc隧道可以通过这个现有的SSH连接吗?更新:答案是no;我需要设置一个新的SSH隧道,以便与vnc一起使用。

关于这一专家组的连接:

代码语言:javascript
复制
Kubuntu_laptop--->nat_fw--->Debian_Server

我可以使用任何所需的SSH参数。

我不能打开路由器/防火墙上的任何端口。

x11vnc服务器是推荐给我的,所以我正在用它进行测试。它运行在桌面上,监听端口5900。但是,在启动x11vnc时,我没有使用任何命令行选项,因此它可能还没有正确配置。

vnc会在这个现有的SSH连接上工作吗?注意,没有定义端口5900。请注意,正如我前面提到的,我不能更改-R选项的端口号。

我有很多关于如何工作的问题,但是其中一个问题是vnc能否监听现有端口(在上面的例子中是-R 1234 )。如果是的话,我还能像现在一样放进那个盒子里吗?

,这是我迄今为止尝试过的:

在远程桌面上(安装了x11vnc服务器):

代码语言:javascript
复制
tester@Kubuntu_desktop:~> autossh -M 5234 -i ~/.ssh/my_id_rsa -fNR 1234:localhost:5901 user@mydebian.com

确保x11vnc服务器在端口5901上运行:

代码语言:javascript
复制
tester@Kubuntu_desktop:~> x11vnc -autoport 5901

在我的笔记本电脑上:

代码语言:javascript
复制
sudo ssh -NL 5901:localhost:1234 -i ~/.ssh/admin_id_rsa admin@mydebian.com

将本地vnc客户端连接到本地主机端口5901

在Kubuntu_laptop中打开KRDC并连接到(vnc)

代码语言:javascript
复制
localhost:5901

我得到一个失败的连接- server not found

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2013-07-08 23:37:27

听起来,您当前在膝上型计算机和服务器之间有一个默认的ssh连接:

Kubuntu_膝上型电脑-->nat_fw-->Debian_Server

将参数修改为ssh连接,这样您就有了

-fNL [localIP:]localPort:remoteIP:remotePort

例如:

-fNL 5900:localhost:1234

如果您的笔记本电脑在默认端口5900上使用VNC,那么您将告诉您的笔记本电脑到vnc的本地主机,然后本地主机将端口5900上的VNC流量发送到端口1234上的服务器。

接下来,您需要捕获到达端口1234服务器端的通信量,并将其转发到桌面:

Debian_Server<-nat_fw<--Kubuntu_桌面

将参数修改为桌面ssh连接,以包括

代码语言:javascript
复制
-fNR [remoteIP:]remotePort:localIP:localPort

例如:

代码语言:javascript
复制
-fNR 1234:localhost:5900

在服务器的本地主机上发送到端口1234的所有通信现在将被传送到桌面,并到达端口5900,VNC服务器希望在那里监听。

更改端口5900以适合您正在使用的协议。RDP可能是3389,VNC可能是5901,因为5900可能正在使用。此外,我只是随机选择端口1234在服务器上使用。

*回应你最新问题的一些注释:

  1. ssh的默认端口为22,因此-p 22是多余的,因为它覆盖默认端口并将其设置为22。
  2. 看起来像localPort:remoteIP:remotePort的设置与ssh用于隧道的端口无关,这个端口仍然是22,除非您在客户机上用-p覆盖它,并覆盖ssh服务器上的端口。所以前面提到的所有ssh命令都使用端口22,您可以通过查看侦听和建立的网络连接来确认这一点。您不需要在防火墙上打开任何其他端口。以前的命令是正确的。
  3. 根据您在更新中添加的内容,桌面的命令应该是autossh -M 5234 -fNR 1234:localhost:5900 user@mydebian.com
  4. 对不起,对于VNC客户端,我没有任何建议。你将不得不打开一个单独的问题,但我猜它将被否决-因为这是一个意见问题。
票数 1
EN

Unix & Linux用户

发布于 2018-04-25 20:06:13

我验证了所描述的机制,并为我工作。唯一的区别是,我使用127.0.0.1::PORT作为VNC客户端参数,因为:N引用X窗口显示号N;要使用显式端口,必须将双冒号作为分隔符。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/82255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档