本文档旨在帮助你在 Ubuntu 服务器上搭建稳定、快速的图形化远程桌面环境。为了避免 Ubuntu 默认 GNOME 桌面在远程连接下的性能问题及黑屏 bug,我们推荐使用 XFCE 轻量级桌面环境。
1. 基础安装 (Installation)
首先更新系统并安装核心组件:XRDP 服务和 XFCE 桌面环境。
Bash
bash
# 更新软件源
sudo apt update
# 安装 XRDP 和 XFCE
sudo apt install xrdp xfce4 xfce4-goodies -y
# 安装 dbus-x11 (至关重要:修复 "Unable to contact settings server" 报错)
sudo apt install dbus-x11 -y
配置权限与防火墙
确保 xrdp 用户有权读取 SSL 证书,并开放远程端口。
Bash
bash
# 添加用户到 ssl-cert 组
sudo adduser xrdp ssl-cert
# 重启服务
sudo systemctl restart xrdp
# 开放防火墙端口 (3389)
sudo ufw allow 3389/tcp
2. 用户配置 (User Configuration)
建议创建一个专用的远程用户,并强制其使用 XFCE 桌面,以避免干扰主系统的桌面环境。
创建用户
Bash
bash
sudo adduser rdpuser
# 按提示设置密码
强制该用户使用 XFCE
这是防止"黑屏"或"连接后立即断开"的关键步骤。
Bash
bash
# 切换到用户目录并创建配置文件
echo xfce4-session | sudo tee /home/rdpuser/.xsession
# 修正文件权限
sudo chown rdpuser:rdpuser /home/rdpuser/.xsession
3. 故障排除 (Troubleshooting)
如果你在连接时遇到问题,请检查以下常见报错及修复方案。
🔴 报错:Unable to contact settings server (dbus-launch)
现象:登录后弹窗报错,提示找不到 dbus-launch,界面显示不全。
原因:缺少 D-Bus X11 组件。
修复:
Bash
sudo apt install dbus-x11 -y
sudo systemctl restart xrdp
⚫ 现象:黑屏或连接后立即断开
原因 1:Ubuntu 22.04/24.04 自带的 gnome-remote-desktop 占用了 3389 端口。
修复:
Bash
bash
sudo systemctl disable --now gnome-remote-desktop
sudo systemctl restart xrdp
原因 2:XRDP 启动脚本缺少环境变量。
修复:
编辑 /etc/xrdp/startwm.sh:
Bash
bash
sudo nano /etc/xrdp/startwm.sh
在文件头部(#!/bin/sh 之后)添加以下两行:
Bash
bash
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
🔒 现象:频繁弹出 "Authentication Required" (Color Profile)
原因:权限策略限制。
修复:
创建策略文件 /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla 并写入:
Ini, TOML
ini
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=yes
ResultInactive=yes
ResultActive=yes
4. 代理配置 (Proxy Settings)
在内网或受限网络环境下,你可能需要配置代理。
系统级代理 (System-Wide)
编辑 /etc/environment 文件:
Bash
ini
http_proxy="http://proxy.example.com:8080/"
https_proxy="http://proxy.example.com:8080/"
no_proxy="localhost,127.0.0.1,::1"
保存后重启系统生效。
Google Chrome 代理设置
Chrome 在 Linux 下通常不自带代理设置界面。
方法 A:临时命令行启动 (测试用)
Bash
ini
google-chrome --proxy-server="http://proxy.example.com:8080"
方法 B:永久修改快捷方式
编辑 Chrome 的桌面启动文件 /usr/share/applications/google-chrome.desktop,找到 Exec= 行并修改:
Ini, TOML
ini
Exec=/usr/bin/google-chrome-stable --proxy-server="http://proxy.example.com:8080" %U
方法 C:使用插件 (推荐)
在 Chrome 中安装 Proxy SwitchyOmega 插件,这是管理浏览器代理最灵活的方式。
5. 浏览器 Input/Output Error 提示
如果你在点击默认浏览器时看到 Failed to execute default Web Browser: Input/output error:
- 原因:Ubuntu 默认的 Firefox 是 Snap 版本,Snap 包在 XRDP 环境下经常无法启动。
- 解决 :建议安装
.deb版本的 Google Chrome 或非 Snap 版本的浏览器。
Bash
bash
# 下载并安装 Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb -y
下一步建议
配置完成后,建议重启一次服务器 (sudo reboot) 以确保所有权限组和环境变量彻底生效。之后即可使用 Windows 远程桌面或 macOS Microsoft Remote Desktop 进行连接。123