Linux 安装配置 xrdp 远程桌面指南
在 Linux 上配置 xrdp 服务,核心就是安装 xrdp、配置桌面环境、启动服务这三步。需要注意,不同 Linux 发行版和桌面环境的配置略有差异,下面以最主流的 Ubuntu/Debian 系统为例,为你提供一份完整教程。
第一步:准备工作
确保已安装图形界面
如果是最小化安装的 Linux 服务器,需要先安装桌面环境(推荐轻量级的 Xfce,兼容性更好):# Ubuntu/Debian 安装 Xfce sudo apt update sudo apt install xfce4 xfce4-goodies -y更新系统并设置默认启动(可选)
如果希望系统开机直接进入图形界面:sudo systemctl set-default graphical.target
第二步:安装 xrdp 服务
xrdp 在大多数发行版的默认源中都有,直接安装即可。
Ubuntu / Debian:
sudo apt update sudo apt install xrdp -yFedora / CentOS:
sudo dnf install xrdp -yArch Linux:
sudo pacman -S xrdp
安装后,将 xrdp 用户添加到 ssl-cert 组,以解决部分权限导致的连接问题:
sudo adduser xrdp ssl-cert
第三步:配置桌面环境(关键步骤)
这是最容易出错的步骤,核心是告诉 xrdp 启动时加载哪个桌面。
1. 配置启动脚本
编辑 ~/.xsession 文件(如果没有就新建一个),写入你安装的桌面环境启动命令。
echo "xfce4-session" > ~/.xsession
2. (重要)解决黑屏问题
对于 Ubuntu 的 GNOME 或部分定制桌面,连接后容易黑屏。需要修改 xrdp 的启动脚本:
编辑 /etc/xrdp/startwm.sh:
sudo nano /etc/xrdp/startwm.sh
在 test 和 exec 等原有代码之前,添加以下两行:
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
第四步:启动与防火墙
启动服务并设置开机自启
sudo systemctl enable xrdp sudo systemctl start xrdp检查服务状态
bashsudo systemctl status xrdp # 确认看到 active (running) 字样配置防火墙
开放默认的 3389 端口(如果开启了防火墙):sudo ufw allow 3389/tcp # 如果你用的是 firewalld sudo firewall-cmd --add-port=3389/tcp --permanent sudo firewall-cmd --reload
第五步:客户端连接
获取服务器 IP
ip aWindows 客户端
按 Win + R,输入 mstsc,输入服务器 IP 地址,点击连接。在弹出的登录界面输入你的 Linux 用户名和密码即可。macOS 客户端
在 App Store 下载 Microsoft Remote Desktop,新建连接,输入 IP 和账号密码。
常见问题排查
连接后黑屏或闪退
如果出现黑屏,请检查第三步中 startwm.sh 的修改是否生效,并重启服务。sudo systemctl restart xrdp连接失败或认证错误
root 用户登录限制:默认出于安全考虑,可能禁止 root 远程登录。建议使用普通用户登录。
端口占用:确认没有其他服务占用 3389 端口。
普通用户认证弹窗
如果连接后弹出需要授权创建色彩管理设备等提示,可以创建 Polkit 规则来解决,但通常不影响使用,点击“确定”即可。
不同桌面环境的配置
通用启动脚本模板
#!/bin/sh
# 清理可能干扰的环境变量
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
# 可选:确保 PATH 包含常用路径
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# 加载系统 profile(让环境变量生效)
[ -r /etc/profile ] && . /etc/profile
# 启动桌面环境(exec 替换当前 shell)
exec 桌面启动命令
不同的桌面环境在 xrdp 启动脚本中的配置方式非常相似,核心区别在于启动命令的名称以及是否需要额外的环境准备(如 dbus、会话管理器)。以下列出常见桌面环境的典型配置方法,你可以直接将其放入 /etc/xrdp/startwm.sh(或用户级的 ~/.xsession)中。
各桌面环境的启动命令
LXQt
· 依赖:必须安装 dbus-x11(否则 dbus-launch 缺失导致启动失败)。
· 启动命令:推荐 exec startlxqt,若仍有问题,可尝试 exelxqt-session 并手动设置 XDG_RUNTIME_DIR。
· 常见问题:startlxqt 脚本中调用 dbus-launch,确保 /usr/bin/dbus-launch 存在。
LXDE
· 启动命令exec startlxde 即可。
· 特点:LXDE 对 xrdp 非常友好,几乎无需额外配置。
Xfce4
· 启动命令exec startxfce4。
· 优势:xrdp 官方文档常以 Xfce4 为例,兼容性最好。
fvwm3
· 启动命令:直接 exec fvwm3 会启动一个极简窗口管理器,通常没有任务栏/面板。需要自行在配置文件中添加面板、壁纸等。
· 环境变量:可能需要设置 DISPLAY,但 xrdp 已提供。
· 示例exec fvwm3 -f ~/.fvwm/config。
fluxbox
· 启动命令exec startfluxbox(推荐)或 exec fluxbox。
· 特点:startfluxbox 会设置 DISPLAY、SESSION_MANAGER 等变量,更符合会话标准。
关于用户级配置(~/.xsession)
如果希望不同用户使用不同桌面,可以在用户目录创建 ~/.xsession 文件,内容为上述启动命令(例如 exec startxfce4)。注意 ~/.xsession 的优先级高于系统级 /etc/xrdp/startwm.sh,因此如果该文件存在,系统脚本会被忽略