在 Linux 上配置 xrdp 服务,核心就是安装 xrdp、配置桌面环境、启动服务这三步。需要注意,不同 Linux 发行版和桌面环境的配置略有差异,下面以最主流的 Ubuntu/Debian 系统为例,为你提供一份完整教程。

第一步:准备工作

  1. 确保已安装图形界面
    如果是最小化安装的 Linux 服务器,需要先安装桌面环境(推荐轻量级的 Xfce,兼容性更好):

    # Ubuntu/Debian 安装 Xfce
    sudo apt update
    sudo apt install xfce4 xfce4-goodies -y
    
  2. 更新系统并设置默认启动(可选)
    如果希望系统开机直接进入图形界面:

    sudo systemctl set-default graphical.target
    

第二步:安装 xrdp 服务

xrdp 在大多数发行版的默认源中都有,直接安装即可。

  • Ubuntu / Debian:

    sudo apt update
    sudo apt install xrdp -y
    
  • Fedora / CentOS:

    sudo dnf install xrdp -y
    
  • Arch 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

第四步:启动与防火墙

  1. 启动服务并设置开机自启

    sudo systemctl enable xrdp
    sudo systemctl start xrdp
    
  2. 检查服务状态
    bash

    sudo systemctl status xrdp
    # 确认看到 active (running) 字样
    
  3. 配置防火墙
    开放默认的 3389 端口(如果开启了防火墙):

    sudo ufw allow 3389/tcp
    # 如果你用的是 firewalld
    sudo firewall-cmd --add-port=3389/tcp --permanent
    sudo firewall-cmd --reload
    

第五步:客户端连接

  1. 获取服务器 IP

    ip a
    
  2. Windows 客户端
    按 Win + R​,输入 mstsc​,输入服务器 IP 地址,点击连接。在弹出的登录界面输入你的 Linux 用户名和密码即可。

  3. macOS 客户端
    在 App Store 下载 ​Microsoft Remote Desktop​,新建连接,输入 IP 和账号密码。

常见问题排查

  1. 连接后黑屏或闪退
    如果出现黑屏,请检查第三步中 startwm.sh​ 的修改是否生效,并重启服务。

    sudo systemctl restart xrdp
    
  2. 连接失败或认证错误

    • ​root 用户登录限制​:默认出于安全考虑,可能禁止 root 远程登录。建议使用普通用户登录。

    • ​端口占用​:确认没有其他服务占用 3389 端口。

  3. 普通用户认证弹窗
    如果连接后弹出需要授权创建色彩管理设备等提示,可以创建 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​)中。

  • 各桌面环境的启动命令

  1. LXQt

· 依赖:必须安装 dbus-x11​(否则 dbus-launch 缺失导致启动失败)。
· 启动命令:推荐 exec startlxqt​,若仍有问题,可尝试 exelxqt-session​ 并手动设置 XDG_RUNTIME_DIR​。
· 常见问题:startlxqt 脚本中调用 dbus-launch​,确保 /usr/bin/dbus-launch​ 存在。

  1. LXDE

· 启动命令exec startlxde​ 即可。
· 特点:LXDE 对 xrdp 非常友好,几乎无需额外配置。

  1. Xfce4

· 启动命令exec startxfce4​
· 优势:xrdp 官方文档常以 Xfce4 为例,兼容性最好。

  1. fvwm3

· 启动命令:直接 exec fvwm3​ 会启动一个极简窗口管理器,通常没有任务栏/面板。需要自行在配置文件中添加面板、壁纸等。
· 环境变量:可能需要设置 DISPLAY,但 xrdp 已提供。
· 示例exec fvwm3 -f ~/.fvwm/config​

  1. fluxbox

· 启动命令exec startfluxbox​(推荐)或 exec fluxbox​
· 特点:startfluxbox 会设置 DISPLAY​、SESSION_MANAGER​ 等变量,更符合会话标准。


  • 关于用户级配置(~/.xsession)

如果希望不同用户使用不同桌面,可以在用户目录创建 ~/.xsession​ 文件,内容为上述启动命令(例如 exec startxfce4​)。注意 ~/.xsession​ 的优先级高于系统级 /etc/xrdp/startwm.sh​,因此如果该文件存在,系统脚本会被忽略