はじめに (対象読者・この記事でわかること)

この記事は、Ubuntu 22.04をサーバーとして運用し、リモートデスクトップでGUI操作を行いたいと考えている方を対象としています。特に、Windowsのリモートデスクトップクライアントから接続を試みても「接続できません」というエラーに遭遇し、原因が特定できずに困っている方向けです。

この記事を読むことで、Ubuntu 22.04にxrdpを使ったリモートデスクトップ環境を構築する方法、そして接続できない問題の原因を特定し、実際に接続が可能な状態まで持っていく方法がわかります。具体的には、xrdpのインストールから始まり、ファイアウォールの設定、デスクトップ環境の選択、そしてトラブルシューティングまで、実践的な手順をすべて解説します。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。 - Linuxの基本的なコマンド操作(cd、ls、sudoなど) - テキストエディタ(nanoやvim)の基本的な使い方 - ネットワークの基礎知識(IPアドレス、ポート番号)

Ubuntu 22.04でリモートデスクトップが接続できない理由

Ubuntu 22.04では、リモートデスクトップ接続に関して大きな変更が加えられました。これまでのUbuntu 20.04まで動作していたxrdpが、22.04ではデフォルトの設定では正常に動作しないのです。

主な原因は以下の3点に集約されます:

  1. Waylandディスプレイサーバーの採用 Ubuntu 22.04では、セキュリティとパフォーマンスの向上のため、Waylandがデフォルトのディスプレイサーバーとして採用されました。しかし、xrdpはWaylandと完全には互換性がなく、X11での動作が必要です。

  2. デスクトップ環境の変更 Ubuntu 22.04ではGNOME 42が採用され、以前のバージョンと比較して内部構造が大きく変わりました。これにより、xrdpのセッション管理が複雑になっています。

  3. セキュリティ設定の強化 セキュリティの強化により、リモート接続に関する各種設定がより厳格になり、適切な設定を行わないと接続が拒否されるようになりました。

完全解決!Ubuntu 22.04でxrdpを使ったリモートデスクトップ接続の設定方法

それでは、実際にUbuntu 22.04でリモートデスクトップ接続を可能にするための設定を、順を追って解説していきます。

ステップ1:必要なパッケージのインストールとアップデート

まずは、システムを最新の状態に更新し、xrdpとその依存関係をインストールします。

Bash
# システムの更新 sudo apt update && sudo apt upgrade -y # xrdpと関連パッケージのインストール sudo apt install -y xrdp xfce4 xfce4-goodies tigervnc-standalone-server

このコマンドで、xrdp本体と、軽量なデスクトップ環境であるXFCE、そしてVNCサーバーをインストールします。GNOMEよりもXFCEの方がリモートデスクトップでの動作が安定しています。

ステップ2:xrdpサービスの設定と起動

次に、xrdpサービスを設定し、自動起動を有効にします。

Bash
# xrdpサービスの起動と自動起動設定 sudo systemctl start xrdp sudo systemctl enable xrdp # ステータスの確認 sudo systemctl status xrdp

サービスが正常に起動していることを確認してください。エラーが表示される場合は、ログを確認して問題を特定します:

Bash
# ログの確認 sudo journalctl -u xrdp -b

ステップ3:ファイアウォールの設定

Ubuntu 22.04では、デフォルトでファイアウォール(ufw)が有効になっていることがあります。xrdpは3389番ポートを使用するため、このポートを開放する必要があります。

Bash
# ファイアウォールの状態確認 sudo ufw status # 3389番ポートを開放 sudo ufw allow 3389/tcp # 別のポートを使用したい場合(例:13389) sudo ufw allow 13389/tcp

また、もしCloudflareやAWSなどのクラウドサービスを使用している場合は、セキュリティグループでも同じポートを開放する必要があります。

ステップ4:デスクトップ環境の設定

Ubuntu 22.04ではWaylandがデフォルトですが、xrdpはX11での動作が必要です。そのため、XFCEをデフォルトのデスクトップ環境として設定します。

Bash
# .xsessionファイルの作成 echo "xfce4-session" > ~/.xsession # 全ユーザーに適用する場合 sudo echo "xfce4-session" > /etc/skel/.xsession

また、/etc/xrdp/startwm.shファイルを編集して、XFCEを明示的に起動するようにします:

