はじめに (対象読者・この記事でわかること)
この記事は、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点に集約されます:
-
Waylandディスプレイサーバーの採用 Ubuntu 22.04では、セキュリティとパフォーマンスの向上のため、Waylandがデフォルトのディスプレイサーバーとして採用されました。しかし、xrdpはWaylandと完全には互換性がなく、X11での動作が必要です。
-
デスクトップ環境の変更 Ubuntu 22.04ではGNOME 42が採用され、以前のバージョンと比較して内部構造が大きく変わりました。これにより、xrdpのセッション管理が複雑になっています。
-
セキュリティ設定の強化 セキュリティの強化により、リモート接続に関する各種設定がより厳格になり、適切な設定を行わないと接続が拒否されるようになりました。
完全解決!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サービスを再起動:
Bashsudo systemctl restart xrdp
ハマった点やエラー解決
実際の設定でよく遭遇するエラーとその解決方法を紹介します。
エラー1: 「接続が拒否されました」
このエラーは、最も一般的で原因も多様です。以下を順に確認してください:
-
xrdpサービスの状態確認
bash sudo systemctl status xrdpActive: inactive (dead)と表示される場合は、サービスが起動していません。 -
ポートの確認
bash sudo netstat -tulpn | grep 3389何も表示されない場合は、xrdpが別のポートを使用しているか、起動に失敗しています。 -
SELinux/AppArmorの確認 UbuntuではAppArmorが有効な場合があります:
bash sudo aa-status | grep xrdp
エラー2: 「認証エラーが発生しました」
このエラーは、ユーザー認証に関する問題です:
-
ユーザー名とパスワードの確認 大文字小文字を含め、正確に入力しているか確認します。
-
.xsessionファイルの権限
bash ls -la ~/.xsession権限が正しく設定されていない場合:bash chmod 644 ~/.xsession -
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のリモートデスクトップクライアントから接続を試みます:
- リモートデスクトップ接続を開く
- コンピューター:UbuntuサーバーのIPアドレス
- ユーザー名:Ubuntuのユーザー名
- パスワード:Ubuntuのパスワード
接続に成功すれば、XFCEデスクトップ環境が表示されます。
まとめ
本記事では、Ubuntu 22.04でxrdpを使ったリモートデスクトップ接続ができない問題を、原因から解決まで詳しく解説しました。
- WaylandからX11への切り替えが必要
- XFCEデスクトップ環境の導入が推奨
- ファイアウォールとポート設定の確認が重要
- ユーザー権限と認証設定の適切な構成
- トラブルシューティングの体系的なアプローチ
この記事を通して、Ubuntu 22.04でも安定したリモートデスクトップ環境を構築できるようになりました。次のステップとして、セキュリティを強化した設定(VPN経由での接続や、公開鍵認証の導入)についても検討してみてください。
参考資料
- Ubuntu 22.04 LTS Release Notes
- xrdp Official Documentation
- XFCE Desktop Environment
- Ubuntu Community Help Wiki - RemoteDesktop
