在 Ubuntu 24.04(Noble Numbat)上配置远程桌面,首先需要明确一个核心概念:Linux 原生并不像 Windows 那样有一个开箱即用、体验一致的“远程桌面”服务。
通常我们说的“远程桌面”,在国内语境下主要有两种实现路径:
- XRDP:通过 RDP 协议让 Windows 自带的“远程桌面连接”直接连入 Linux。这是最接近你直觉需求的方案。
- VNC / NoMachine / RustDesk:基于 VNC 协议的第三方方案,跨平台能力强,但需要额外客户端。
鉴于大多数用户希望用 Windows 电脑直接连 Ubuntu 服务器,推荐首选 XRDP。以下是基于 Ubuntu 24.04 的最小化安装和配置步骤,以及避坑指南。
一、 为什么不建议直接用 xrdp 官方源?
Ubuntu 24.04 的默认软件源中,xrdp 的版本可能较旧,或者与 GNOME 46+ 桌面环境存在兼容性问题(如黑屏、闪退)。因此,更稳妥的做法是使用社区维护较好的 PPA 或手动编译,但对于大多数生产环境,先尝试官方源,若不行再换源是最高效的策略。
二、 标准安装步骤(XRDP + GNOME)
1. 更新系统并安装依赖
打开终端,执行以下命令确保基础环境最新:
sudo apt update
sudo apt upgrade -y
2. 安装 xrdp
sudo apt install xrdp -y
3. 配置防火墙
Ubuntu 24.04 默认启用 ufw。如果开启了防火墙,需放行 3389 端口:
sudo ufw allow 3389/tcp
sudo ufw reload
注意:如果是云服务器(阿里云、腾讯云等),务必在云控制台的“安全组”规则中添加入方向规则,允许 TCP 3389 端口访问。
4. 启动并设置开机自启
sudo systemctl enable xrdp
sudo systemctl start xrdp
sudo systemctl status xrdp
5. 关键配置:解决“黑屏”问题(重要!)
Ubuntu 24.04 默认使用 GNOME 桌面。GNOME 对多会话并发支持较差,直接登录 XRDP 容易导致主会话被踢出或黑屏。我们需要修改 Xsession 脚本以适配 XRDP。
编辑 /etc/xrdp/startwm.sh:
sudo nano /etc/xrdp/startwm.sh
在文件末尾 test -x /etc/X11/Xsession 这一行之前,添加以下内容:
# 针对 GNOME 桌面的兼容性修复
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
exec /etc/X11/Xsession
保存退出(Ctrl+O, Enter, Ctrl+X)。
然后重启 xrdp 服务:
sudo systemctl restart xrdp
6. 连接测试
- Windows 端:打开“远程桌面连接” (mstsc),输入 Ubuntu 服务器的 IP 地址。
- 登录界面:选择 “Xorg” 模式(不要选 VNC),输入用户名和密码。
三、 常见问题与高级优化
问题 1:登录后黑屏或立即断开
这是最常见的问题。原因通常是 GNOME Shell 与 XRDP 的图形栈冲突。
解决方案 A:切换轻量级桌面环境(推荐用于纯服务器)
如果你不需要复杂的 GUI,建议安装 XFCE 桌面,它比 GNOME 更稳定且资源占用低。
sudo apt install xfce4 xfce4-goodies
然后在 /etc/xrdp/xrdp.ini 中,将默认的 session=XRDP 改为 session=XFCE,或者在登录界面选择 XFCE 会话。
解决方案 B:禁用 GNOME 扩展
某些 GNOME 扩展(如动态工作区、暗色主题)会导致 XRDP 崩溃。可以尝试在首次登录前,通过 SSH 进入系统,运行:
gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita'
gsettings set org.gnome.shell.extensions.dash-to-dock dock-fixed false
问题 2:分辨率自适应
XRDP 默认可能不支持高分辨率自动适配。
解决方案:
在 Windows 远程桌面客户端中,点击“显示选项”,手动调整分辨率为你需要的比例。或者在 Ubuntu 服务器上安装 xf86-video-fbdev 驱动辅助图形渲染。
问题 3:安全性加固(必须做!)
XRDP 默认使用明文传输密码,极不安全。强烈建议采取以下措施之一:
-
强制使用 TLS 加密:
编辑/etc/xrdp/xrdp.ini,确保以下行存在:ssl_security=1 tls_ciphers=HIGH certificate=/etc/ssl/private/xrdp.pem key_file=/etc/ssl/private/xrdp.key如果没有证书,可以先生成自签名证书:
sudo openssl req -x590 -newkey rsa:2048 -nodes -keyout /etc/ssl/private/xrdp.key -out /etc/ssl/private/xrdp.pem -days 3650 sudo chmod 600 /etc/ssl/private/xrdp.* sudo systemctl restart xrdp -
禁止 root 直接登录:
编辑/etc/xrdp/sesman.ini,找到[Security]部分,确保:allow_root_login=false max_logins_per_user=0 -
使用 Fail2ban 防护暴力破解:
sudo apt install fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 在 jail.local 中添加 xrdp 规则 echo "[xrdp]" >> /etc/fail2ban/jail.local echo "enabled = true" >> /etc/fail2ban/jail.local echo "port = 3389" >> /etc/fail2ban/jail.local echo "filter = xrdp" >> /etc/fail2ban/jail.local echo "logpath = /var/log/auth.log" >> /etc/fail2ban/jail.local echo "maxretry = 3" >> /etc/fail2ban/jail.local sudo systemctl restart fail2ban
四、 替代方案:如果 XRDP 始终不稳定
如果你的场景对稳定性要求极高,或者需要更好的图形性能(如设计、视频剪辑),建议使用以下替代方案:
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| NoMachine | 性能极佳,支持 GPU 提速,延迟低 | 商业软件,免费版有设备限制 | 高性能图形需求 |
| RustDesk | 开源,自建中继服务器,穿透能力强 | 需要额外搭建服务端 | XX、异地办公 |
| VNC (TigerVNC) | 简单,无需复杂配置 | 速度慢,无压缩,安全性差 | 临时调试 |
| Jupyter Notebook | Web 界面,适合数据科学 | 非完整桌面环境 | 开发、数据分析 |
五、 总结建议
- 首选 XRDP + GNOME,按上述步骤配置,重点处理
startwm.sh的黑屏问题。 - 若追求稳定,改用 XFCE 桌面 + XRDP。
- 务必开启 SSL/TLS 加密,并配置防火墙和白名单 IP。
- 云服务器用户:记得在云平台安全组和 OS 内部防火墙双重放行 3389 端口。
最后提醒:远程桌面会消耗较多 CPU 和内存资源。对于纯后端服务(Web 服务器、数据库等),强烈建议仅通过 SSH 进行管理,避免安装图形界面带来的安全风险和资源浪费。
云技术博客