You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

通过Linux主机搭建SSH隧道实现两台Windows主机间的VNC连接技术求助

通过Linux主机搭建SSH隧道实现两台Windows主机间的VNC连接技术求助

嘿,我来帮你理清这个问题的解决思路——完全可以实现你想要的隧道转发!先明确下你的网络拓扑:

  • 本地Windows客户端 → 互联网 → 公网Linux服务器(IP:192.0.2.1) → 局域网 → 目标Windows VNC服务器(内网IP:192.168.1.1)

你提到不想在Windows客户端上装SSH客户端,这里分两种情况给你方案:


方案一:使用Windows内置OpenSSH客户端(无需额外安装软件)

如果你的Windows客户端是Win10/Win11,系统已经自带了OpenSSH客户端(可以在命令行输入ssh验证是否存在),这种情况不算额外安装第三方客户端,应该符合你的需求。

你只需要在Windows客户端的命令提示符(CMD)或PowerShell里执行这条命令:

ssh -L 5091:192.168.1.1:5901 your-linux-username@192.0.2.1

解释下参数:

  • -L 5091:192.168.1.1:5901:把本地Windows的5091端口,转发到Linux服务器能访问到的192.168.1.1:5901(也就是目标Windows的VNC端口,这里假设VNC用的是默认的5901端口,如果你的VNC服务器用的是其他端口,比如5902,就改成对应数字)。因为Linux和目标Windows在同一个局域网,这段通信你可以完全信任,隧道只加密Windows客户端到Linux的互联网传输部分,正好匹配你的需求。
  • your-linux-username@192.0.2.1:替换成你Linux服务器的用户名和公网IP

执行命令后输入Linux服务器的密码,保持这个命令窗口打开(不能关闭,关闭就断开隧道了)。之后你在本地Windows上打开VNC Viewer,连接localhost:5091,就能直接连到目标Windows的VNC服务器了。


方案二:完全不在Windows客户端运行SSH(仅在Linux服务器配置)

如果你完全不想在Windows客户端碰任何SSH相关操作,那可以在Linux服务器上设置反向隧道,但需要你的Windows客户端有公网IP或者能被Linux服务器访问到(如果Windows客户端在NAT后面,可能需要在路由器上做端口映射)。

在Linux服务器上执行这条命令:

ssh -R 5091:192.168.1.1:5901 your-windows-username@windows-client-public-ip

解释:

  • -R 5091:192.168.1.1:5901:把Linux服务器收到的5091端口流量,反向转发到目标Windows的VNC端口,同时映射到Windows客户端的5091端口
  • your-windows-username@windows-client-public-ip:替换成Windows客户端的用户名和公网IP(如果Windows在局域网内,需要在路由器上给Windows做端口映射,把SSH默认端口22转发到Windows的内网IP)

不过这个方案局限性比较大,因为很多家庭网络的Windows客户端没有公网IP,而且需要Windows开启SSH服务(Win10/11可以在「应用和功能」里安装OpenSSH服务器),所以更推荐方案一。


另外提醒下:

  • 确保Linux服务器的SSH服务处于运行状态(可以用systemctl status sshd检查)
  • 目标Windows的VNC服务器已经开启,并且允许Linux服务器所在的局域网IP访问
  • 如果Linux服务器的防火墙开启了,要确保SSH默认端口22对外开放,方案二还需要放行5091端口

备注:内容来源于stack exchange,提问作者lewiswalsh

火山引擎 最新活动