当前位置: 首页 > news >正文

【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的工具,但这个不在这篇文章的范围内,有兴趣的朋友可以自行了解。

好了, 正式开始。

  1. 如何确认你目前的系统显示窗口管理用了哪个呢?
  • 如果在目标机的桌面系统中操作,那么您可以在终端直接输入
echo$XDG_SESSION_TYPE

输出应该能看到是X11还是Wayland

  • 如果你是通过ssh远程到目的机器上的,那么可以使用下面的指令
loginctl show-session$(loginctl|grep"$USER"|awk'{print $1}')-pType

则应当能在输出中看到有tty,以及另外的一个输出,X11或者Wayland

如果您在第一步的输出中,看到了Wayland,那么这篇文章很可能能帮到你,如果没有看到Wayland,那大概率您不需要继续看了,这篇文章大概率不适合您的情况

  1. 禁用Wayland (关键步骤)
    如下指令在Ubuntu 24.04中适用,其他发行版和版本可做参考。
sudonano/etc/gdm3/custom.conf

添加如下一行, 或找到这一行取消注释

[daemon]WaylandEnable=false

保存后,必须重启

sudoreboot

重新登录,用第一步中的方法确认Wayland是否已经被禁用了。

loginctl show-session$(loginctl|grep"$USER"|awk'{print $1}')-pType
  1. 禁用Wayland (关键步骤)
    安装桌面和TigerVNC
sudoaptupdatesudoaptinstallubuntu-desktop tigervnc-standalone-server tigervnc-common-y

验证安装:

vncserver--version

Ubuntu 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

赋予执行权限:

chmod+x ~/.vnc/xstartup

说明:dbus-run-session – gnome-session 是 Ubuntu 24.04 下让 GNOME 在虚拟 X 会话中正确初始化的必要方式,直接调用 gnome-session 通常会黑屏或闪退。

  1. 启动并测试 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 上最稳妥的方式:
  • 打开 PuTTY
  • Session 页:填入服务器 IP,端口 22
  • 左侧展开 Connection → SSH → Tunnels
    • Source port 填:59000
    • Destination 填:localhost:5901
    • 点击 Add
  • 回到 Session 页,给会话起个名字(如 vnc-tunnel),点击 Save
  • 点击 Open,输入用户名密码登录
  • 保持 PuTTY 窗口开着,

建立隧道后,在 Windows的cmd窗口执行:

telnet localhost59000

**

最后在你的Windows PC端,**打开 TightVNC Viewer,连接 localhost:59000,理论上您就可以连接上去了。
localhost:59000

http://www.jsqmd.com/news/1379669/

相关文章:

  • 2026年邯郸油墨颜料上门收购商家梳理 润盛化工回收业务及行业信息汇总 - 小范同学a
  • 汽车连接器Pin针如何进行三维测量?高度差与共面度检测解析
  • 飞算JavaAI AI工具箱之Jar依赖修复器:自动清理冗余依赖,告别版本冲突噩梦
  • TDengine时序数据库备份恢复实战指南
  • G-Helper启动失败怎么办:5分钟终极修复指南
  • 2026太空半导体市场升级:高可靠芯片如何支撑卫星通信与深空探索发展?
  • AI生成代码内存泄漏检测与预防实战指南
  • 游戏官服与渠道服核心差异解析:账号、数据与社交的深度影响
  • 2026 年苏州市锂电池回收专用氮气纯化设备专业制造商 - 中国华商产业观察网
  • eval 一行代码,服务器就没了?
  • Terraform实战09:ALB + Target Group + Auto Scaling
  • 避开3C外壳自动化喷涂的3大“精度陷阱”:选对核心直线传动部件比算法更关键
  • 生理实验系统虚实结合型、生理学实验系统、生理学实验系统软件
  • 大模型生成JSON四层防御体系:从提示词到后处理的工程实践
  • Linux:进程(1)
  • HarmonyOS应用实战-启示散页-92-设置开关别只改页面变量:Preferences、AppStorage 和 UI 同步
  • C++标准版本查询与设置:从编译器到构建系统的完整指南
  • AI编程时代前端开发的核心竞争力:从代码实现到架构品味的转型
  • Typora字体自定义全攻略:从原理到实践,打造高效写作环境
  • RAG系统Embedding模型选型指南:从原理到实战的完整方法论
  • 2026杭州别墅装修消费洞察:高净值业主选型参考与机构测评 - 互联网科技品牌测评
  • AI+Obsidian知识管理工作流:音视频一键转Markdown笔记,打造第二大脑(实操教程)
  • 从 CrashLoopBackOff 到根本原因,只需几秒:使用 Elastic Observability 自动化 20 分钟的 Kubernetes 调查流程
  • 2026电池壳体高速搬运产线搭建 成熟机械手方案供应商汇总 - 品牌深度评测
  • 架构深度解析:OpenMir2传奇游戏服务器的模块化设计与实现
  • 如何免费解锁8大网盘真实下载地址:LinkSwift直链解析终极指南
  • Python 3.13 Per-Interpreter GIL:解锁多核并行的新纪元
  • 抖音无水印下载终极指南:如何3步快速保存高清视频到本地
  • 14 字符串定义与转译
  • 基于AI Agent的个性化教育辅导系统:架构设计与核心实现