在 Ubuntu 服务器(Server)上开启图形界面(GUI),本质上是一个“安装桌面环境 + 配置远程访问”的过程。
首先要明确一个核心逻辑:Linux 服务器通常不推荐直接连接显示器使用 GUI,因为服务器需要的是高并发、低延迟和稳定性,而 GUI 会消耗大量 CPU/GPU 资源。因此,我们通常的做法是:在服务器上安装轻量级桌面环境,然后通过 VNC 或 RDP 协议远程连接进去操作。
以下是几种主流且稳定的方案,按推荐程度排序:
方案一:安装 XFCE4 桌面 + TigerVNC(最推荐,资源占用少)
XFCE4 是目前公认最适合服务器的轻量级桌面环境之一,相比 GNOME 或 KDE,它更稳定且内存占用极低。配合 TigerVNC,体验流畅。
1. 更新源并安装基础依赖
sudo apt update
sudo apt upgrade -y
2. 安装 XFCE4 桌面环境
这一步会下载较多包,请耐心等待:
sudo apt install xfce4 xfce4-goodies -y
3. 安装 VNC Server
推荐使用 tigervnc-standalone-server,比老旧的 vnc4server 性能更好:
sudo apt install tigervnc-standalone-server tigervnc-common -y
4. 设置 VNC 密码
执行以下命令,系统会提示你输入并确认 VNC 连接密码(注意:这个密码只用于 VNC 连接,与系统用户密码无关):
vncpasswd
5. 启动 VNC Server
vncserver :1
此时终端可能会报错说 Xauth file 不存在,这是正常的,忽略即可。它会返回类似 New 'X:1 (username)' desktop is username:1 的信息。
6. 验证是否成功
你可以尝试从本地电脑使用 VNC Viewer(如 RealVNC, TightVNC, TigerVNC Viewer)连接:
- 地址格式:
<服务器IP>:5901(:1对应端口 5901) - 如果看到 XFCE 桌面,说明成功。
7. 【重要】开机自启配置
默认情况下,VNC 不会随系统重启自动启动。你需要创建一个 systemd service 来实现自启。
创建服务文件:
sudo nano /etc/systemd/system/vncserver@.service
填入以下内容(注意替换 your_username 为你的实际用户名):
[Unit]
Description=Start VNC server at startup
After=syslog.target network-online.target
[Service]
Type=forking
User=your_username
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i
ExecStop=/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service
sudo systemctl start vncserver@1.service
方案二:安装 GNOME 桌面 + xrdp(适合习惯 Windows RDP 的用户)
如果你更喜欢像 Windows 那样通过“远程桌面连接”连入 Linux,可以使用 GNOME + xrdp。但请注意,GNOME 对服务器资源要求较高,不适合低配机器。
1. 安装 GNOME 桌面
sudo apt install ubuntu-desktop-minimal -y
# 或者
sudo apt install gnome-shell -y
2. 安装 xrdp
sudo apt install xrdp -y
3. 配置 xrdp 使用正确的窗口管理器
Ubuntu 22.04+ 版本中,xrdp 可能需要指定会话类型。编辑配置文件:
sudo nano /etc/xrdp/startwm.sh
在 . /etc/X11/Xsession 这一行之前,添加以下内容(防止某些环境下黑屏):
unset DBUS_SESSION_BUS_ADDRESS
export XDG_SESSION_TYPE=x11
4. 重启 xrdp 服务
sudo systemctl restart xrdp
5. 连接
使用本地的“远程桌面连接”(Windows 自带)或 Remmina(Linux/Mac)连接:
- 地址:
<服务器IP> - 端口:
3389 - 协议:RDP
关键注意事项与避坑指南
-
云安全组/防火墙放行
无论你用哪种方案,必须在云服务器控制台(阿里云、腾讯云、AWS 等)的安全组中放行相应端口:- VNC 方案:TCP
5901~5910(至少放行 5901) - RDP 方案:TCP
3389
- VNC 方案:TCP
-
关于 Wayland 的问题
Ubuntu 22.04 及更高版本默认可能使用 Wayland 显示协议,而 VNC 和 xrdp 对 Wayland 的支持并不完美(尤其是旧版客户端)。如果遇到问题,建议在登录界面选择 “GNOME on Xorg” 而不是默认的 Wayland 会话。 -
性能优化建议
- 不要安装完整桌面:避免安装
ubuntu-desktop(完整版),它包含大量不需要的软件(如 LibreOffice 套件、游戏等)。使用ubuntu-desktop-minimal或手动安装xfce4即可。 - 禁用不必要的服务:如果服务器主要用于跑代码或数据库,确保没有后台渲染进程占用 GPU/CPU。
- 不要安装完整桌面:避免安装
-
安全性提醒
- VNC 协议本身是明文传输的,不建议在互联网直连中使用。
- 最佳实践:通过 SSH 隧道转发 VNC/RDP 流量,或者使用带有加密支持的 VNC 客户端(如 TigerVNC 支持 TLS)。
- 修改 VNC 默认端口,避免被扫描攻击。
-
为什么不建议直接用
startx?
有些教程会让你运行startx来启动图形界面。这在本地物理机上可行,但在云服务器上,如果没有配置好 display manager(如 lightdm/gdm3)和 VNC 服务,startx往往只能打开一个黑屏或无法关闭的会话,不利于管理和多用户切换。因此,强烈建议使用 VNC 或 xrdp 这种基于服务的远程接入方式。
总结
- 追求轻量、稳定、低资源占用 → 选 XFCE4 + TigerVNC(方案一)。
- 追求原生体验、习惯 Windows 远程桌面 → 选 GNOME + xrdp(方案二)。
- 生产环境 → 除非必要,否则尽量保持无头(Headless)模式,通过命令行管理。GUI 仅用于调试或特殊需求。
云技术博客