Xrdp (简体中文)

From ArchWiki
翻译状态:本文是 Xrdp翻译。上次翻译日期:2022-10-03。如果英文版本有所更改,则您可以帮助同步翻译。

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

安装

安装 xrdpAUR 软件包 (或是选择开发版本 xrdp-gitAUR)。这仅支持XVNC作为后端。

Xorg 后端

要使用 xorgxrdp 代替后端,安装 xorgxrdpAUR 包。

allowed_users=anybody 添加到 /etc/X11/Xwrapper.config 以允许任何人启动 X 服务器。

使用说明

首先,启动 xrdp 服务。您应该能够将 RDP 客户端连接到默认 RDP 端口 (3389) 上的主机。如果成功,您将看到“xrdp”会话管理器窗口,该窗口允许您在“Xorg”或“Xvnc”会话之间进行选择,并为用户身份验证提供输入。通过修改 /etc/xrdp/xrdp.ini 可以高度自定义会话管理器 UI。

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

成功启动显示服务器后,xrdp 将默认执行 /etc/xrdp/startwm.sh。该脚本用于启动一个窗口管理器(类似于 .xinitrc),如果它们从 ~/.xinitrc/etc/X11/xinit/xinitrc 读取存在。建议编辑 ~/.xinitrc 以启动您的桌面环境或窗口管理器,但您也可以编辑 /etc/xrdp/startwm.sh

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

技巧和窍门

开机自动启动

xrdpAUR 软件包包含 systemd 的服务文件。 启用 xrdp.service

图形加速

对于 Xorg 会话,您可以通过为 Intel 和 AMD GPU 安装 xorgxrdp-glamorAUR 和为 Nvidia GPU 安装 xorgxrdp-nvidiaAUR 来启用 OpenGLVulkan 图形加速。

声卡

安装必要的 PulseAudiopulseaudio-module-xrdpAUR 模块。

疑难解答

光标周围的黑框

如果您在鼠标指针周围遇到黑框,请使用 Xcursor.core:1 行创建 ~/.Xresources-xrdp 并将其加载到 ~/.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

桌面环境的黑屏

如果使用桌面环境出现黑屏,则可能是 D-Bus 未正确初始化造成的。尝试使用 ~/.xinitrc 文件中的 dbus-launch --exit-with-session 运行桌面环境。对于 KDE Plasma,您可以使用命令 /usr/lib/plasma-dbus-run-session-if-needed startplasma-x11

loginctl 或 systemctl --user 不工作

尝试注释掉 /etc/pam.d/system-auth 中对 systemd-home 的所有引用。请参阅 这个问题

gnome-keyring 或 KDE Wallet 提示

如果在会话开始时提示您登录 gnome-keyring 或 [KDE Wallet],请修改文件 /etc/pam.d/xrdp-sesman 如下:

/etc/pam.d/xrdp-sesman
#%PAM-1.0

auth            include         system-remote-login
-auth           optional        pam_gnome_keyring.so
-auth   optional  pam_kwallet5.so

account         include         system-remote-login

password        include         system-remote-login
-password       optional        pam_gnome_keyring.so use_authtok

session         optional        pam_keyinit.so force revoke
session         include         system-remote-login
-session                optional        pam_gnome_keyring.so auto_start
-session  optional  pam_kwallet5.so auto_start

如果您只使用 gnome-keyring,则不需要包含 kwallet5 行,反之亦然。

阻止自动启动项目启动

要阻止用户定义的 ~/.config/autostart 项目启动,您可以在 ~/.xinitrc 中的会话上设置自动启动目录参数以仅使用全局 /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) ;;

没有声音

这可能是 loginctl 问题的征兆,因此请尝试以 以上内容修复。系统journal可能会遇到以下错误:

Failed to load module "module-x11-publish" (argument: "display=:10.0 xauthority="): initialization failed.

这是 systemd 不正确地启动 PulseAudio 的结果。一种解决方法是为您自己的用户或所有用户 禁用 user unit 文件 pulseaudio.servicepulseaudio.socket,然后启动 PulseAudio需要时通过在 /etc/pulse/client.conf 中将 autospawn 设置为 yes

如果仍然没有声音,请尝试使用 ~/.xinitrc 中的 pulseaudio & 手动启动 PulseAudio。

两指滚动过快

使用 xorg 后端,确保 xorgxrdp 版本 0.9.19 或更新。然后添加 XRDP_XORG_TOUCHPAD_SCROLL_HACK=yes/etc/xrdp/sesman.ini 中的 [SessionVariables] 段 。

参见 此问题 以获得详细信息。

参阅

  • TigerVNC - VNC,一个 RDP 的替代品,同时在此用作后端
  • freerdp 一个支持 RDP 7.1 功能的 rdesktop 分支,包括网络级身份验证 (NLA)。它主要由 xfreerdp 客户端组成。此外,freerdp-shadow-cli 命令提供了一种快速简便的方法来启动 RDP 服务器。