本文详细介绍如何在 Ubuntu Server 上安装和配置 VNC4Server 远程桌面服务,并部署轻量级的 XFCE 图形桌面环境,实现图形化远程管理。
应用场景:
在服务器上安装图形桌面环境和 VNC 服务在以下场景中非常有用:
- 需要使用图形界面管理服务器
- 运行需要图形界面的应用程序
- 远程协助和技术支持
- 开发和测试图形应用
- 数据分析和可视化工作
无论您使用的是新加坡VPS、日本独立服务器还是本地 Ubuntu Server,通过 VNC 可以方便地进行图形化远程管理。XFCE 作为轻量级桌面环境,特别适合服务器使用,资源占用少且运行稳定。
系统要求:
适用系统版本:
- Ubuntu Server 16.04 LTS
- Ubuntu Server 18.04 LTS
- Ubuntu Server 20.04 LTS
- Ubuntu Server 22.04 LTS
- Debian 9/10/11
硬件建议:
- CPU:2 核心或以上
- 内存:至少 2GB(推荐 4GB 以上)
- 磁盘:至少 10GB 可用空间
- 网络:稳定的互联网连接
权限要求:
- sudo 权限或 root 权限
- 建议使用普通用户配置 VNC(安全性考虑)
准备工作:
第一步:更新系统
在开始安装之前,先更新系统软件包:
sudo apt-get update sudo apt-get upgrade -y
第二步:创建或准备普通用户
VNC 服务应该使用普通用户运行,而不是 root 用户。如果还没有普通用户,创建一个:
sudo adduser vncuser
按提示设置密码和用户信息。
切换到该用户:
su - vncuser
或使用 SSH 以该用户身份登录。
第三步:检查网络连接
确保服务器可以访问互联网,以便下载软件包:
ping -c 4 google.com
一、安装 VNC4Server
安装 VNC 服务器:
sudo apt-get install vnc4server -y
安装说明:
- vnc4server 是 VNC 协议的服务器实现
- 支持多用户同时连接
- 轻量级,资源占用少
- 兼容大多数 VNC 客户端
验证安装:
which vnc4server
输出应该显示:
/usr/bin/vnc4server
二、配置 VNC 密码
重要提示: 以下操作必须使用普通用户执行,不要使用 root 用户。
设置 VNC 访问密码:
使用普通用户(如 vncuser)执行:
vnc4passwd
按照提示操作:
Password: [输入密码,至少 6 个字符] Verify: [再次输入相同密码] Would you like to enter a view-only password (y/n)? n
密码说明:
- 访问密码: 客户端连接时需要输入的密码
- 只读密码(可选): 只能查看不能操作的密码,通常选择 n 跳过
- 密码长度至少 6 个字符
- 密码保存在 ~/.vnc/passwd 文件中
测试 VNC 服务:
首次启动 VNC 服务:
vnc4server
输出示例:
New 'hostname:1 (vncuser)' desktop is hostname:1
Creating default startup script /home/vncuser/.vnc/xstartup Starting applications specified in /home/vncuser/.vnc/xstartup Log file is /home/vncuser/.vnc/hostname:1.log
输出解读:
- hostname:1 - VNC 服务运行在显示编号 :1 上
- 默认端口为 5901(5900 + 显示编号)
- 创建了配置目录 ~/.vnc/
- 生成了启动脚本 xstartup
查看 VNC 进程:
ps aux | grep vnc4server
查看监听端口:
netstat -tunlp | grep 5901
或使用 ss 命令:
ss -tunlp | grep 5901
三、测试默认连接(可选)
在安装图形环境之前,可以先测试 VNC 连接是否正常。
本地安装 VNC 客户端:
Windows 系统:
- RealVNC Viewer(推荐)
- TightVNC Viewer
- UltraVNC
macOS 系统:
- RealVNC Viewer
- Screen Sharing(系统自带)
Linux 系统:
sudo apt-get install xtightvncviewer
连接 VNC 服务器:
在 VNC 客户端中输入连接地址:
your_server_ip:1
或
your_domain_name:1
例如:
192.168.1.100:1
或
server.example.com:1
输入之前设置的 VNC 密码,应该能看到一个简单的 X Terminal 窗口(灰色背景,只有一个终端)。
停止 VNC 服务:
测试完成后,停止 VNC 服务实例:
vnc4server -kill :1
命令说明:
- -kill 参数用于停止指定的显示编号
- :1 表示停止显示编号为 1 的 VNC 实例
- 如果有多个实例,可以使用 :2, :3 等
四、安装 XFCE 图形桌面环境
XFCE 是一个轻量级的桌面环境,特别适合服务器使用。对于运行在韩国独立服务器或香港VPS上的 Ubuntu Server,XFCE 能提供良好的性能和用户体验。
安装 XFCE4:
sudo apt-get install xfce4 xfce4-goodies -y
安装包说明:
- xfce4 - XFCE 核心桌面环境
- xfce4-goodies - XFCE 扩展插件和工具(可选但推荐)
安装过程: 安装过程可能需要 5-15 分钟,取决于网络速度和服务器性能。安装过程中可能会提示选择显示管理器,选择 lightdm 或 gdm3 都可以,建议选择 lightdm(更轻量)。
安装的主要组件:
- xfwm4 - 窗口管理器
- xfce4-panel - 面板
- xfdesktop - 桌面管理器
- xfce4-session - 会话管理器
- thunar - 文件管理器
- xfce4-terminal - 终端模拟器
验证安装:
dpkg -l | grep xfce4
应该能看到多个 xfce4 相关的软件包。
五、配置 VNC 启动 XFCE
安装 XFCE 后,需要配置 VNC 启动脚本,让 VNC 启动时自动加载 XFCE 桌面环境。
进入 VNC 配置目录:
cd ~/.vnc
备份原始配置:
cp xstartup xstartup.backup
编辑启动脚本:
vi xstartup
或使用 nano 编辑器:
nano xstartup
原始内容(参考):
#!/bin/sh
Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager &
修改后的内容:
找到以下行:
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
在这一行之后,注释掉最后一行:
#x-window-manager &
然后添加以下 XFCE 启动命令:
x-session-manager & xfdesktop & xfce4-panel & xfce4-menu-plugin & xfsettingsd & xfconfd & xfwm4 &
完整的修改后配置文件示例:
#!/bin/sh
Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
启动 XFCE 桌面环境
x-session-manager & xfdesktop & xfce4-panel & xfce4-menu-plugin & xfsettingsd & xfconfd & xfwm4 &
配置说明:
- x-session-manager - 会话管理器
- xfdesktop - 桌面背景和图标管理
- xfce4-panel - 顶部/底部面板
- xfce4-menu-plugin - 应用程序菜单
- xfsettingsd - 设置守护进程
- xfconfd - 配置守护进程
- xfwm4 - 窗口管理器
保存文件:
vi 编辑器:按 Esc,输入 :wq 回车 nano 编辑器:按 Ctrl+X,输入 Y,按回车
设置执行权限:
chmod +x ~/.vnc/xstartup
六、启动 VNC 服务并连接
启动 VNC 服务:
vnc4server
或指定分辨率启动:
vnc4server -geometry 1920x1080
或
vnc4server -geometry 1366x768
常用分辨率:
- 1920x1080 - Full HD
- 1680x1050 - 宽屏
- 1440x900 - 常规宽屏
- 1366x768 - 笔记本常见分辨率
- 1280x1024 - 标准 4:3
指定显示编号:
vnc4server :2
这会在端口 5902 上启动服务。
查看运行的 VNC 实例:
vnc4server -list
或
ps aux | grep vnc
使用 VNC 客户端连接:
在 VNC Viewer 中输入:
your_server_ip:1
输入 VNC 密码后,应该能看到完整的 XFCE 桌面环境,包括:
- 桌面背景
- 顶部面板(或底部面板)
- 应用程序菜单
- 文件管理器图标
- 系统托盘
七、修改 VNC 默认端口
默认情况下,VNC 服务使用 5901 端口(显示 :1)。如果想使用标准的 5900 端口,可以修改配置。
编辑 VNC 服务器配置:
sudo vi /usr/bin/vnc4server
查找以下行:
$vncPort = 5900 + $displayNumber;
修改为:
$vncPort = 5899 + $displayNumber;
这样,当启动 :1 时,端口就是 5899 + 1 = 5900。
保存并重启 VNC:
vnc4server -kill :1 vnc4server
验证端口:
netstat -tunlp | grep 5900
八、配置 VNC 开机自启动
为了让 VNC 服务在系统启动时自动运行,可以创建 systemd 服务单元。
创建服务文件:
sudo vi /etc/systemd/system/[email protected]
输入以下内容:
[Unit] Description=Start VNC server at startup After=syslog.target network.target
[Service] Type=forking User=vncuser Group=vncuser WorkingDirectory=/home/vncuser
PIDFile=/home/vncuser/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vnc4server -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vnc4server -depth 24 -geometry 1920x1080 :%i ExecStop=/usr/bin/vnc4server -kill :%i
[Install] WantedBy=multi-user.target
重要说明:
- 将 User 和 Group 改为您实际使用的用户名
- 将 WorkingDirectory 和 PIDFile 路径中的用户名改为实际用户
- 可以修改 -geometry 参数设置分辨率
重新加载 systemd:
sudo systemctl daemon-reload
启动并启用服务:
sudo systemctl start [email protected] sudo systemctl enable [email protected]
查看服务状态:
sudo systemctl status [email protected]
管理服务:
停止服务:
sudo systemctl stop [email protected]
重启服务:
sudo systemctl restart [email protected]
禁用自启动:
sudo systemctl disable [email protected]
九、配置防火墙
如果服务器启用了防火墙,需要开放 VNC 端口。对于使用台湾独立服务器或马来西亚VPS的用户,还需要在云平台的安全组中配置规则。
使用 UFW 防火墙(Ubuntu 默认):
检查防火墙状态:
sudo ufw status
开放 VNC 端口:
sudo ufw allow 5901/tcp
或开放一个范围(支持多个 VNC 实例):
sudo ufw allow 5900:5910/tcp
重新加载防火墙:
sudo ufw reload
验证规则:
sudo ufw status numbered
使用 iptables:
如果使用 iptables,执行:
sudo iptables -A INPUT -p tcp --dport 5901 -j ACCEPT sudo iptables-save > /etc/iptables/rules.v4
云服务器安全组配置:
如果使用云服务器,还需要在云平台控制台中:
- 进入安全组设置
- 添加入站规则
- 协议:TCP
- 端口:5901(或 5900-5910)
- 来源:根据需要设置(建议限制为特定 IP)
十、安全加固建议
1. 使用 SSH 隧道(强烈推荐)
通过 SSH 隧道连接 VNC 更安全,避免 VNC 流量直接暴露在公网。
在本地计算机创建 SSH 隧道:
Windows(使用 PuTTY):
- Session → Host Name: your_server_ip
- Connection → SSH → Tunnels
- Source port: 5901
- Destination: localhost:5901
- 点击 Add
Linux/macOS:
ssh -L 5901:localhost:5901 vncuser@your_server_ip
然后 VNC 客户端连接到:
localhost:1
这样 VNC 流量通过加密的 SSH 通道传输。
2. 限制访问 IP
在防火墙中只允许特定 IP 访问:
sudo ufw allow from 203.0.113.0/24 to any port 5901
3. 使用强密码
设置复杂的 VNC 密码,至少 8 位,包含大小写字母和数字。
4. 定期更新密码
定期更换 VNC 密码:
vnc4passwd
5. 禁用不必要的 VNC 实例
只运行需要的 VNC 实例,关闭多余的:
vnc4server -kill :2 vnc4server -kill :3
6. 监控连接日志
定期检查 VNC 日志文件:
tail -f ~/.vnc/*.log
7. 使用非标准端口
修改默认端口可以减少自动扫描攻击。
十一、常见问题排查
问题 1:连接时提示"连接被拒绝"
- 检查 VNC 是否运行: ps aux | grep vnc
- 检查端口监听: netstat -tunlp | grep 5901
- 检查防火墙: sudo ufw status
- 检查云安全组: 确认端口已开放
问题 2:连接后只显示灰屏
- 原因: xstartup 配置错误
- 解决: 检查 ~/.vnc/xstartup 文件内容和权限
- 重启 VNC: vnc4server -kill :1 && vnc4server
问题 3:XFCE 组件未启动
- 检查日志: cat ~/.vnc/*.log
- 手动启动组件: 在 VNC 终端中执行缺失的命令
- 重新安装 XFCE: sudo apt-get install --reinstall xfce4
问题 4:分辨率不正确
- 启动时指定: vnc4server -geometry 1920x1080
- 动态调整: 在 XFCE 设置中调整显示分辨率
问题 5:VNC 密码无效
- 重新设置: vnc4passwd
- 检查密码文件: ls -la ~/.vnc/passwd
问题 6:多个用户冲突
- 原因: 不同用户使用相同显示编号
- 解决: 每个用户使用不同的显示编号(:1, :2, :3)
问题 7:系统资源不足
- 检查内存: free -h
- 检查 CPU: top
- 优化: 关闭不必要的服务,升级服务器配置
十二、性能优化建议
1. 调整颜色深度
降低颜色深度可以提高性能:
vnc4server -depth 16 -geometry 1920x1080
2. 禁用桌面效果
在 XFCE 设置中:
- 关闭窗口阴影
- 禁用桌面动画
- 使用简单主题
3. 限制后台进程
关闭不必要的 XFCE 插件和服务。
4. 使用高效的 VNC 客户端
选择支持压缩和优化的 VNC 客户端,如 TurboVNC。
5. 调整网络设置
对于跨国连接,考虑使用压缩和质量调节。
十三、替代方案
TightVNC(更高效):
sudo apt-get install tightvncserver
TigerVNC(更现代):
sudo apt-get install tigervnc-standalone-server
x11vnc(共享现有桌面):
sudo apt-get install x11vnc
NoMachine(企业级方案):
提供更好的性能和用户体验,但不开源。
通过以上详细的安装和配置步骤,您可以在 Ubuntu Server 上成功搭建 VNC 远程桌面环境,并使用轻量级的 XFCE 图形界面。这个方案资源占用少,性能稳定,特别适合服务器环境使用。根据实际需求进行安全加固和性能优化,可以获得更好的使用体验。