Ubuntu 24.04 系统下 VNC Server 完整安装与配置指南

Ubuntu 24.04 系统下 VNC Server 完整安装与配置指南

在远程管理 Ubuntu 24.04 服务器或桌面时,VNC(Virtual Network Computing)是常用工具,能提供图形化远程桌面体验。本文将以 TigerVNC(稳定性高、兼容性强的 VNC 实现)为例,详细讲解从系统更新到服务注册、远程连接的全流程,适合新手和有一定 Linux 基础的用户参考。

一、前置准备:更新系统安装包

在安装任何新软件前,建议先更新系统的软件包索引,确保后续安装的软件是最新版本,同时避免依赖冲突。

打开终端(快捷键 Ctrl+Alt+T),执行以下命令:

bash

sudo apt update 
  • 说明:sudo 表示以管理员权限执行,执行时需输入当前用户密码(输入时密码不显示,输完按回车即可);apt update 仅更新软件包索引,不实际升级软件,过程通常耗时 1-3 分钟(取决于网络速度)。

首先保证GOME依赖完整:

若为server版(没有图形界面组件),先安装 GNOME 完整会话组件

bash

sudo apt install -y gnome-session gnome-shell gnome-panel gnome-settings-daemon 

安装 VNC 与 GNOME 兼容的依赖

bash

sudo apt install -y dbus-x11 x11-xserver-utils xauth 

二、安装 TigerVNC Server

TigerVNC 是官方推荐的独立 VNC 服务器,支持多种桌面环境(如 GNOME、XFCE),此处提供 在线安装离线安装 两种方式,可根据网络环境选择。

方式 1:在线安装(推荐,网络通畅时)

直接通过 Ubuntu 官方软件源安装,命令如下:

bash

sudo apt install tigervnc-standalone-server 
  • 执行过程中会提示 “是否继续安装”,输入 y 并回车即可,系统会自动下载并安装依赖包,全程无需手动干预。

三、设置 VNC 访问密码

VNC 连接需密码验证,确保远程访问安全。执行以下命令设置密码:

bash

vncpasswd 

执行后会出现以下交互提示,按步骤操作:

  1. 首先输入密码(密码长度建议 6-8 位,需包含字母和数字,输入时不显示),按回车;
  2. 再次输入密码确认,按回车;
  3. 最后会提示 Would you like to enter a view-only password (y/n)?(是否设置 “仅查看” 密码,即只能看不能操作),务必输入 n 并回车(避免限制操作权限)。
  • 密码会保存在 ~/.vnc/ 目录下(~ 表示当前用户的家目录),后续可通过再次执行 vncpasswd 修改密码。

四、创建 xstartup 配置文件

VNC 启动时需要加载桌面环境配置,需手动创建 xstartup 文件(指定使用 Ubuntu 默认的 GNOME 桌面),步骤如下:

1. 创建并编辑文件

执行命令打开 nano 文本编辑器,创建 ~/.vnc/xstartup 文件

bash

sudo nano ~/.vnc/xstartup 

2. 粘贴配置内容

将以下内容完整复制到编辑器中(注意不要遗漏或修改任何一行):

bash

#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS export GNOME_SHELL_SESSION_MODE=ubuntu export XDG_CURRENT_DESKTOP=ubuntu:GNOME export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg exec gnome-session 

3. 保存并退出

  • Ctrl+O(字母 O,不是数字 0)保存文件,按回车确认文件名;
  • Ctrl+X 退出 nano 编辑器。

4. 赋予执行权限(关键步骤)

刚创建的 xstartup 文件默认没有执行权限,需手动添加,否则 VNC 启动时会报错:

bash

sudo chmod +x ~/.vnc/xstartup 
  • chmod +x 表示给文件添加 “可执行” 权限,确保 VNC 服务能正常调用该配置。

五、手动启动 VNC Server 并验证

配置完成后,先手动启动 VNC 服务,验证是否能正常运行。

1. 手动启动命令

bash

vncserver :3 -geometry 1920x1080 -localhost no -depth 24 
  • 参数说明:
    • :3:指定 VNC 的显示编号为 3(对应端口为 5903,端口规则:5900 + 显示编号);
    • -geometry 1920x1080:设置远程桌面分辨率为 1920x1080(可根据需求修改,如 1366x768);
    • -localhost no:允许非本地设备(如其他电脑)连接(若设为 yes,则仅允许服务器本机连接);
    • -depth 24:设置颜色深度为 24 位(色彩显示更细腻,常用值还有 16 位)。

2. 验证启动状态

执行以下命令查看 VNC 服务是否启动成功:

bash

vncserver -list 

若输出类似以下内容,说明启动成功:

plaintext

TigerVNC server sessions: X DISPLAY # RFB PORT # RFB UNIX PATH PROCESS ID # SERVER 3 5903 2231 Xtigervnc 
  • 关键信息:X DISPLAY # 为 3,RFB PORT # 为 5903(后续远程连接需用到该端口),PROCESS ID # 为服务进程号(可用于强制关闭服务)。
  • 若启动失败:可执行 vncserver -kill :3 关闭残留进程,检查 xstartup 文件内容是否正确,或重新执行前面的配置步骤。

