公司动态

【Ubuntu 24.04或很多新版本linux中禁用Wayland以实现VNC连接】

📅 2026/8/12 16:28:45
【Ubuntu 24.04或很多新版本linux中禁用Wayland以实现VNC连接】
在Ubuntu 24.04或很多新版本linux中禁用Wayland以实现VNC连接可能有很多用户在Ubuntu或其他较新的linux发行版中有过安装 VNC的失败经历我也碰到了因为这个原因我在前段时间都放弃了升级到新版本的想法不过在AI的帮助下现在大概率是找到了主要原因分享一下希望能有帮助感谢AI。首先说一下我的问题主要是因为所选桌面GNOME的关系更准确地说是没有正确配置为VNC兼容的方式即禁用Wayland。为什么说这个失败和桌面选择也有关系呢因为GNOME也在新版本中使用Wayland作为默认管理器。 据我所知有一些桌面还在继续使用X11比如Xfce但确实有很多桌面系统都将Wayland作为默认管理器。Wayland是什么 简单地说它是和X11类似的显示窗口管理器。 目前它大有取代X服务的趋势很多Linux已经将Wayland作为默认的显示窗口服务器然而目前很多传统的VNC软件还都处在支持X服务器的阶段或许准确点说Wayland的安全机制不允许传统的VNC服务端直接抓屏和输入注入的方式。有人可能会问没有支持Wayland的VNC工具或远程工具吗 我想应该是有的我也了解到有一个叫Wayvnc的工具但这个不在这篇文章的范围内有兴趣的朋友可以自行了解。好了 正式开始。如何确认你目前的系统显示窗口管理用了哪个呢如果在目标机的桌面系统中操作那么您可以在终端直接输入echo$XDG_SESSION_TYPE输出应该能看到是X11还是Wayland如果你是通过ssh远程到目的机器上的那么可以使用下面的指令loginctl show-session$(loginctl|grep$USER|awk{print $1})-pType则应当能在输出中看到有tty,以及另外的一个输出X11或者Wayland如果您在第一步的输出中看到了Wayland那么这篇文章很可能能帮到你如果没有看到Wayland那大概率您不需要继续看了这篇文章大概率不适合您的情况禁用Wayland (关键步骤)如下指令在Ubuntu 24.04中适用其他发行版和版本可做参考。sudonano/etc/gdm3/custom.conf添加如下一行 或找到这一行取消注释[daemon]WaylandEnablefalse保存后必须重启sudoreboot重新登录用第一步中的方法确认Wayland是否已经被禁用了。loginctl show-session$(loginctl|grep$USER|awk{print $1})-pType禁用Wayland (关键步骤)安装桌面和TigerVNCsudoaptupdatesudoaptinstallubuntu-desktop tigervnc-standalone-server tigervnc-common-y验证安装vncserver--versionUbuntu 24.04 应显示 TigerVNC 1.13.x, 其他版本请自行参考。4.设置 VNC 密码vncpasswd按提示设置连接密码注意 VNC 协议只识别前 8 位字符。建议不设置 view-only 密码输入 n。5. 创建 GNOME 专用的 xstartup 脚本mkdir-p~/.vncnano~/.vnc/xstartup并写入以下内容这是 GNOME 在 VNC 下成功启动的关键#!/bin/bashunsetSESSION_MANAGERunsetDBUS_SESSION_BUS_ADDRESSexecdbus-run-session -- gnome-session赋予执行权限chmodx ~/.vnc/xstartup说明dbus-run-session – gnome-session 是 Ubuntu 24.04 下让 GNOME 在虚拟 X 会话中正确初始化的必要方式直接调用 gnome-session 通常会黑屏或闪退。启动并测试 VNC先确保没有残留会话vncserver-kill:12/dev/null;sleep1启动绑定到 localhost仅允许 SSH 隧道访问vncserver :1-geometry1920x1080-depth24-localhostyes检查是否运行vncserver-listss-tlnp|grep5901你应该看到 127.0.0.1:5901 处于监听状态。通过 SSH Tunnel Connection安全做法建立SSH隧道是在你的VNC viewer所在的机器端因为我使用的是装有Windows的PC机作为客户端使用TightVNC viewer作为VNC viewer, 结合AI推荐的方式我选择了使用windows版本的putty建立隧道连接然后通过 TightVNC viewer连接 TigerVNC server.在VNC viewer端使用 PuTTY等工具进行隧道连接配置然后保存。安装PuTTY这是 Windows 上最稳妥的方式打开 PuTTYSession 页填入服务器 IP端口 22左侧展开 Connection → SSH → TunnelsSource port 填59000Destination 填localhost:5901点击 Add回到 Session 页给会话起个名字如 vnc-tunnel点击 Save点击 Open输入用户名密码登录保持 PuTTY 窗口开着建立隧道后在 Windows的cmd窗口执行telnet localhost59000**最后在你的Windows PC端**打开 TightVNC Viewer连接 localhost:59000理论上您就可以连接上去了。localhost:59000