ubuntu24.04系统安装VNC

前言:

VNC++(Virtual Network Computing,虚拟网络计算)++是一种基于 RFB(Remote Frame Buffer,远程帧缓冲)协议的跨平台远程控制技术,允许用户通过网络在本地计算机上操作远程计算机的桌面环境,实现图形化的远程访问与控制。

一、VNC 的核心原理

VNC 的工作模式分为服务端(VNC Server)客户端(VNC Viewer) 两部分:

  1. 服务端:安装在被远程控制的计算机上,负责捕获本地桌面的帧缓冲数据,将画面编码后通过 RFB 协议发送给客户端,并接收客户端的输入指令(鼠标、键盘操作)执行。
  2. 客户端:安装在控制端计算机上,负责接收服务端传输的桌面画面并显示,同时将用户的输入指令转发给服务端。
  3. RFB 协议:VNC 的底层通信协议,采用 "客户端请求 - 服务端响应" 模式,支持多种图像编码方式(如 RAW、ZRLE、Tight 等),可根据网络带宽自适应调整画质,保证不同网络环境下的可用性。

二、VNC 的关键特点

  1. 跨平台性:VNC 服务端和客户端支持 Windows、Linux(包括 Ubuntu、CentOS 等发行版)、macOS、甚至嵌入式系统(如树莓派),不同系统间可互相远程控制(例如 Windows 控制 Ubuntu,macOS 控制 Windows)。
  2. 轻量化:VNC 服务端占用系统资源少,无需高性能硬件支持,适合对低配设备的远程管理(如服务器、嵌入式设备)。
  3. 灵活性:支持多种连接方式(直连、通过 VNC 中继器 / 网关间接连接),可配置访问密码、端口号,部分版本还支持加密传输(如通过 SSH 隧道或 TLS 加密)。
  4. 开源性:主流 VNC 实现(如 RealVNC 的免费版、TightVNC、UltraVNC、x11vnc)多为开源或免费,可自由定制和扩展。

三、主流 VNC 实现工具

不同场景下常用的 VNC 工具差异较大,以下是典型代表:

工具名称 适用系统 核心优势 典型用途
TightVNC Windows/Linux 高压缩比(适合低带宽)、支持文件传输 个人远程办公、设备管理
RealVNC 全平台(含移动端) 商业版支持加密、云连接,稳定性强 企业级远程支持、跨设备控制
x11vnc Linux(X11 桌面) 直接映射现有 X11 会话,无需新建桌面 Linux 服务器本地桌面远程管理
TigerVNC Linux/Windows 高性能、支持 OpenGL 硬件加速 对图形性能要求高的场景(如 3D 建模)
UltraVNC Windows 支持屏幕缩放、多人连接,免费开源 个人 / 小型团队远程协助

四、VNC 的典型应用场景

  1. 服务器远程管理:Linux 服务器通常无物理显示器,通过 VNC 可图形化配置系统、安装软件(替代纯命令行操作)。
  2. 远程办公 / 协助:在家访问公司电脑、帮助他人排查电脑故障(无需物理到场)。
  3. 嵌入式设备控制:树莓派、工业控制设备等无桌面的设备,通过 VNC 实现可视化操作。
  4. 多设备统一管理:企业 IT 管理员通过 VNC 批量管理多台终端设备,提高运维效率。

五、VNC 的局限性与注意事项

  1. 安全性:原生 VNC 传输未加密(明文),易被监听,建议通过 SSH 隧道、VPN 或使用支持 TLS 加密的版本(如 RealVNC 商业版)。
  2. 网络依赖性:低带宽下画质会下降、操作延迟增加,需根据网络情况调整编码方式。
  3. 分辨率适配:部分 VNC 工具对不同分辨率屏幕的适配性较差,可能出现画面拉伸或显示不全。
  4. 权限管理:需确保服务端配置严格的访问权限(如强密码、指定允许连接的 IP),避免未授权访问。

六、VNC 与其他远程控制技术的区别

VNC 与 RDP(远程桌面协议)、SSH(安全外壳协议)的核心差异如下:

  • 与 RDP 对比:RDP 是 Windows 原生协议,性能更高(支持增量更新),但跨平台性差;VNC 跨平台性强,但性能略逊于 RDP(尤其高分辨率场景)。
  • 与 SSH 对比:SSH 仅支持命令行远程操作,安全性高;VNC 支持图形化桌面,更适合非专业用户,但需额外配置加密。

