You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助云实例通过反向SSH实现工作机与本地机的VNC桌面共享?

如何借助云实例通过反向SSH实现工作机与本地机的VNC桌面共享?

我来帮你梳理下当前的问题并给出可行的解决方案,你遇到的核心问题是VNC服务的监听范围限制和端口转发链路没完全打通,咱们一步步来调整:

第一步:修改工作机的VNC配置,解除本地监听限制

你当前的~/.vnc/config里有localhost这一行,这会让VNC服务只接受工作机本地的连接请求,反向SSH过来的隧道连接会被直接拒绝。

  1. 编辑VNC配置文件:
    nano ~/.vnc/config
    
  2. 把localhost这一行注释掉(加#前缀)或者直接删除,修改后的配置大概是这样:
    session=Ubuntu
    geometry=1920x1080
    dpi=96
    # localhost
    
  3. 重启VNC服务(先杀掉现有进程再重启):
    vncserver -kill :2
    vncserver :2
    

第二步:完善工作机到云实例的反向SSH隧道

你之前只转发了SSH的22端口到云实例的7000端口,现在需要把VNC服务对应的端口也一起转发过去(VNC的显示号:2对应端口5902,规则是5900 + 显示号)。

在工作机上执行这条命令建立反向隧道:

ssh -R 7000:localhost:22 -R 5902:localhost:5902 user@gcloud.instance.ip.address
  • -R 7000:localhost:22:把云实例的7000端口映射到工作机的22端口(用于SSH回连)
  • -R 5902:localhost:5902:把云实例的5902端口映射到工作机的VNC服务端口(:2)

如果担心连接不稳定,可以用autossh来自动重连(先在工作机安装autossh:sudo apt install autossh):

autossh -M 20000 -R 7000:localhost:22 -R 5902:localhost:5902 user@gcloud.instance.ip.address

-M 20000是用于监控连接状态的端口,只要这个端口能正常通信,autossh就会自动维持隧道。

第三步:从本地机建立到云实例的端口转发

现在云实例的5902端口已经对应工作机的VNC服务了,你需要从本地机把这个端口转发到自己的本地环境:

在本地机上执行:

ssh -L 5902:localhost:5902 user@gcloud.instance.ip.address

这条命令会把本地机的5902端口映射到云实例的5902端口,也就是最终指向工作机的VNC服务。

第四步:连接VNC桌面

打开你本地的VNC Viewer(Remmina或者TigerVNC都可以),直接连接:

localhost:5902

或者用显示号的写法:

localhost:2

输入你工作机VNC服务的密码,就能正常访问工作机的桌面了。

额外说明

  • 云实例完全不需要安装桌面环境,所有转发都是通过SSH隧道完成的,保持云实例只运行SSH服务更轻量、更安全。
  • 如果你之前在云实例的桌面里尝试连接localhost:2,那其实是在连云实例自己的VNC服务,不是工作机的,所以会黑屏,按照上面的步骤走就没问题了。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:23:09