1.xrdp 简介

xrdp 是一个开源的远程桌面协议 (RDP) 服务器,允许用户通过 RDP 客户端(如 Windows 自带的远程桌面连接、Remmina 等)远程访问运行 Linux 的计算机桌面环境。

核心特点

a.RDP 协议支持:

  • 与 Windows 的远程桌面连接 (mstsc) 完全兼容。
  • 无需额外安装客户端即可从 Windows 远程连接 Linux 系统。

b.多种后端支持:

  • 支持通过 Xorg(标准 X11 服务器)、Xvnc、或其他后端连接到 Linux 图形桌面。
  • 可兼容多种桌面环境,如 GNOME、KDE、Xfce 等。

c.轻量级和高性能:

  • 占用资源少,适用于低性能设备或虚拟机。
  • 提供压缩和优化的网络流量支持,适合远程办公和管理。

d.跨平台支持:

  • 客户端可以运行在 Windows、macOS 和 Linux 上,只需支持 RDP 协议即可。

e.多用户支持:

  • 支持多个用户同时登录不同的会话(需正确配置 Linux 用户权限)。

工作原理

  • xrdp 服务运行在服务器端,并监听默认的 RDP 端口(3389)。
  • 当客户端发起连接时,xrdp 使用 RDP 协议将用户请求转换为 Linux 下图形界面会话。
  • 后端可配置为使用 Xorg、Xvnc 或其他显示协议,将会话流发送给 xrdp,完成远程桌面显示。

2.安装与使用

a.安装(以 Debian 11 为例):

sudo apt update
sudo apt install xrdp -y

b.启动服务:

sudo systemctl enable xrdp
sudo systemctl start xrdp

3.常见问题

证书错误

[20241203-01:50:44] [ERROR] Cannot read private key file /etc/xrdp/key.pem: Permission denied

如果日志文件“/var/log/xrdp.log”见到以上错误,可尝试使用如下命令解决:

sudo adduser xrdp ssl-cert

黑屏问题

vim /etc/xrdp/startwm.sh

加入如下两行“unset”配置

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

修改后文件内容如下:

#!/bin/sh
# xrdp X session start script (c) 2015, 2017, 2021 mirabilos
# published under The MirOS Licence

# Rely on /etc/pam.d/xrdp-sesman using pam_env to load both
# /etc/environment and /etc/default/locale to initialise the
# locale and the user environment properly.

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

if test -r /etc/profile; then
. /etc/profile
fi

if test -r ~/.profile; then
. ~/.profile
fi

test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession

配置修改后,需要重启服务:

systemctl restart xrdp.service

登录错误解决

Oh no! Something has gone wrong.
A problem has occurred and the system can't recover.
Please log out and try again.

以上提示是版本兼容问题,可使用如下命令安装相对较新测试软件包:

echo 'deb https://mirrors.163.com/debian testing main' > /etc/apt/sources.list.d/testing.list
apt update

然后设置低优先级别:

cat <<EOF > /etc/apt/preferences.d/pin
Package: *
Pin: release a=stable
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 650
EOF

然后使用如下命令安装比较新的软件包解决:

apt install -qq -y -t testing xrdp
apt install -qq -y -t testing xorgxrdp

安装完毕后,你需要使用如下命令重启服务:

systemctl restart xrdp-sesman.service
systemctl restart xrdp.service

4.参考链接