在腾讯云(以及大多数国内云厂商)上,Ubuntu 服务器默认是没有图形化桌面环境的。因为出于成本和性能的考虑,云服务器通常只安装最小化的系统镜像(Minimal Image),连 GUI 库都没装,更别提桌面环境了。
要想通过远程工具看到 Ubuntu 的“桌面”,核心逻辑其实分两步走:
- 在服务器上搭建一个轻量级的远程桌面服务(比如 VNC 或 RDP)。
- 配置安全组和网络策略,允许外部访问该端口。
下面我以目前最稳定、兼容性最好的 xrdp (RDP协议) 方案为主进行讲解,顺便提一下 VNC 方案作为备选。
方案一:使用 xrdp 实现 Windows 远程桌面连接(推荐)
这是最接近原生体验的方案,你可以直接用 Windows 自带的“远程桌面连接”或者 Mac 上的 Microsoft Remote Desktop 来连接,带宽占用低,延迟相对可控。
第一步:登录服务器并更新源
首先通过 SSH 登录到你的 Ubuntu 实例(可以用腾讯云的 WebSSH 或者本地终端)。
sudo apt update && sudo apt upgrade -y
第二步:安装桌面环境(关键步骤)
很多教程到这里就让你装 xrdp,结果报错说找不到 Xorg 或依赖缺失。必须先装桌面环境。如果你只需要基础功能,装 ubuntu-desktop-minimal 就够了,别装完整的 ubuntu-desktop,那玩意儿几十 GB,浪费资源且启动慢。
# 安装基础桌面环境
sudo apt install ubuntu-desktop-minimal -y
# 如果上面命令卡住或失败,可能是依赖问题,可以尝试先安装 xorg
sudo apt install xorg openbox -y
注意:这一步可能会下载几百 MB 到几 GB 的数据,取决于你初始镜像是否带了部分组件。请耐心等待。
第三步:安装 xrdp
sudo apt install xrdp -y
第四步:配置 xrdp 和用户权限
安装完成后,需要把当前用户加入 ssl-cert 组,否则可能无法启动或连接黑屏。假设你的用户名是 ubuntu(腾讯云默认用户):
sudo adduser xrdp ssl-cert
sudo systemctl enable xrdp
sudo systemctl start xrdp
检查状态是否正常:
systemctl status xrdp
第五步:配置防火墙/安全组
这是新手最容易踩坑的地方。
-
服务器内部防火墙(UFW):
Ubuntu 默认可能开启了 UFW。如果开启了,放行 3389 端口:sudo ufw allow 3389/tcp -
腾讯云控制台安全组:
登录腾讯云控制台 -> 找到你的 CVM 实例 -> 点击“安全组”标签页。
确保有一条入站规则允许 TCP 协议的 3389 端口,来源可以是0.0.0.0/0(即所有 IP,生产环境建议限制为你自己的固定 IP)。
第六步:连接测试
打开你本地的 Windows 电脑,按 Win + R,输入 mstsc,回车。
- 主机地址:填写你的腾讯云公网 IP。
- 端口:3389。
- 点击连接。
此时会弹出 xrdp 的登录界面,输入你在 Ubuntu 上设置的用户名和密码即可进入桌面。
方案二:使用 VNC 方案(适合无头服务器或调试)
如果你不想安装庞大的 RDP 堆栈,或者只是偶尔需要看一眼图形界面,VNC 更简单,但体验较差(画质压缩高,操作有延迟,不支持剪贴板双向同步等)。
-
安装桌面和 VNC Server:
sudo apt install ubuntu-desktop-minimal tightvncserver -y -
初始化 VNC 密码:
vncpasswd设置一个密码(注意 VNC 密码最长 8 位)。
-
启动 VNC Server:
vncserver :1这会创建一个显示号为
:1的服务,监听端口通常是5901。 -
配置安全组:
同样需要在腾讯云控制台开放 TCP 5901 端口。 -
连接:
下载 RealVNC Viewer 或 TigerVNC Viewer。
地址填写:你的公网IP:5901。
常见坑点与避坑指南
-
登录后黑屏或闪退:
- 原因:xrdp 默认尝试复用当前用户的 Xsession,但如果用户已经通过其他终端登录过,或者配置文件冲突,会导致黑屏。
- 解决:编辑
/etc/xrdp/startwm.sh,在. /etc/X11/Xsession前面加上注释,或者修改为启动一个干净的窗口管理器(如 openbox)。更简单的办法是重启 xrdp 服务:sudo systemctl restart xrdp。
-
分辨率自适应问题:
- xrdp 默认分辨率可能很低。你可以在 Windows 远程桌面客户端的属性中,将“显示器”设置为“全屏幕”或指定高分辨率,连接后调整。
-
性能瓶颈:
- 云服务器跑图形界面非常吃 CPU 和内存。如果你的实例配置较低(如 1核 1G),开桌面会非常卡顿,甚至 OOM(内存溢出)。建议至少 2核 4G 起步。
- 尽量关闭不必要的后台服务,避免同时运行 Docker、数据库和图形界面。
-
安全性警告:
- 强烈不建议将 RDP/VNC 端口直接暴露给
0.0.0.0/0长期运行。黑客扫描 3389 和 5901 端口是常态。 - 最佳实践:使用腾讯云堡垒机(Cloud Bastion Host)进行跳转访问,或者通过 SSH 隧道映射本地端口到服务器的 3389/5901。
# SSH 隧道示例(本地执行) ssh -L 3389:localhost:3389 user@your_server_ip这样你只需连接本地 3389,流量会被加密并通过 SSH 通道转发到服务器,无需开放公网端口。
- 强烈不建议将 RDP/VNC 端口直接暴露给
总结
对于日常开发、测试或临时查看日志,xrdp + 安全组开放 3389 是最平衡的方案。如果追求极致安全和XX,结合 SSH 隧道 + xrdp 是专业运维的标准做法。记住,云服务器不是台式机,图形界面主要用于应急或特定软件兼容需求,日常运维还是命令行更高效。
云技术博客