# Xrdp (简体中文)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

## 安装

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

### 开机自启动

xrdpAUR 软件包带有针对 systemd 的服务文件。 请 启用 `xrdp.service` 和 `xrdp-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。

- 在登录到会话管理器之后如果你的 `~/.xinitrc` 在 `dbus_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 进行了测试)。

## 使用说明

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

用于启动 Xorg 和 Xvnc 显示服务器的参数可在 `/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]。

Category:

- Remote desktop (简体中文)