前言:
VNC++(Virtual Network Computing,虚拟网络计算)++是一种基于 RFB(Remote Frame Buffer,远程帧缓冲)协议的跨平台远程控制技术,允许用户通过网络在本地计算机上操作远程计算机的桌面环境,实现图形化的远程访问与控制。
一、VNC 的核心原理
VNC 的工作模式分为服务端(VNC Server) 和客户端(VNC Viewer) 两部分:
- 服务端:安装在被远程控制的计算机上,负责捕获本地桌面的帧缓冲数据,将画面编码后通过 RFB 协议发送给客户端,并接收客户端的输入指令(鼠标、键盘操作)执行。
- 客户端:安装在控制端计算机上,负责接收服务端传输的桌面画面并显示,同时将用户的输入指令转发给服务端。
- RFB 协议:VNC 的底层通信协议,采用 "客户端请求 - 服务端响应" 模式,支持多种图像编码方式(如 RAW、ZRLE、Tight 等),可根据网络带宽自适应调整画质,保证不同网络环境下的可用性。
二、VNC 的关键特点
- 跨平台性:VNC 服务端和客户端支持 Windows、Linux(包括 Ubuntu、CentOS 等发行版)、macOS、甚至嵌入式系统(如树莓派),不同系统间可互相远程控制(例如 Windows 控制 Ubuntu,macOS 控制 Windows)。
- 轻量化:VNC 服务端占用系统资源少,无需高性能硬件支持,适合对低配设备的远程管理(如服务器、嵌入式设备)。
- 灵活性:支持多种连接方式(直连、通过 VNC 中继器 / 网关间接连接),可配置访问密码、端口号,部分版本还支持加密传输(如通过 SSH 隧道或 TLS 加密)。
- 开源性:主流 VNC 实现(如 RealVNC 的免费版、TightVNC、UltraVNC、x11vnc)多为开源或免费,可自由定制和扩展。
三、主流 VNC 实现工具
不同场景下常用的 VNC 工具差异较大,以下是典型代表:
| 工具名称 | 适用系统 | 核心优势 | 典型用途 |
|---|---|---|---|
| TightVNC | Windows/Linux | 高压缩比(适合低带宽)、支持文件传输 | 个人远程办公、设备管理 |
| RealVNC | 全平台(含移动端) | 商业版支持加密、云连接,稳定性强 | 企业级远程支持、跨设备控制 |
| x11vnc | Linux(X11 桌面) | 直接映射现有 X11 会话,无需新建桌面 | Linux 服务器本地桌面远程管理 |
| TigerVNC | Linux/Windows | 高性能、支持 OpenGL 硬件加速 | 对图形性能要求高的场景(如 3D 建模) |
| UltraVNC | Windows | 支持屏幕缩放、多人连接,免费开源 | 个人 / 小型团队远程协助 |
四、VNC 的典型应用场景
- 服务器远程管理:Linux 服务器通常无物理显示器,通过 VNC 可图形化配置系统、安装软件(替代纯命令行操作)。
- 远程办公 / 协助:在家访问公司电脑、帮助他人排查电脑故障(无需物理到场)。
- 嵌入式设备控制:树莓派、工业控制设备等无桌面的设备,通过 VNC 实现可视化操作。
- 多设备统一管理:企业 IT 管理员通过 VNC 批量管理多台终端设备,提高运维效率。
五、VNC 的局限性与注意事项
- 安全性:原生 VNC 传输未加密(明文),易被监听,建议通过 SSH 隧道、VPN 或使用支持 TLS 加密的版本(如 RealVNC 商业版)。
- 网络依赖性:低带宽下画质会下降、操作延迟增加,需根据网络情况调整编码方式。
- 分辨率适配:部分 VNC 工具对不同分辨率屏幕的适配性较差,可能出现画面拉伸或显示不全。
- 权限管理:需确保服务端配置严格的访问权限(如强密码、指定允许连接的 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设置的密码,即可登录


