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.参考链接
- xrdp的官方链接:
http://xrdp.org/ - xrdp的guihub:
https://github.com/neutrinolabs/xrdp