Manjaro Gnome + XRDP 最佳配置方案

五一假期闲来无事,逐一尝试了 Manjaro 21.2.6 官方维护的 xfce、KDE 和 Gnome 桌面环境的发行版,最终结论是 Gnome 在 xrdp 使用上功能相对最健全。xfce 和 KDE 虽然可以成功通过 xrdp 连接到桌面,但无法弹出密码认证窗口,这会导致无法使用系统自带的应用管理器安装程序,像 GParted 等需要获取管理员权限的 GUI 程序也无法使用。

当然,从 XRDP 远程桌面的角度来看,Gnome 版本的 Manjaro 也不是开箱即用。常规方法配置的 xrdp 连接后会提示“发生了系统错误,所有插件都已禁用,是否注销登录”,这个问题需要用第三方的补丁来解决,虽然打补丁也没多复杂,但毕竟多了步骤,就给 xrdp 的配置又增加了一层门槛。

安装

安装必须的包

yay -S base-devel xrdp xorgxrdp

配置

创建或编辑 /etc/X11/Xwrapper.config,添加

allowed_users=anybody

使用 ~/.xinitrc 的内容创建 ~/.xrdpxinitrc 文件

cp ~/.xinitrc ~/.xrdpxinitrc

编辑它 ~/.xrdpxinitrc,找到并删除里面的 --exit-with-session

然后修改 /etc/xrdp/startwm.sh,将文件中所有的 ~/.xinitrc 替换成 ~/.xrdpxinitrc。即让这个脚本去找 ~/.xrdpxinitrc 配置文件。

提示,其实也可以直接编辑 .xinitrc 文件,但使用 .xrdpxinitrc 应该可以避免因修改设置而影响其他关联程序的稳定。

打补丁

一行一条命令

git clone https://github.com/matt335672/pam_close_systemd_system_dbus
cd pam_close_systemd_system_dbus
sudo make install

编译好的库文件位于 /usr/lib/security/pam_close_systemd_system_dbus.so,修改 /etc/pam.d/xrdp-sesman 文件,参考以下内容添加倒数第二行的 optional:

#%PAM-1.0
auth        include     system-remote-login
account     include     system-remote-login
password    include     system-remote-login
session     optional	pam_close_systemd_system_dbus.so
session     include     system-remote-login

重启系统,试试用 Microsoft Remote Desktop 连一下吧。

Reference