Linuxにおけるリモートデスクトップ入門
ほとんどのLinux管理者は、SSHを介してターミナル環境で大半の作業を行っています。それは効率的で安全、かつ高速です。しかし、ウィンドウシステムを必要とするレガシーソフトウェアの実行、クロスブラウザテストの実施、あるいは複雑な操作のために視覚的なファイルマネージャーを好む場合など、グラフィカルユーザーインターフェース(GUI)が不可欠なシナリオも存在します。そこでXRDPの出番です。
XRDPは、Microsoft Remote Desktop Protocol(RDP)のオープンソース実装です。これを使用すると、標準的なRDPクライアントを使用して、Windows、macOS、あるいは別のLinuxマシンからLinuxマシンに接続できます。画面更新を画像として送信するVNCとは異なり、RDPは一般的に低帯域幅の接続においてより効率的であり、Windowsクライアントとの統合性も優れています。
クイックスタート(5分):UbuntuでXRDPを動かす
すぐにリモートデスクトップが必要な場合は、以下の手順に従って基本的な環境を構築してください。デスクトップ環境には、軽量でリモート接続でも安定しているXFCEを使用することをお勧めします。
ステップ1:デスクトップ環境のインストール
sudo apt update
sudo apt install xfce4 xfce4-goodies -y
ステップ2:XRDPのインストール
sudo apt install xrdp -y
sudo systemctl enable --now xrdp
ステップ3:セッションの設定
ログイン時にXFCEを使用するようXRDPに指示します:
echo "xfce4-session" > ~/.xsession
ステップ4:ファイアウォールの開放
sudo ufw allow 3389/tcp
これで、サーバーのIPアドレスを使用して、Windowsのリモートデスクトップ接続アプリから接続できるようになります。
ディープダイブ:適切なデスクトップ環境の選択
デスクトップ環境(DE)の選択は、リモート体験に大きく影響します。GNOMEは多くのディストリビューションでデフォルトですが、3Dアクセラレーションの多用とメモリ消費量の多さにより、RDP経由では動作が重くなることがあります。
GNOME vs. XFCE vs. MATE
- GNOME: モダンで美しいですが、リソース消費が激しいです。XRDPでスムーズに動作させるには、特定の調整(
gnome-remote-desktopパッケージなど)が必要になることがよくあります。 - XFCE: 私の一番の推奨です。高速でRAMの使用量が非常に少なく、XRDPのアップデート中に動作が不安定になることもほとんどありません。
- MATE: 優れた中間的な選択肢です。GNOMEよりもパフォーマンスが良く、XFCEよりも機能が豊富な、伝統的なデスクトップの操作感を提供します。
RAMが4GBの私の本番用Ubuntu 22.04サーバーでは、この方法により、デフォルトのGNOMEインストールと比較して処理時間とインターフェースのラグが大幅に減少しました。RAMの1メガバイトが重要な場合、モダンなDEの視覚効果を削ぎ落とすことで、レスポンスの良さに大きな違いが生まれます。
知っておくべき設定ファイル
XRDPの動作は主に2つのファイルで制御されます:
/etc/xrdp/xrdp.ini: セキュリティ、ポート、セッションタイプを含むグローバル設定を処理します。/etc/xrdp/startwm.sh: ユーザーがログインしたときに実行されるスクリプトです。接続後に黒い画面が表示される場合、問題はほぼ間違いなくここにあります。
高度な使用方法:トラブルシューティングとマルチユーザー対応
基本を押さえたら、いくつか共通のハードルに直面することでしょう。プロフェッショナルな環境で私がどのように対処しているかをご紹介します。
「黒い画面」問題の修正
接続しても黒い画面しか表示されない場合、通常はXサーバーがウィンドウマネージャーの起動に失敗したことを意味します。/etc/xrdp/startwm.shファイルを編集してください。最後の数行が(XFCEの場合)以下のようになっていることを確認してください:
# unset DBUS_SESSION_BUS_ADDRESS
# unset XDG_RUNTIME_DIR
exec startxfce4
これらの変数を解除(unset)することで、既存のローカルセッションとの競合を防ぐことができます。
オーディオリダイレクションの有効化
デフォルトでは、XRDPはサーバーからローカルマシンへ音声を転送しません。pipewire-module-xrdpまたはpulseaudio-module-xrdpをビルドまたはインストールする必要があります。これは、カーネルで実行されているオーディオサーバーの正確なバージョンに合わせる必要があることが多いため、複雑な作業です。ほとんどのサーバータスクではこれをスキップしますが、メディアテストには不可欠です。
セキュリティ:インターネットに対してポート3389を開放しない
ポート3389を開放したままにすることは、ブルートフォース攻撃を招くようなものです。代わりに常にSSHトンネルを使用することをお勧めします。ファイアウォールでポート3389を閉じ、ローカルターミナルから次のように接続します:
ssh -L 3389:localhost:3389 user@your-server-ip
次に、RDPクライアントを開き、localhost:3389に接続します。これでトラフィックはSSHトンネル内で暗号化され、XRDPポートは外部から見えない状態になります。
現場からの実用的なヒント
数多くのリモートLinuxデスクトップを管理してきた経験から、スムーズな運用を維持するために私が実践しているベストプラクティスを紹介します。
「認証が必要です」ポップアップへの対処
リモートデスクトップにログインすると、「カラー管理デバイスを作成する」や「システムリポジトリを更新する」ためにパスワードを求めるポップアップが頻繁に表示されることがあります。これは、非ローカルユーザーを制限するPolkitルールが原因です。カスタムのPolkitルールファイルを作成することで解決できます:
sudo nano /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla
以下の内容を追加します:
[全ユーザーにColordを許可]
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
複数のセッションの管理
デフォルトでは、ログアウトせずに切断すると、次に接続したときにXRDPは新しいセッションを作成します。既存のセッションに再接続するには、xrdp.iniの[Xorg]セクションにip=127.0.0.1とport=-1の設定があることを確認してください。これにより、XRDPは新しいサーバーを起動する前に、そのポートで既存のXサーバーを探すようになります。
「root」ユーザーのルール
XRDP経由でrootユーザーとしてログインしないでください。ほとんどの現代的なデスクトップ環境では、セキュリティ上の理由からこれが無効化されています。常に標準ユーザーを使用し、昇格した権限が必要な場合はGUIターミナル内でsudoを利用してください。
常に最新の状態に保つ
XRDPは活発に開発されています。クリップボードの異常な挙動やマウスのラグが発生した場合は、アップデートを確認してください。標準のUbuntuリポジトリにあるバージョンは、プロジェクトのGitHubで公開されている最新のバグ修正よりも少し遅れていることがあります。重要なワークステーションでは、最新のパフォーマンス改善を取り入れるためにソースからコンパイルすることもあります。

