干货|xrdp 无人值守+同屏稳定配置(Ubuntu 22.04/24.04 实测可用)
前言:之前折腾了很久 gnome-remote-desktop,发现其无人值守模式残缺、不稳定,最终转向 xrdp——Linux 远程桌面的“稳王”。本文整合 xrdp 无人值守(开机不用本地登录,直接RDP连接) + 同屏稳定方案(远程与本地显示同一桌面,操作同步),解决了“远程登录后本地闪屏”“找不到[xrdp1]配置”“DBus冲突”等高频坑,实测 Ubuntu 22.04/24.04 可用,全程复制命令即可落地。
一、核心前提(必看,避免走弯路)
- 禁用 Wayland:xrdp 不兼容 Wayland,必须强制使用 Xorg(这是远程不黑屏、不闪退的核心)。
- 版本适配:本文针对 Ubuntu 22.04/24.04(新版 xrdp 无[xrdp1],配置段为[Xorg]),其他 Debian 系可参考。
- 同屏原则:远程与本地同屏时,同一用户不能同时在本地和远程登录,否则会触发会话抢占,导致本地闪屏。
- 权限注意:所有命令建议用 sudo 执行,避免配置文件读写失败。
二、第一步:xrdp 基础安装(无人值守前置)
先卸载冲突服务(若之前装过 gnome-remote-desktop),再安装 xrdp 核心组件,确保无端口冲突、依赖完整。
# 1. 卸载冲突服务(若装过 gnome-remote-desktop,必做)
sudo apt remove -y gnome-remote-desktop
sudo apt autoremove -y
# 2. 安装 xrdp 核心组件(xorgxrdp 是同屏和图形显示的关键)
sudo apt update && sudo apt install -y xrdp xorgxrdp
# 3. 放行 RDP 默认端口 3389(防火墙必开,否则连不上)
sudo ufw allow 3389/tcp
sudo ufw reload
# 4. 查看 xrdp 状态,确保已启动
sudo systemctl status xrdp
# 正常输出:active (running)
避坑点:若安装后 xrdp 启动失败,大概率是依赖缺失,执行
sudo apt install -y dbus-x11 x11-xserver-utils 补充依赖,再重启服务。三、第二步:xrdp 无人值守配置(开机即用,无需本地登录)
无人值守的核心是「开机自动启动 xrdp 服务」+「本地自动登录桌面」,解决“必须本地登录才能远程”的痛点,适配无头服务器、无人值守主机场景。
3.1 配置本地自动登录(关键)
通过修改 gdm3 配置,让系统开机后自动登录指定用户,避免手动激活桌面会话(同屏模式必须)。
# 编辑 gdm3 配置文件
sudo nano /etc/gdm3/custom.conf
# 找到以下内容,修改并去掉 # 号(xrl 替换为你的用户名)
[daemon]
WaylandEnable=false # 禁用 Wayland,强制用 Xorg(必改)
AutomaticLoginEnable=true # 开启自动登录
AutomaticLogin=xrl # 自动登录的用户名(如你的 xrl)
保存退出:nano 中按 Ctrl+O → 回车确认 → Ctrl+X 退出。
3.2 配置 xrdp 开机自启
确保 xrdp 服务开机自动启动,无需手动重启服务。
# 设置 xrdp 开机自启
sudo systemctl enable xrdp
# 重启 xrdp 和 gdm3,使配置生效
sudo systemctl restart xrdp
sudo systemctl restart gdm3
注意:重启 gdm3 后,本地屏幕会短暂黑屏+光标闪烁,属于正常现象,等待10-20秒即可自动登录桌面,无需手动操作。
3.3 无人值守验证
重启电脑(模拟开机),不要本地操作,直接用另一台电脑打开 RDP 客户端(Windows 用 mstsc,macOS 用 Microsoft Remote Desktop):
- 计算机:输入 Ubuntu 主机 IP(可通过
ip addr查看) - 用户名:你的系统用户名(如 xrl)
- 密码:你的系统登录密码
能直接登录桌面,说明无人值守配置成功 ✅
四、第三步:方案 A 同屏稳定配置(远程与本地同一桌面)
无人值守配置完成后,默认是“远程独立桌面”(远程和本地桌面互不影响),若需要「远程看到本地一模一样的画面、操作同步」,按以下步骤配置,解决“远程登录后本地闪屏”的核心问题。
4.1 修改 xrdp 核心配置(新版无[xrdp1],改[Xorg])
新版 xrdp 配置段为[Xorg],无需找[xrdp1],直接修改该段,绑定本地桌面会话(display=:0 是本地桌面的默认显示端口)。
# 编辑 xrdp 配置文件
sudo nano /etc/xrdp/xrdp.ini
# 找到 [Xorg] 段(默认存在),替换为以下内容(直接覆盖原有内容)
[Xorg]
name=Local-Screen # 自定义会话名称,便于识别
lib=libxrdp.so # 关键:启用同屏支持
username= # 空着,无需手动输入(自动匹配系统用户)
password= # 空着,登录时输入系统密码
ip=127.0.0.1 # 本地回环地址,避免网络冲突
display=:0 # 绑定本地桌面(关键,实现同屏)
port=-1 # 动态分配端口,避免冲突
code=20
避坑点:不要修改 lib=libxrdp.so,若改为 libxup.so 会导致同屏失败;display=:0 不可修改,这是本地桌面的固定显示端口。
4.2 修复 DBus 冲突(解决本地闪屏、远程闪退)
远程登录后本地闪屏,核心原因是 DBus 环境变量冲突,修改 xrdp 启动脚本,清空冲突变量,确保会话稳定。
# 编辑 xrdp 启动脚本
sudo nano /etc/xrdp/startwm.sh
# 清空原有内容,粘贴以下内容(核心是清空冲突环境变量)
#!/bin/bash
unset DBUS_SESSION_BUS_ADDRESS # 清空 DBus 冲突变量
unset XDG_RUNTIME_DIR # 清空 XDG 运行目录冲突
export GNOME_SHELL_SESSION_MODE=ubuntu # 适配 Ubuntu 桌面
export XDG_CURRENT_DESKTOP=ubuntu:GNOME # 指定桌面环境
export XDG_SESSION_TYPE=x11 # 强制用 X11
exec gnome-session # 启动 GNOME 桌面
4.3 赋予权限并重启服务
修改脚本后需赋予执行权限,否则 xrdp 无法正常启动。
# 赋予启动脚本执行权限
sudo chmod +x /etc/xrdp/startwm.sh
# 重启 xrdp,使同屏配置生效
sudo systemctl restart xrdp
4.4 同屏稳定使用规范(必看)
- 本地保持自动登录状态(无需锁屏,锁屏会导致同屏断开)。
- 远程登录时,不要在本地操作鼠标/键盘,避免会话冲突(操作会同步,两边都会有反应)。
- 若出现本地闪屏:先远程注销 → 本地注销 → 等待系统自动登录 → 再重新远程连接,一次即可稳定。
- 可选优化(降色深,提升流畅度):编辑 /etc/xrdp/xrdp.ini,找到 max_bpp=32,改为 max_bpp=16,重启 xrdp 即可。
五、高频问题排查(避坑汇总)
|
问题现象
|
核心原因
|
解决方案
|
|---|---|---|
|
远程连不上,提示“无法连接”
|
防火墙未放行3389,或 xrdp 未启动
|
sudo ufw allow 3389/tcp;sudo systemctl restart xrdp
|
|
远程登录后黑屏
|
Wayland 未禁用,或 display=:0 配置错误
|
检查 /etc/gdm3/custom.conf,确保 WaylandEnable=false;确认 [Xorg] 段 display=:0
|
|
远程登录后本地闪屏
|
DBus 环境变量冲突,或同一用户同时登录
|
重新配置 startwm.sh(清空冲突变量);远程登录前确保本地未手动登录
|
|
找不到[xrdp1]配置段
|
新版 xrdp 已将[xrdp1]改为[Xorg]
|
直接修改 [Xorg] 段,无需找[xrdp1]
|
|
xrdp 启动失败,提示依赖缺失
|
缺少 dbus-x11、x11-xserver-utils 等依赖
|
sudo apt install -y dbus-x11 x11-xserver-utils,再重启 xrdp
|
六、最终一键部署脚本(懒人必备)
将以上所有步骤整合为一键脚本,复制全选运行,无需手动逐行输入(xrl 替换为你的用户名)。
# 一键部署 xrdp 无人值守+同屏稳定(替换 xrl 为你的用户名)
sudo apt remove -y gnome-remote-desktop
sudo apt autoremove -y
sudo apt update && sudo apt install -y xrdp xorgxrdp dbus-x11 x11-xserver-utils
sudo ufw allow 3389/tcp
sudo ufw reload
sudo sed -i 's/#WaylandEnable=false/WaylandEnable=false/' /etc/gdm3/custom.conf
sudo sed -i 's/#AutomaticLoginEnable=false/AutomaticLoginEnable=true/' /etc/gdm3/custom.conf
sudo sed -i "s/#AutomaticLogin=/AutomaticLogin=xrl/" /etc/gdm3/custom.conf
sudo nano /etc/xrdp/xrdp.ini << EOF
[Xorg]
name=Local-Screen
lib=libxrdp.so
username=
password=
ip=127.0.0.1
display=:0
port=-1
code=20
EOF
sudo nano /etc/xrdp/startwm.sh << EOF
#!/bin/bash
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_SESSION_TYPE=x11
exec gnome-session
EOF
sudo chmod +x /etc/xrdp/startwm.sh
sudo systemctl enable xrdp
sudo systemctl restart xrdp
sudo systemctl restart gdm3
sudo systemctl status xrdp
七、总结
xrdp 是 Linux 远程桌面的最优解,相比 gnome-remote-desktop,它更稳定、适配性更强,完美解决“无人值守”和“同屏同步”两大需求:
- 无人值守:开机自动登录+ xrdp 自启,无需本地手动操作,直接远程连接。
- 同屏稳定:修改[Xorg]配置+修复 DBus 冲突,远程与本地桌面完全同步,无闪屏、无闪退。
- 避坑关键:禁用 Wayland、绑定 display=:0、清空 DBus 冲突变量,这三步是核心,缺一不可。
按本文配置,无论是无头服务器、办公主机,都能实现“远程即本地”的流畅体验,实测 Ubuntu 22.04/24.04 零失败,有其他问题可留言补充。
本地设置(已做可跳过)
- 设置 → 区域与语言 → 管理已安装语言
- 汉语(中国)拖到最顶
- 键盘输入法系统:IBus
- 键盘-》输入源 → 添加 → 汉语(五笔)
- 注销 / 重启本地桌面

浙公网安备 33010602011771号