在 Ubuntu Server(无图形界面的纯命令行系统)上配置 VNC 远程图形界面,需手动安装桌面环境 + VNC 服务器。以下是安全、稳定、推荐的生产级配置方案(使用 TigerVNC + XFCE4,配合 systemd 服务管理,支持开机自启和用户级隔离),适用于 Ubuntu 22.04/24.04 LTS。
⚠️ 注意:
- 不推荐使用
x11vnc或vino(GNOME 自带):前者需依赖已启动的 X session(Server 默认无),后者已弃用且不安全;- 避免使用
tightvncserver:老旧、不维护、不兼容 Wayland/Xorg 新版本;- 禁用 root VNC 登录,始终以普通用户运行;
- 务必配置防火墙和强密码(或结合 SSH 隧道更安全)。
✅ 推荐方案:TigerVNC + XFCE4(轻量、稳定、社区活跃)
步骤 1:更新系统并安装必要依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl gnupg2 software-properties-common
步骤 2:安装桌面环境(推荐 XFCE4 — 轻量、兼容性好)
sudo apt install -y xfce4 xfce4-goodies
# 可选:安装一个终端(XFCE 默认有,但确保可用)
sudo apt install -y xfce4-terminal
💡 其他选项(按需选择):
- GNOME:
sudo apt install -y ubuntu-desktop-minimal(较重,需更多内存)- LXQt:
sudo apt install -y lxqt(更轻,但生态略小)
不建议安装ubuntu-desktop(含大量无关服务)
步骤 3:安装 TigerVNC 服务器(官方源已包含,无需第三方 PPA)
sudo apt install -y tigervnc-standalone-server tigervnc-xorg-extension tigervnc-viewer
步骤 4:为普通用户(如 ubuntu)配置 VNC 密码与初始配置
# 切换到目标用户(勿用 root!例如用户名为 ubuntu)
sudo su - ubuntu
# 设置 VNC 密码(会生成 ~/.vnc/passwd)
vncpasswd
# 创建 VNC 启动脚本(~/.vnc/xstartup)
cat > ~/.vnc/xstartup << 'EOF'
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
EOF
chmod +x ~/.vnc/xstartup
exit # 退出 sudo su
步骤 5:创建 systemd 用户服务(推荐方式,安全且自动管理)
# 为用户创建服务目录(以 ubuntu 用户为例)
sudo mkdir -p /home/ubuntu/.config/systemd/user
# 创建服务文件
cat | sudo tee /home/ubuntu/.config/systemd/user/vncserver@.service << 'EOF'
[Unit]
Description=Start TigerVNC server at startup
After=multi-user.target
[Service]
Type=forking
User=%i
PAMName=login
PIDFile=/home/%i/.vnc/%H:%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -localhost no -geometry 1366x768 -depth 24 -dpi 96
ExecStop=/usr/bin/vncserver -kill %i
[Install]
WantedBy=default.target
EOF
# 设置权限
sudo chown -R ubuntu:ubuntu /home/ubuntu/.config/systemd/user/
✅ 说明:
%i表示端口号(如:1→ 监听5901端口)-localhost no:允许远程连接(默认只允许本地)-geometry:设置默认分辨率(可按需调整)-depth 24:真彩色支持- 使用
systemd --user实现用户级隔离,无需 root 权限
步骤 6:启用并启动 VNC 服务(以显示号 :1 为例)
# 切换到用户
sudo su - ubuntu
# 重载用户级 systemd 配置
systemctl --user daemon-reload
# 启用开机自启(仅对当前用户)
systemctl --user enable vncserver@1.service
# 立即启动
systemctl --user start vncserver@1.service
# 查看状态(应显示 active (running))
systemctl --user status vncserver@1.service
# 退出
exit
步骤 7:配置防火墙(UFW)
# 允许 VNC 端口(:1 → 5901;:2 → 5902,以此类推)
sudo ufw allow 5901
# 如果需多个用户/实例,开放对应端口(如 5902, 5903...)
# 启用 UFW(若未启用)
sudo ufw enable
步骤 8:客户端连接
- Windows/macOS/Linux:使用 TigerVNC Viewer、RealVNC、Remmina 等客户端
- 地址格式:
your-server-ip:1(自动映射到 5901 端口) - 输入步骤 4 中设置的 VNC 密码即可登录 XFCE 桌面。
🔒 安全增强建议(强烈推荐)
| 措施 | 命令/说明 |
|---|---|
| ✅ 强制通过 SSH 隧道访问(最安全) | ssh -L 5901:127.0.0.1:5901 user@server-ip -N,然后本地连 localhost:1(此时 VNC 端口无需对外暴露) |
| ✅ 禁用 VNC 密码明文传输(TigerVNC 本身支持加密,但需客户端启用 TLS) | 更推荐走 SSH 隧道,简单可靠 |
| ✅ 限制 IP 访问(UFW) | sudo ufw allow from 192.168.1.100 to any port 5901 |
| ✅ 禁用未使用的显示号 | systemctl --user stop vncserver@2.service && systemctl --user disable vncserver@2.service |
❌ 常见问题排查
| 现象 | 解决方法 |
|---|---|
| 黑屏 / 灰屏 / 仅显示 X cursor | 检查 ~/.vnc/xstartup 权限(chmod +x)和内容是否正确;确认 startxfce4 可执行(which startxfce4);查看日志 ~/.vnc/*.log |
| 连接被拒绝 / Connection refused | 检查 ss -tuln | grep :5901 是否监听;检查 UFW/firewalld;确认服务已 start 且无报错 |
| 登录后立即断开 | 检查 ~/.vnc/xstartup 是否以 exec 开头(必须 exec startxfce4,不能是 startxfce4 &) |
| 中文乱码 / 字体缺失 | sudo apt install -y fonts-wqy-microhei fonts-wqy-zenhei,重启 VNC |
✅ 验证成功
# 查看进程
ps aux | grep Xtigervnc
# 查看监听端口
ss -tuln | grep :5901
# 查看日志(用户家目录下)
tail -f ~/.vnc/*.log
需要我为你:
- ✅ 生成一键安装脚本(适配 Ubuntu 22.04/24.04)?
- ✅ 配置 GNOME + TigerVNC(带完整 GUI 应用支持)?
- ✅ 设置自动缩放/HiDPI/多显示器?
- ✅ 集成 NoMachine(更流畅替代方案)?
欢迎继续提问! 🌟
云知道CLOUD