Xrdp (简体中文)

From ArchWiki

xrdp 是一个守护程序,支持 Microsoft 的 Remote Desktop Protocol (RDP)。 它使用 Xvnc, X11rdp 或 xorgxrdp 作为其后端。

安装

安装 xrdpAUR 软件包 (或是选择开发版本 xrdp-gitAUR)。

开机自启动

xrdpAUR 软件包带有针对 systemd 的服务文件。 请 启用 xrdp.servicexrdp-sesman.service

作为终端服务器运行 (Xorg)

安装 the xorgxrdp-gitAUR 软件包。

allowed_users=anybody 添加到 /etc/X11/Xwrapper.config 以允许任何用户启动 X

编辑 ~/.xinitrc/etc/X11/xinit/xinitrc 来启动你的桌面环境。

故障排除

  • 如果你遇到鼠标指针周围出现黑框的情况,请创建 ~/.Xresources-xrdp 写入一行 Xcursor.core:1 并在 ~/.xinitrc 中加载它,例如
xrdb ~/.Xresources-xrdp
exec startlxde

你可能还需要安装 xorg-xrdb

  • 在登录到会话管理器之后如果你的 ~/.xinitrcdbus_args 中设置了 --exit-with-session 则在登录到会话管理器后可能出现黑屏。

请尝试将 ~/.xinitrc 复制为 ~/.xrdpinitrc,移除 --exit-with-session,并更新 /etc/xrdp/startwm.sh 为调用 ~/.xrdpinitrc 而非 ~/.xinitrc。 你可能需要在对 .xrdpinitrc 的调用中附加你的桌面环境,与 ~/.xinitrc 中的内容一致;例如 . ~/.xrdpinitrc xfce

  • 如果你使用 KDE plasma 时出现黑屏:

尝试在 /etc/pam.d/system-auth 中注释掉对 systemd-home 的引用。

  • 如果在桌面会话开始时提示你登录 gnome-keyring 则可将以下 2 行添加到 /etc/pam.d/xrdp-sesman
auth        optional    pam_gnome_keyring.so
session     optional    pam_gnome_keyring.so auto_start
  • 为防止用户定义的 ~/.config/autostart 条目启动你可以在 ~/.xinitrc 中设置会话的 autostart 目录参数以便仅使用全局目录 /etc/xdg/autostart
get_session(){
    local dbus_args=(--sh-syntax)
    case "$SESSION" in
        awesome) dbus_args+=(awesome) ;;
        bspwm) dbus_args+=(bspwm-session) ;;
        budgie) dbus_args+=(budgie-desktop) ;;
        cinnamon) dbus_args+=(cinnamon-session -a /etc/xdg/autostart) ;;

配合 Vino 运行 (针对 root 会话的 Gnome VNC-Server)

启用服务以通过 vino-preferences 可见。 由于 vino 默认使用 5900 端口进行连接,我们要相应地编辑 xrdp 配置文件。 将 vino 会话添加到 xrdp 的配置文件:

/etc/xrdp/xrdp.ini
[xrdp8]
name=Vino-Session
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=5900

如果你遇到了 VNC 连接错误,这可能是因为 vino-server 默认只接受 TLS 连接。 这必须改为标准 VNC 验证以便 xrdp 可以连接:

gsettings set org.gnome.Vino require-encryption false

你还可以限制 vino-server 只监听回环接口:

gsettings set org.gnome.Vino network-interface lo

请记得重启 xrdp 服务器,用户就将能够连接到 vino 会话 (已使用 xfreerdp 进行了测试)。

使用说明

在启动 xrdpxrdp-sesman 服务后,你应当能够使用 RDP 客户端通过默认的 RDP 端口 (3389) 连接到主机。 如果成功,你将看到一个 xrdp 会话管理器窗口,你可以在其中选择 XorgXvnc 会话并提供输入用于用户验证。 会话管理器界面可通过修改 /etc/xrdp/xrdp.ini 进行高度定制。

用于启动 XorgXvnc 显示服务器的参数可在 /etc/xrdp/sesman.ini 中进行配置。

在成功启动显示服务器后,xrdp 默认将执行 /etc/xrdp/startwm.sh。 该脚本会启动一个窗口管理器 (它与 .xinitrc) 类似) 并且通常需要进行修改以启动你想要的窗口管理器。 注意:默认脚本将尝试启动 xterm 因此未安装 xterm 将会导致连接失败。

如果你直接关闭会话窗口和 RDP 连接,你可以在下次打开 RDP 连接时访问同一个会话。 当你从会话窗口退出窗口管理器或桌面环境时,该会话将会关闭,当下次连接时将打开一个新的会话。

xrdp 将检测会话的窗口尺寸是否与已打开的相同。 如果尺寸/分辨率不匹配它将打开一个新会话。

参阅

  • TigerVNC - VNC,一个 RDP 的替代品,同时在此用作后端
  • freerdp 一个 rdesktop 的分支,它支持 RDP 7.1 特性,包括网络级别认证 (NLA)。 另请参见 [1]