Bash
# バックアップの作成 sudo cp /etc/xrdp/startwm.sh /etc/xrdp/startwm.sh.bak # ファイルの編集 sudo nano /etc/xrdp/startwm.sh

ファイルの最後の行(通常は. /etc/X11/Xsessionまたはtest -x /etc/X11/Xsession && exec /etc/X11/Xsession)を以下のように置き換えます:

Bash
# XFCEセッションの開始 startxfce4

ステップ5:ユーザー権限と認証の設定

Ubuntu 22.04では、ユーザー権限の設定が重要になります。特に、ssl-certグループへの追加が必要です。

Bash
# ユーザーをssl-certグループに追加 sudo adduser xrdp ssl-cert # ホームディレクトリの権限設定 sudo chmod 755 /home/ユーザ名 # .Xauthorityファイルの権限設定 sudo chmod 600 ~/.Xauthority

ステップ6:高度なトラブルシューティング

これでも接続できない場合は、以下の高度な設定を試してください。

1. Polkit設定の変更

Bash
# polkit設定ファイルの作成 sudo nano /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla

以下の内容を追加:

[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes

2. セッション管理の設定

Bash
# xrdpセッション設定ファイルの編集 sudo nano /etc/xrdp/sesman.ini

以下のセクションを修正:

[Security]
AllowRootLogin=1
MaxLoginRetry=3
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins

[Sessions]
X11DisplayOffset=10
MaxSessions=50
KillDisconnected=1
DisconnectedTimeLimit=0
IdleTimeLimit=0

3. ログレベルの設定

問題の特定のため、ログレベルを上げます:

Bash
# xrdp設定ファイルの編集 sudo nano /etc/xrdp/xrdp.ini # ログレベルをDEBUGに変更 log_level=DEBUG

その後、xrdpサービスを再起動:

Bash
sudo systemctl restart xrdp

ハマった点やエラー解決

実際の設定でよく遭遇するエラーとその解決方法を紹介します。

エラー1: 「接続が拒否されました」

このエラーは、最も一般的で原因も多様です。以下を順に確認してください:

  1. xrdpサービスの状態確認 bash sudo systemctl status xrdp Active: inactive (dead)と表示される場合は、サービスが起動していません。

  2. ポートの確認 bash sudo netstat -tulpn | grep 3389 何も表示されない場合は、xrdpが別のポートを使用しているか、起動に失敗しています。

  3. SELinux/AppArmorの確認 UbuntuではAppArmorが有効な場合があります: bash sudo aa-status | grep xrdp

エラー2: 「認証エラーが発生しました」

このエラーは、ユーザー認証に関する問題です:

  1. ユーザー名とパスワードの確認 大文字小文字を含め、正確に入力しているか確認します。

  2. .xsessionファイルの権限 bash ls -la ~/.xsession 権限が正しく設定されていない場合: bash chmod 644 ~/.xsession

  3. PAM設定の確認 bash sudo nano /etc/pam.d/xrdp-sesman 以下の行が含まれていることを確認: @include common-auth @include common-account @include common-session

解決策

上記の設定をすべて行った後、最後に以下のコマンドでxrdpサービスを再起動します:

Bash
# xrdpサービスの再起動 sudo systemctl restart xrdp sudo systemctl restart xrdp-sesman # 状態の確認 sudo systemctl status xrdp xrdp-sesman

そして、Windowsのリモートデスクトップクライアントから接続を試みます:

  1. リモートデスクトップ接続を開く
  2. コンピューター:UbuntuサーバーのIPアドレス
  3. ユーザー名:Ubuntuのユーザー名
  4. パスワード:Ubuntuのパスワード

接続に成功すれば、XFCEデスクトップ環境が表示されます。

まとめ

本記事では、Ubuntu 22.04でxrdpを使ったリモートデスクトップ接続ができない問題を、原因から解決まで詳しく解説しました。

  • WaylandからX11への切り替えが必要
  • XFCEデスクトップ環境の導入が推奨
  • ファイアウォールとポート設定の確認が重要
  • ユーザー権限と認証設定の適切な構成
  • トラブルシューティングの体系的なアプローチ

この記事を通して、Ubuntu 22.04でも安定したリモートデスクトップ環境を構築できるようになりました。次のステップとして、セキュリティを強化した設定(VPN経由での接続や、公開鍵認証の導入)についても検討してみてください。

参考資料