六、注册 VNC 系统服务(实现开机自启)

手动启动的 VNC 服务在服务器重启后会失效,需将其注册为系统服务,实现 “开机自动启动” 和 “服务化管理”(如启停、状态查看)。

1. 创建服务配置文件

需在 /etc/systemd/system/ 目录下创建 vncserver@:3.service 文件(@:3 对应前面的显示编号 3,若修改显示编号,此处需同步修改)。

执行命令创建并编辑文件:

bash

sudo nano /etc/systemd/system/vncserver@:3.service 

2. 粘贴服务配置内容

将以下内容复制到编辑器中,注意替换 <username> 为你的 Ubuntu 用户名(如当前用户是 ubuntu,则将所有 <username> 改为 ubuntu):

ini

[Unit] Description=Remote desktop service (VNC) # 服务描述 After=syslog.target network.target # 服务依赖:在日志服务和网络服务启动后启动 [Service] Type=forking # 服务类型:后台运行 User=<username> # 运行服务的用户(替换为你的用户名) Environment=HOME=/home/<username> # 设置用户家目录 Environment="DISPLAY=:%i" # 显示编号(%i 对应 @:3 中的 3) Environment=PATH=/usr/bin:/usr/sbin:/bin:/sbin # 系统环境变量路径 # 启动前清理旧的 VNC 进程 ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' # 启动 VNC 服务(分辨率与手动启动一致) ExecStart=/bin/sh -c '/usr/bin/vncserver %i -geometry 1920x1080 -localhost no' # PID 文件路径(记录服务进程号,普通用户用此路径) PIDFile=/home/<username>/.vnc/%H%i.pid # 若为 root 用户,需将上一行改为:PIDFile=/root/.vnc/%H%i.pid # 停止服务时关闭 VNC 进程 ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' Restart=on-failure # 服务失败时自动重启 RestartSec=5 # 重启间隔时间(5 秒) [Install] WantedBy=multi-user.target # 服务安装目标:多用户模式下生效 

3. 重新加载系统服务

修改或新增服务配置文件后,需重新加载 systemd 配置,让系统识别新服务:

bash

sudo systemctl daemon-reload 

4. 设置开机自启并启动服务

执行以下命令完成服务配置:

  1. 设置开机自启:bash
    • 成功会提示:Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@:3.service → /etc/systemd/system/vncserver@:3.service.
  • 启动服务:bash
  • 查看服务运行状态:bash
sudo systemctl start vncserver@:3.service 
sudo systemctl enable vncserver@:3.service 

 

