Ubuntu 18.04: GNOMEデスクトップ環境にXRDPで接続する

XRDPをインストールして、GNOMEデスクトップ環境にXRDPで接続する手順を記載します。

1 XRDPのインストール

xrdpパッケージをインストールします。Xorgの場合はTigerVNCは不要です。

$ sudo apt install -y xrdp

セッションタイプがXorgの場合はカーソルのバックグラウンドに黒い四角い領域が表示されてしまうので、new_cursorsを無効にします。

$ sudo sed -e 's/^new_cursors=true/new_cursors=false/g' \
           -i /etc/xrdp/xrdp.ini
$ sudo systemctl restart xrdp

2 ~/.xsessionrcの作成

Ubuntu向けにカスタマイズされた設定をロードする為に~/.xsessionrcにて以下の環境変数を設定します。

$ D=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
$ cat <<EOF > ~/.xsessionrc
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=${D}
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
EOF

3 Authentication Requiredダイアログの回避

セッションタイプをXorgで接続した場合はセッション作成後にAuthentication Requiredダイアログが表示されてしまいます。

0001_AuthenticationRequiredDialog.png

この認証を2回成功させるとcolordとgsd-colorでエラーが発生し、XRDPの接続が切れてしまいます。そこでこの認証を常に失敗させるルールを追加します。

$ cat <<EOF | \
  sudo tee /etc/polkit-1/localauthority/50-local.d/xrdp-color-manager.pkla
[Netowrkmanager]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF
$ sudo systemctl restart polkit

4 GNOMEデスクトップ環境にXRDPで接続する

セッションタイプはXorgで接続します。Windowsのリモートデスクトップ接続で接続すると以下のようになります。

0002_xrdp-gnome.png

4.1 rdesktopをクライアントとして使う

Windowsのリモートデスクトップ接続とRemminaでは特に問題ないのですが、rdesktopではクリップボードを有効にしているとXRDPサーバ側でnautilusがハングします。CPUが高負荷になりディレクトリが表示されません。

rdesktopの場合は以下のように-r clipboard:offでクリップボードを無効にします。

$ rdesktop -r clipboard:off XRDPSERVER