在云服务器(如阿里云、腾讯云、AWS 等)上安装 Ubuntu Desktop 图形界面后,通过 VNC 连接需要完成桌面环境安装、VNC 服务端配置、防火墙设置以及客户端连接四个关键步骤。以下是详细操作指南:
✅ 一、前提条件
- 已创建 Ubuntu 实例(建议 Ubuntu 20.04/22.04 LTS)
- 已安装 SSH 访问权限
- 已安装桌面环境(如 GNOME、XFCE 等,推荐 XFCE 以节省资源)
📦 二、安装轻量级桌面环境(推荐 XFCE)
GNOME 较臃肿,XFCE 更适合云环境
sudo apt update && sudo apt upgrade -y
sudo apt install xfce4 xfce4-goodies -y
可选:安装 VNC 服务端(tigervnc-server)
sudo apt install tigervnc-standalone-server tigervnc-common -y
🔧 三、配置 VNC 服务
1. 设置 VNC 登录密码
vncpasswd
# 输入两次密码(可设短密码便于测试,生产环境请强密码)
# 注意:该密码仅用于 VNC 登录,与系统用户密码不同
2. 启动 VNC 会话(首次运行需指定显示号)
vncserver :1
# 会生成 ~/.vnc/ 目录及 config 文件
# 默认监听端口:5900 + 显示号 = 5901
3. 修改 VNC 配置文件(可选但推荐)
编辑 ~/.vnc/config(若不存在则新建):
localhost=1 # 禁止远程直接连到本地 socket(安全)
geometry=1920x1080 # 分辨率
depth=24 # 颜色深度
desktop=XFCE4 # 桌面名称
💡 提示:
localhost=1表示 VNC 只监听本地回环,需配合 SSH 隧道使用(更安全),见下文“安全连接方式”。
4. 设置开机自启(可选)
创建 systemd 服务:
sudo nano /etc/systemd/system/vncserver@.service
内容示例:
[Unit]
Description=Start TigerVNC server at startup
After=network.target
[Service]
Type=forking
User=ubuntu
Group=ubuntu
ExecStart=/usr/bin/vncserver :%i -geometry 1920x1080 -depth 24
ExecStop=/usr/bin/vncserver -kill :%i
Restart=on-failure
[Install]
WantedBy=multi-user.target
启用并启动:
sudo systemctl enable vncserver@1.service
sudo systemctl start vncserver@1.service
🔒 四、安全连接方式(强烈推荐!)
⚠️ 不要直接开放 5900+ 端口到公网!
云服务器应通过 SSH 隧道 转发 VNC 流量,避免暴露明文密码和图形数据。
方法 A:SSH 隧道 + VNC 客户端
-
在本地终端建立隧道:
ssh -L 5901:localhost:5901 ubuntu@<云服务器公网IP>将
<云服务器公网IP>替换为实际 IP;保持该窗口开启 -
用 VNC 客户端连接
localhost:5901- Windows:可用 RealVNC Viewer、TigerVNC Viewer
- macOS:Built-in Screen Sharing 或 RealVNC
- Linux:
vncviewer localhost:5901
方法 B:使用 NoMachine / Apache Guacamole(进阶)
- NoMachine:性能更好,支持加密,适合长期运维
- Guacamole:基于 HTML5,无需客户端,通过浏览器访问(需额外部署)
🌐 五、若必须直连(不推荐,仅限测试)
-
修改
/etc/vnc/xstartup确保启动 XFCE:echo "startxfce4 &" | tee ~/.vnc/xstartup chmod +x ~/.vnc/xstartup -
重启 VNC:
vncserver -kill :1 vncserver :1 -
在云平台控制台 开放安全组规则:
- 入方向:TCP 5901(对应
:1) - 来源:仅允许你的 IP(切勿设为
0.0.0.0/0)
- 入方向:TCP 5901(对应
-
客户端连接:
<公网IP>:5901
❗ 风险:VNC 无加密,密码明文传输,易被嗅探;仅用于临时调试。
🧪 六、验证与常见问题
| 问题 | 解决方案 |
|---|---|
| 连接后黑屏/闪退 | 检查 ~/.vnc/xstartup 是否包含 startxfce4;确认 vncpasswd 已设密 |
| 无法启动 VNC | 查看日志:cat ~/.vnc/*.log;确保端口未被占用:netstat -tlnp | grep 5901 |
| 分辨率不对 | 修改 ~/.vnc/config 中的 geometry,重启 VNC |
| 中文乱码 | 安装字体:sudo apt install fonts-wqy-microhei fonts-wqy-zenhei |
✅ 最佳实践总结
- ✔️ 优先使用 SSH 隧道 连接 VNC(安全)
- ✔️ 选择 XFCE 而非 GNOME(省资源)
- ✔️ 定期更新系统:
sudo apt update && sudo apt upgrade - ✔️ 生产环境禁用
localhost=1时务必绑定特定 IP 或加防火墙限制
需要我提供一键脚本自动化上述流程,或指导如何迁移到更现代的替代方案(如 XRDP + RDP)吗?
PHPWP博客