sudo systemctl status vncserver@:3.service 

  • 若输出中包含 active (running)(绿色),说明服务正常运行;
  • 若显示 failed(红色),执行以下命令查看详细日志,定位失败原因:bash
    journalctl -xeu vncserver@:3.service 

    七、关键配置:禁用 Wayland 并重启 GDM3

    Ubuntu 24.04 默认使用 Wayland 显示服务器,但 Wayland 与 VNC 兼容性较差,会导致远程桌面无法正常显示,需强制使用 Xorg 显示服务器。

    1. 修改 GDM3 配置文件

    GDM3 是 Ubuntu 的默认登录管理器,需修改其配置禁用 Wayland:

    bash

    sudo nano /etc/gdm3/custom.conf 

    2. 禁用 Wayland

    在打开的文件中,找到 #WaylandEnable=false 这一行,删除开头的 # 注释符(若文件中没有这一行,直接在末尾添加 WaylandEnable=false)。

    3. 重启 GDM3 服务

    修改配置后需重启 GDM3 生效(重启过程中当前桌面会暂时断开,建议保存好工作内容):

    bash

    sudo systemctl restart gdm3 

    八、远程连接:使用 VNC Viewer 访问

    完成以上所有配置后,即可通过 VNC 客户端(如 VNC Viewer、RealVNC)连接 Ubuntu 服务器。

    连接步骤:

    1. 下载并安装 VNC 客户端:在本地电脑(Windows/macOS/Linux)上安装 VNC Viewer(官网:RealVNC,免费版可满足基本需求)。
    2. 输入连接地址:打开 VNC Viewer,在地址栏输入 服务器IP:5903(如 192.168.1.100:59035903 对应前面的显示编号 3)。
    3. 验证密码:点击连接后,输入第三步设置的 VNC 密码,即可进入 Ubuntu 远程桌面。

    常见问题与解决方法

    1. 远程连接时提示 “连接被拒绝”
      • 检查 VNC 服务是否正常运行:sudo systemctl status vncserver@:3.service
      • 确认服务器防火墙是否开放 5903 端口:执行 sudo ufw allow 5903/tcp 开放端口(若启用了防火墙)。
    2. 远程桌面显示空白或黑屏
      • 检查 xstartup 文件内容是否正确,且是否有执行权限(sudo chmod +x ~/.vnc/xstartup);
      • 确认 Wayland 已禁用(cat /etc/gdm3/custom.conf | grep WaylandEnable 查看是否为 WaylandEnable=false)。
    3. 服务启动失败,日志提示 “权限不足”
      • 检查服务配置文件中 UserPIDFile 路径是否正确(尤其是普通用户和 root 用户的路径区别);
      • 确保 ~/.vnc/ 目录的权限为当前用户所有:sudo chown -R <username>:<username> ~/.vnc/

    Read more

    Flutter 组件 sse_stream 的适配 鸿蒙Harmony 实战 - 驾驭高性能 Server-Sent Events 流、实现鸿蒙端实时数据推送与长连接保活优化方案

    Flutter 组件 sse_stream 的适配 鸿蒙Harmony 实战 - 驾驭高性能 Server-Sent Events 流、实现鸿蒙端实时数据推送与长连接保活优化方案

    欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 sse_stream 的适配 鸿蒙Harmony 实战 - 驾驭高性能 Server-Sent Events 流、实现鸿蒙端实时数据推送与长连接保活优化方案 前言 在鸿蒙(OpenHarmony)生态的即时性应用场景中,如金融级实时行情、直播间弹幕以及 AI 模型的流式回复(Streaming Response),我们需要一种比轮询更高效、比 WebSocket 更轻量的数据下发机制。 SSE(Server-Sent Events)作为 HTML5 规范下的长连接利器,以其对 HTTP 协议的完美兼容和自动重连的天生特性,在现代移动开发中大放异彩。 sse_stream 库为 Flutter 提供了精简且强大的 SSE 接入能力。在鸿蒙适配实战中,

    鸿蒙金融理财全栈项目——生态合作与用户运营优化

    鸿蒙金融理财全栈项目——生态合作与用户运营优化

    《鸿蒙APP开发从入门到精通》第27篇:鸿蒙金融理财全栈项目——生态合作与用户运营优化 🚀🤝📊 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第27篇——生态合作与用户运营优化篇,100%承接第26篇的安全合规与用户体验优化架构,并基于金融场景的生态合作与用户运营优化要求,设计并实现鸿蒙金融理财全栈项目的生态合作与用户运营优化功能。 学习目标: * 掌握鸿蒙金融理财项目的生态合作优化设计与实现; * 实现生态合作数据接入、生态合作接口对接、生态合作数据共享; * 理解用户运营优化在金融场景的核心设计与实现; * 实现用户分群优化、用户画像优化、用户留存优化; * 掌握生态合作与用户运营的协同优化策略; * 优化金融理财项目的用户体验与生态合作效果。 学习重点: * 鸿蒙金融理财项目的生态合作优化设计原则; * 用户运营优化在金融场景的应用; * 生态合作与用户运营的协同优化策略。 一、 生态合作优化基础 🎯 1.1 生态合作优化定义 生态合作优化是指对金融理财项目的生态合作进行优化,提升应用的生态合作效果,主要包括以下方面:

    Flutter 三方库 http_client_interceptor 的鸿蒙化适配指南 - 实现原生 HttpClient 的全量请求拦截、支持端侧动态 Headers 注入与网络流量审计实战

    Flutter 三方库 http_client_interceptor 的鸿蒙化适配指南 - 实现原生 HttpClient 的全量请求拦截、支持端侧动态 Headers 注入与网络流量审计实战

    欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 http_client_interceptor 的鸿蒙化适配指南 - 实现原生 HttpClient 的全量请求拦截、支持端侧动态 Headers 注入与网络流量审计实战 前言 在进行 Flutter for OpenHarmony 开发时,虽然我们常使用 dio 等高阶库,但仍有大量底层插件或遗留系统直接使用 Dart 原生的 HttpClient。如何在中途“截获”这些原生请求,以便统一添加鉴权 Token、日志审计或处理特定区域的网关重定向?http_client_interceptor 是一款专为原生 IO 库设计的拦截器插件。本文将探讨如何在鸿蒙端构建极致透明的网络治理层。 一、原直观解析 / 概念介绍 1.1 基础原理

    Linux 部署 RocketMQ 实操:从内网到公网,搞定远程消息服务

    Linux 部署 RocketMQ 实操:从内网到公网,搞定远程消息服务

    前言 做中间件开发的朋友应该都有过这样的经历:在 Linux 服务器上搭好了 RocketMQ,内网测试一切正常,可外网想连的时候却被网络隔离卡得死死的。要么得申请公网 IP,要么折腾端口映射,费时又费力。最近我踩遍了坑,终于找到了一套极简的部署 + 外网访问方案,不用复杂配置,几分钟就能让你的 RocketMQ 从内网走向公网,今天就把这套实操流程全部分享出来。 消息队列不再遥远——在Linux上,RocketMQ一跑就通。 1.前提条件 首先需要安装jdk: java-version 首先下载RocketMQ的源码包以及运行包: RocketMQ建议的运行环境需要至少12G的内存。 关于RocketMQ的版本: 我们这里采用最新的5.3.4版本 这里需要小伙伴注意一下,4.x的系列版本已经停止了维护。这意味着目前已经不建议使用4.x的版本了。 2.安装RocketMQ 将下载后的文件上传到/app/rocketmq mkdir-p rocketmq cd rocketmq/ 解压该文件: unzip rocketmq-all-5.