教程示例

这里以ubuntu24.04系统、TigerVNC为例

先用root用户进行操作:

1. 更新软件源
bash 复制代码
sudo apt update && sudo apt upgrade -y
2. 安装图形化界面

如果是ubuntu的最小化安装,需要进系统升级下载桌面环境,不然VNC无法获取到服务器的正常画面

bash 复制代码
sudo apt install ubuntu-desktop -y
3. 下载VNC相关的组件依赖以及本省
bash 复制代码
sudo apt install tigervnc-standalone-server tigervnc-common -y
4. 配置vncserver密码

输入两遍密码,当最后询问是否设置"只读密码"时,输入n即可

bash 复制代码
vncpasswd
5. 配置启动脚本,这一步很关键,决定了连接后显示的是灰色背景还是完整的ubuntu桌面

这段脚本的作用是加载 Ubuntu 默认的 GNOME 桌面环境

bash 复制代码
#创建目录
mkdir -p ~/.vnc

#编写文档
vim ~/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /etc/X11/xinit/xinitrc


#编写完成后,将文档添加执行权限
chmod +x ~/.vnc/xstartup
6. 配置systemd服务开机自启动

注意:文件名中的 @:1 代表显示编号为 1,对应端口为 5901

bash 复制代码
vim /etc/systemd/system/vncserver@\:1.service

[Unit]
Description=TigerVNC Server for %i
After=syslog.target network.target

[Service]
Type=forking
#这里两个ubuntu,是本作者系统中的用户,这里可更改为你们实际操作用户
User=ubuntu
Environment=HOME=/home/ubuntu
Environment="DISPLAY=:1"
ExecStartPre=-/usr/bin/vncserver -kill :1
ExecStart=/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24 -localhost no
ExecStop=/usr/bin/vncserver -kill :1
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target


#保存退出后加载该配置

systemctl daemon-reload
7. 安装X11依赖、组件(这个不安装会导致开启VNC服务报错)
bash 复制代码
apt update && apt install -y \
  xfce4 xfce4-goodies \
  xorg xserver-xorg-core \
  lightdm dbus-x11 \
  tigervnc-standalone-server tigervnc-common


#安装完成后,配置lightdm为默认显示管理器(解决会话启动问题)

echo "lightdm shared/default-display-manager select lightdm" | debconf-set-selections
dpkg-reconfigure lightdm -f noninteractive
8. 关闭wayland并重启GDM3

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

bash 复制代码
sudo vim /etc/gdm3/custom.conf


#修改完成后,重启GDM3
sudo systemctl restart gdm3

取消这一行前面的#号

切换ubuntu(实际使用用户)用户进行接下来的操作:

9. 切换为ubuntu用户、启动vncserver
bash 复制代码
su - ubuntu

vncserver :1 -geometry 1920x1080 -depth 24 -localhost no -xstartup /home/ubuntu/.vnc/xstartup
10. 开启vncserver
bash 复制代码
sudo systemctl start vncserver@:1.service
sudo systemctl status vncserver@:1.service
11. windows安装客户端vnc工具,安装完成后找到安装路径,点击打开工具

工具我已放在资源下载栏目中

输入对应的系统ifconfig的IP加上端口号

输入vncpasswd设置的密码,即可登录

相关推荐
A7bert7774 小时前
【YOLOv5seg部署RK3588】模型训练→转换RKNN→开发板部署
linux·c++·人工智能·深度学习·yolo·目标检测
BullSmall5 小时前
linux 根据端口查看进程和对应的应用
linux·运维
kali-Myon5 小时前
快速解决 Docker 环境中无法打开 gdb 调试窗口以及 tmux 中无法滚动页面内容和无法选中复制的问题
运维·安全·docker·容器·gdb·pwn·tmux
黑客思维者5 小时前
为什么Linux常被提权操作?
linux·网络·安全
石像鬼₧魂石5 小时前
Fail2Ban核心架构学习
linux·学习·ubuntu
阿阿越5 小时前
Linux系统编程 -- 进程优先级、切换和调度
linux·运维·服务器
Hey小孩5 小时前
Linux审计组件:auditd
linux·运维
wanhengidc6 小时前
云手机存在哪些技术瓶颈
运维·服务器·安全·智能手机·生活
水天需0106 小时前
Vim 标签页(Tab)操作详解
linux