我想用自由和开放源码软件解决方案取代TeamViewer。我需要支持一些远程计算机。我在两台计算机之间设置了一个运行中的SSH隧道,使用这样的中间人服务器:
Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop这条SSH隧道现在可以用了。
接下来,我想使用SSH隧道从"Kubuntu_desktop“连接到"Kubuntu_laptop”上的桌面。
关于这一专家组的连接:
Debian_Server<--nat_fw<--Kubuntu_desktop这是如何建立的:
autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22我无法更改现有的监视端口(5234)或远程(- R)端口号(本例中为1234)。vnc隧道可以通过这个现有的SSH连接吗?更新:答案是no;我需要设置一个新的SSH隧道,以便与vnc一起使用。
关于这一专家组的连接:
Kubuntu_laptop--->nat_fw--->Debian_Server我可以使用任何所需的SSH参数。
我不能打开路由器/防火墙上的任何端口。
x11vnc服务器是推荐给我的,所以我正在用它进行测试。它运行在桌面上,监听端口5900。但是,在启动x11vnc时,我没有使用任何命令行选项,因此它可能还没有正确配置。
vnc会在这个现有的SSH连接上工作吗?注意,没有定义端口5900。请注意,正如我前面提到的,我不能更改-R选项的端口号。
我有很多关于如何工作的问题,但是其中一个问题是vnc能否监听现有端口(在上面的例子中是-R 1234 )。如果是的话,我还能像现在一样放进那个盒子里吗?
在远程桌面上(安装了x11vnc服务器):
tester@Kubuntu_desktop:~> autossh -M 5234 -i ~/.ssh/my_id_rsa -fNR 1234:localhost:5901 user@mydebian.com确保x11vnc服务器在端口5901上运行:
tester@Kubuntu_desktop:~> x11vnc -autoport 5901在我的笔记本电脑上:
sudo ssh -NL 5901:localhost:1234 -i ~/.ssh/admin_id_rsa admin@mydebian.com将本地vnc客户端连接到本地主机端口5901
在Kubuntu_laptop中打开KRDC并连接到(vnc)
localhost:5901我得到一个失败的连接- server not found。
发布于 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连接,以包括
-fNR [remoteIP:]remotePort:localIP:localPort例如:
-fNR 1234:localhost:5900在服务器的本地主机上发送到端口1234的所有通信现在将被传送到桌面,并到达端口5900,VNC服务器希望在那里监听。
更改端口5900以适合您正在使用的协议。RDP可能是3389,VNC可能是5901,因为5900可能正在使用。此外,我只是随机选择端口1234在服务器上使用。
*回应你最新问题的一些注释:
-p 22是多余的,因为它覆盖默认端口并将其设置为22。localPort:remoteIP:remotePort的设置与ssh用于隧道的端口无关,这个端口仍然是22,除非您在客户机上用-p覆盖它,并覆盖ssh服务器上的端口。所以前面提到的所有ssh命令都使用端口22,您可以通过查看侦听和建立的网络连接来确认这一点。您不需要在防火墙上打开任何其他端口。以前的命令是正确的。autossh -M 5234 -fNR 1234:localhost:5900 user@mydebian.com。发布于 2018-04-25 20:06:13
我验证了所描述的机制,并为我工作。唯一的区别是,我使用127.0.0.1::PORT作为VNC客户端参数,因为:N引用X窗口显示号N;要使用显式端口,必须将双冒号作为分隔符。
https://unix.stackexchange.com/questions/82255
复制相似问题