Xrdp - Arch Linux 中文维基

跳至內容

# Xrdp

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Xrdp，最近一次同步於 2023-08-20，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

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。

用於啟動 Xorg 和 Xvnc 顯示伺服器的參數可以在 `/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 來啟用 OpenGL 和 Vulkan 圖形加速。

### 音效卡

安裝必要的 PulseAudio 與 pulseaudio-module-xrdpAUR 模塊或者 PipeWire 與 pipewire-module-xrdpAUR。

### 非 root 用戶

在 `Xwrapper.config` 中添加如下內容:

    /etc/X11/Xwrapper.config

    allowed_users=anybody
    needs_root_rights=no

如果沒有上面的內容，從 Remmina 等程序發起的遠程連接將會出現空白屏幕。

## 疑難解答

### X server could not be started並且日誌中有waitforx字樣

由於 waitforx 的測試版本不穩定[1]，可以將 `/usr/lib/xrdp/waitforx`備份後，編輯新文件`waitforx`：

    #!/bin/sh
    exit 0

保存後設置775權限。或者安裝 xrdp-gitAUR 包。

### 光標周圍的黑框

如果您在滑鼠指針周圍遇到黑框，請使用 `Xcursor.core:1` 行創建 `~/.Xresources-xrdp` 並將其加載到 `~/.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`。

### 桌面環境的黑屏

如果使用桌面環境出現黑屏，則可能是 D-Bus 未正確初始化造成的。一些桌面環境(例如 KDE Plasma) 可能會從之前的會話中恢復應用程式和窗口，所以結果是只缺失了 "plasmashell"。

嘗試使用 `~/.xinitrc` 文件中的 `dbus-launch --exit-with-session` 運行桌面環境。對於 KDE Plasma，您可以使用命令 `/usr/lib/plasma-dbus-run-session-if-needed startplasma-x11` 或者 `dbus-launch --exit-with-session 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.service` 和 `pulseaudio.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]` 段 。

參見此問題以獲得詳細信息。

### 遠程系統的功能限制

遠程用戶的權限可能會比直接登錄用戶的權限要低。需要額外的 polkit 權限配置策略：

#### 掛載的設備

要遠程訪問掛載的設備，請參考 udisks#Permissions.

#### NetworkManager

要遠程訪問網絡管理器，請閱讀 NetworkManager#Set up PolicyKit permissions。

## 參閱

- TigerVNC - VNC，一個 RDP 的替代品，同時在此用作後端
- freerdp包 一個支持 RDP 7.1 功能的 rdesktop 分支，包括網絡級身份驗證 (NLA)。它主要由 `xfreerdp` 客戶端組成。此外，`freerdp-shadow-cli` 命令提供了一種快速簡便的方法來啟動 RDP 伺服器。

1. ↑ https://github.com/neutrinolabs/xrdp/issues/2788

分類：​

- 遠程伺服器

Xrdp
新增話題