远程支持:通过 ssh 隧道路由 RDP?

远程支持:通过 ssh 隧道路由 RDP?

我想用 FOSS 解决方案替换 TeamViewer。我需要支持一些远程计算机。我使用中间人服务器在两台计算机之间设置了一个工作 SSH 隧道,如下所示:

Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop

此 SSH 隧道现在正在运行。

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

关于该腿的连接:

Debian_Server<--nat_fw<--Kubuntu_desktop

它的建立方式如下:

autossh -M 5234 -N -f -R 1234:localhost:22 [email protected] -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)。如果是这样,我还能像现在一样通过 ssh 进入那个盒子吗?

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

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

tester@Kubuntu_desktop:~> autossh -M 5234 -i ~/.ssh/my_id_rsa -fNR 1234:localhost:5901 [email protected]

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

tester@Kubuntu_desktop:~> x11vnc -autoport 5901

在我的笔记本电脑上:

sudo ssh -NL 5901:localhost:1234 -i ~/.ssh/admin_id_rsa [email protected]

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

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

localhost:5901

我的连接失败- server not found

答案1

听起来您当前在笔记本电脑和服务器之间有默认的 ssh 连接:

Kubuntu_laptop--->nat_fw--->Debian_Server

修改ssh连接的参数,这样就可以了

-fNL [localIP:]localPort:remoteIP:remotePort

例如:

-fNL 5900:localhost:1234

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

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

Debian_Server<--nat_fw<--Kubuntu_desktop

修改桌面ssh连接的参数包括

-fNR [remoteIP:]remotePort:localIP:localPort

例如:

-fNR 1234:localhost:5900

发送到服务器本地主机上端口 1234 的所有流量现在都将传输到桌面并到达 VNC 服务器希望侦听的端口 5900。

将端口 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 [email protected]
  4. 抱歉,对于 VNC 客户端,我没有任何建议。您必须为此提出一个单独的问题,但是我猜它会被否决,因为这是一个意见问题。

答案2

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

相关内容