【初心者向け】xrdpで快適リモートデスクトップ環境を構築

【初心者向け】xrdpで快適リモートデスクトップ環境を構築:徹底解説ガイド

はじめに

自宅や職場のコンピューターに、外出先から、あるいは家の中の別の部屋からアクセスしたいと思ったことはありませんか? そんな時に役立つのが「リモートデスクトップ」です。リモートデスクトップを使えば、手元の端末から離れた場所にあるコンピューターの画面を操作し、まるで目の前にあるかのように作業を進めることができます。

Windowsには標準でリモートデスクトップ機能が搭載されていますが、Linux、特にデスクトップ環境を持つUbuntuなどをリモート操作したい場合、どのような方法があるのでしょうか? いくつかの選択肢がありますが、Windowsクライアントからの接続との互換性が高く、比較的快適な操作感を得やすいのが「xrdp」を使った方法です。

この記事は、Linux(特にUbuntu)のデスクトップ環境をWindows PCからリモート操作したいと考えている、リモートデスクトップやLinuxのコマンド操作に不慣れな初心者の方を対象としています。xrdpの基本的な概念から、Ubuntuへのインストール、設定、Windowsからの接続方法、さらには発生しがちなトラブルとその対策、そしてより快適に使うためのヒントまで、図解なしでも分かりやすいように、ステップバイステップで詳細に解説していきます。

この記事を読めば、あなたのUbuntuマシンを、いつでもどこからでもアクセスできる便利なリモートデスクトップサーバーとして活用できるようになるでしょう。少し長い記事になりますが、ぜひ最後までお付き合いください。

この記事で学ぶこと:

  • リモートデスクトップの基本概念
  • xrdpとは何か、なぜxrdpを選ぶのか
  • Ubuntuにxrdpをインストールし、基本的な設定を行う方法
  • WindowsからUbuntuへリモートデスクトップ接続する方法
  • GNOMEデスクトップ環境で発生しがちな問題と対策
  • 日本語入力やクリップボード共有について
  • 接続できないなどのトラブルシューティング
  • より快適・安全に利用するためのヒント

前提となる知識:

  • 基本的なコンピューターの操作(ファイル操作、ソフトウェアのインストールなど)
  • Windows PCの基本的な操作
  • Ubuntuがインストールされたコンピューター(サーバー側)
  • Ubuntuでの基本的なコマンド操作(sudo, apt, ファイル編集など)

これらの知識がなくても、記事内の手順をそのまま実行することで環境構築は可能です。しかし、コマンドの意味などを理解しておくと、よりスムーズに進められるでしょう。

第1章 リモートデスクトップの基本概念とxrdpとは

リモートデスクトップ環境を構築する前に、いくつかの基本的な概念を理解しておきましょう。

1.1 リモートデスクトップの仕組み:クライアント/サーバーモデル

リモートデスクトップは、一般的に「クライアント/サーバーモデル」という形で実現されます。

  • サーバー: リモート操作される側のコンピューター。このコンピューターの画面や操作を外部に提供します。今回の場合は、UbuntuがインストールされたPCがこれにあたります。サーバー側には、画面情報や操作情報をやり取りするための「リモートデスクトップサーバーソフトウェア」が必要です。
  • クライアント: リモート操作する側のコンピューターやデバイス。この端末からサーバーに接続し、サーバーの画面を表示したり、キーボードやマウスで操作したりします。今回の場合は、Windows PCがこれにあたります。クライアント側には、サーバーから送られてくる情報を受け取り、画面に表示し、操作情報をサーバーに送り返すための「リモートデスクトップクライアントソフトウェア」が必要です。Windowsには標準で「リモートデスクトップ接続」というクライアントソフトウェアが搭載されています。

このモデルでは、クライアントからサーバーに接続要求が出され、サーバーがそれを受け入れると、サーバーの画面イメージやキーボード・マウスの操作情報などがネットワークを介してやり取りされます。

1.2 RDP (Remote Desktop Protocol) とは?

RDPは「Remote Desktop Protocol」の略で、Microsoftが開発したリモートデスクトップのための通信プロトコル(通信規約)です。Windowsに標準搭載されているリモートデスクトップ機能は、このRDPプロトコルを使用しています。

RDPの特徴は、単に画面を画像として転送するだけでなく、描画命令やキー入力、マウス操作などの情報を効率的にやり取りできる点にあります。これにより、比較的スムーズで快適な操作感を実現しやすいとされています。また、クリップボードの共有(コピー&ペースト)や、クライアント側のプリンターやドライブをサーバー側で利用する機能などもサポートされています。

1.3 VNC とは何が違う?

リモートデスクトップの技術としては、RDPの他にVNC (Virtual Network Computing) もよく知られています。VNCもリモートデスクトップを実現するプロトコルですが、RDPとは仕組みが少し異なります。

  • VNC: 基本的に、サーバーの画面の内容を画像としてキャプチャし、それをクライアントに転送します。クライアントからの操作は、画像上の座標としてサーバーに送られます。これは比較的シンプルで汎用性が高い(様々なOSやデスクトップ環境に対応しやすい)方式ですが、動きの多い画面や高解像度の画面では、画像転送によるネットワーク負荷が大きくなりやすく、画面の遅延やカクつきが発生しやすい傾向があります。これは「画面転送」方式とも言えます。
  • RDP: 前述の通り、描画命令やテキスト情報などを効率的にやり取りします。これにより、ネットワーク負荷を抑えつつ、より滑らかな操作感を実現できる場合があります。これは「セッション転送」方式とも言えます(より厳密には、サーバー側で仮想的なグラフィックセッションを作成し、そこからの出力をクライアントに送るイメージです)。

今回の目的である「WindowsクライアントからUbuntuデスクトップを快適に操作する」という点において、RDPプロトコルに対応したxrdpは有力な選択肢となります。Windows標準のリモートデスクトップ接続クライアントをそのまま使えるという利点も大きいです。

1.4 xrdpとは? なぜxrdpを選ぶのか

xrdpは、LinuxなどのUNIX系OS上で動作する、オープンソースのRDPサーバー実装です。MicrosoftのRDPプロトコルを理解し、それに従ってWindowsクライアントなどと通信することができます。

xrdpを選ぶ主な理由は以下の通りです。

  • Windowsクライアントとの高い互換性: Windows標準のリモートデスクトップ接続クライアントから特別な設定なしに接続できます。
  • 比較的良好なパフォーマンス: VNCと比較して、特に描画の効率が高く、快適な操作感を得やすいとされています。
  • 広く使われている実績: LinuxでのRDPサーバーとしては定番の一つであり、情報も比較的豊富です。
  • 追加機能: クリップボード共有、プリンター共有(設定が必要な場合あり)、マルチモニター対応などもサポートしています。

もちろん、xrdpにも完璧ではありません。特にデスクトップ環境(GNOMEやKDEなど)との相性によって、いくつかの設定や回避策が必要になる場合があります。また、日本語入力に関しては、クライアント側のIMEを使うなど工夫が必要になることが多いです。しかし、これらの課題は適切な設定を行うことで克服可能です。

この記事では、特に一般的なUbuntuデスクトップ環境(デフォルトではGNOMEが多い)でのxrdp構築に焦点を当て、これらの課題に対する具体的な解決策も含めて解説します。

第2章 サーバー側の準備:Ubuntuへのxrdpインストールと設定

ここからは、リモート操作される側となるUbuntuコンピューター(サーバー)での作業を進めていきます。

2.1 使用するUbuntuのバージョンについて

Ubuntuには、半年ごとに新しいバージョンがリリースされる通常版と、2年ごとにリリースされ長期的なサポートが提供されるLTS (Long Term Support) 版があります。リモートデスクトップサーバーとして安定して利用するなら、LTS版(例: 20.04 LTS, 22.04 LTSなど) を使用することを強く推奨します。LTS版はセキュリティアップデートなどが長期間提供されるため、安心して使い続けることができます。

この記事では、特にバージョンを指定せず一般的な手順を解説しますが、Ubuntu 20.04 LTS や 22.04 LTS であれば基本的に同様の手順で構築できます。

2.2 デスクトップ環境の確認

Ubuntuをインストールする際に、デスクトップ環境(GUI)も同時にインストールしていることを確認してください。xrdpはデスクトップ環境を提供するためのものであり、CUI(コマンドラインインターフェース)のみのUbuntuにxrdpを入れても、リモートで操作できる画面はありません。

Ubuntuのデフォルトデスクトップ環境はGNOMEです。しかし、GNOMEはxrdpとの組み合わせで、画面が真っ黒になる、ログインループに陥る、Polkit認証が必要な操作ができない、といった相性問題が発生しやすいことが知られています。

これらの問題を回避するため、後述する追加設定を行うか、あるいはGNOMEよりも軽量でxrdpとの相性が良いとされる代替デスクトップ環境(XFCE, MATE, LXDEなど)をインストールして利用することも検討できます。この記事では、デフォルトのGNOMEで発生しがちな問題への対策を中心に解説しますが、代替デスクトップ環境の導入についても触れます。

まずは、現在のUbuntu環境にxrdpをインストールすることから始めましょう。

2.3 システムのアップデート

ソフトウェアをインストールする前には、システムのパッケージ情報を最新の状態に更新し、既存のパッケージをアップグレードするのが良い習慣です。これにより、最新のバージョンのソフトウェアをインストールできるだけでなく、システムの安定性も保てます。

Ubuntuサーバーにログインし、ターミナルを開いて以下のコマンドを実行します。

bash
sudo apt update

このコマンドは、インターネット上のUbuntuのソフトウェアリポジトリ(ソフトウェアの置き場所)から、利用可能なパッケージのリストを最新の状態に更新します。実行にはインターネット接続が必要です。

次に、以下のコマンドでインストール済みのパッケージをアップグレードします。

bash
sudo apt upgrade

このコマンドは、apt updateで見つかった新しいバージョンのパッケージをインストールします。これにより、システムが最新の状態になります。途中で続行するか聞かれたら y を入力してEnterキーを押してください。アップグレードには少し時間がかかる場合があります。

2.4 xrdpのインストール

システムの準備ができたら、いよいよxrdpをインストールします。以下のコマンドをターミナルで実行してください。

bash
sudo apt install xrdp

このコマンドは、xrdpパッケージとその依存関係にあるパッケージをインストールします。インストール中に続行するか聞かれたら y を入力してEnterキーを押してください。

インストールが完了すると、xrdpサービスは自動的に起動し、コンピューター起動時にも自動的に立ち上がるように設定されます。

インストール後、xrdpサービスの現在の状態を確認してみましょう。

bash
sudo systemctl status xrdp

このコマンドを実行すると、xrdpサービスが現在「active (running)」の状態であることを確認できるはずです。もしactiveになっていない場合は、以下のコマンドでサービスを起動できます。

bash
sudo systemctl start xrdp

コンピューター起動時に自動的にxrdpサービスが開始されるように設定されているかも確認しておきましょう。通常、apt install xrdp で自動的に設定されますが、念のため以下のコマンドで確認・設定できます。

bash
sudo systemctl is-enabled xrdp

もし disabled と表示された場合は、以下のコマンドで有効化してください。

bash
sudo systemctl enable xrdp

2.5 ファイアウォール設定 (UFW)

Ubuntuには、標準でUFW (Uncomplicated Firewall) というファイアウォール管理ツールが搭載されています。セキュリティのため、必要な通信だけを許可するようにファイアウォールを設定しておくことが重要です。

xrdpはデフォルトでTCPポートの3389番ポートを使用します。WindowsクライアントからUbuntuサーバーにリモートデスクトップ接続するためには、この3389番ポートへの通信を許可する必要があります。

まず、UFWの状態を確認しましょう。

bash
sudo ufw status

もしUFWが「inactive」(無効)になっている場合は、このステップは省略しても構いませんが、セキュリティのために有効化することを強く推奨します。Status: active と表示されていれば、UFWは有効になっています。有効な場合は、既になにかルールが設定されているか確認してください。

UFWが有効な場合、またはこれから有効にする場合は、以下のコマンドで3389番ポートへのTCP通信を許可します。

bash
sudo ufw allow 3389/tcp

これで、外部から3389番ポートへの接続が許可されます。

もしUFWが inactive だった場合は、以下のコマンドで有効化します。

bash
sudo ufw enable

有効化する際に「This may disrupt existing ssh connections. Proceed with operation (y|n)?」のような警告が表示されることがありますが、SSHで接続している場合は、SSHポート(デフォルトは22番)が既に許可されていることを確認してから有効化してください(通常、Ubuntuインストール時にSSHを有効にしている場合は自動的に22番ポートが許可されます)。UFWを有効化すると、明示的に許可したポート以外の通信はブロックされるようになります。

再度 sudo ufw status を実行し、3389/tcp ALLOW Anywhere のような行が表示されていることを確認してください。Anywhere はどのIPアドレスからでも許可するという意味です。もし特定のIPアドレスからのみ接続を許可したい場合は、sudo ufw allow from <許可したいIPアドレス> to any port 3389 proto tcp のように指定することも可能です。セキュリティを高めるためには、接続元IPアドレスを限定するのが望ましいですが、ここではAnywhereで進めます。

これで、xrdpのインストールと基本的なファイアウォール設定は完了です。

2.6 追加設定(快適化、GNOME対策など)

このままの状態でもWindowsから接続できる場合もありますが、特にGNOMEデスクトップ環境を使用している場合や、より快適に利用するためには、いくつかの追加設定が必要になることが多いです。

2.6.1 セッションタイプの指定 (/etc/xrdp/xrdp.ini)

xrdpは、いくつかの方法でデスクトップセッションを起動できます。デフォルトでは、xrdp.ini という設定ファイルで定義されたセッションタイプ([xrdp-sesman] セクションや、[Xvnc], [sesman-Xvnc] などのセクション)が使用されます。

Ubuntuにapt install xrdpでインストールした場合、デフォルトでは sesman-Xvnc というセッションが使用されるように設定されていることが多いです。これは、xrdpが内部的にXvnc(VNCサーバーの一種)を起動し、その画面をRDPプロトコルに変換してクライアントに送るという方式です。この方式でも接続は可能ですが、GNOMEなどの最新のデスクトップ環境との相性があまり良くなかったり、パフォーマンスが最適でなかったりする場合があります。

よりネイティブなRDPセッションに近い形や、特定のデスクトップ環境を確実に起動させるために、設定ファイルを編集することがあります。設定ファイルは /etc/xrdp/xrdp.ini です。このファイルを編集するには、sudo コマンドとテキストエディタを使用します。例えば、nanoエディタを使う場合は以下のコマンドです。

bash
sudo nano /etc/xrdp/xrdp.ini

このファイルには様々な設定項目がありますが、ここでは主に以下の点を確認・編集することがあります。

  • [Globals] セクション:
    • port=3389: 接続ポート。変更したい場合はここを編集します。
    • allowed_users=any: xrdpに接続できるユーザーを指定します。デフォルトの any であれば、システム上のどのユーザーでも接続できます。console_users にすると、物理的にコンソールにログインできるユーザーのみに制限できます。セキュリティを高めるなら console_users にするのも手ですが、リモート専用ユーザーを使いたい場合は any のままで良いでしょう。
  • [xrdp-sesman] セクション:
    • ListenPort=3350: xrdp-sesman(セッションマネージャー)が内部的にリッスンしているポートです。通常変更する必要はありません。
    • User, Group, PrivSepUser: セッション実行時のユーザー・グループに関する設定。デフォルトのままでOKです。
  • セッション定義セクション ([Xvnc], [sesman-vnc], [sesman-X11rdp] など):
    • xrdpがどのような方法でデスクトップセッションを起動するかを定義しています。aptでインストールした場合、[Xvnc][sesman-Xvnc]がデフォルトで有効になっていることが多いです。

デフォルトの /etc/xrdp/xrdp.ini は、いくつかのセッションタイプが定義されており、接続時に選択できるようになっています。しかし、GNOMEをうまく起動できない場合など、起動するデスクトップ環境を明示的に指定する必要があります。これは次の.xsessionファイルの設定と関連します。

2.6.2 GNOME環境での問題回避と .xsession ファイル

UbuntuのデフォルトであるGNOMEは、Waylandという新しいディスプレイサーバー技術をデフォルトで使用するようになってきています。しかし、xrdpはWaylandに完全には対応しておらず、Xorgという従来のディスプレイサーバーを前提としています。このため、GNOME環境では以下のような問題が発生しやすいです。

  • 接続しても画面が真っ黒または灰色になる。
  • ログイン画面は表示されるが、認証後にデスクトップが表示されず、再度ログイン画面に戻ってしまう(ログインループ)。
  • ファイルマネージャーで権限が必要な操作(例: システムフォルダーへのファイルコピー)をしようとすると、パスワード入力を求められるが、認証ダイアログが表示されなかったり、パスワードを入力しても認証が通らなかったりする(Polkit認証の問題)。

これらの問題を回避するために、いくつかの方法があります。

方法1:代替デスクトップ環境をインストールする

GNOME以外のデスクトップ環境(XFCE, MATE, LXDE, Cinnamonなど)は、一般的にXorg上で動作し、xrdpとの相性が良い傾向があります。特にXFCEは軽量でリモートデスクトップに適しています。

例:XFCEデスクトップ環境をインストールする場合

bash
sudo apt install xfce4 xfce4-goodies

インストール後、xrdpセッションでXFCEを起動するように設定します。

方法2:.xsession ファイルを作成・編集する(GNOMEで試す場合)

xrdpは、ユーザーのホームディレクトリにある .xsession というファイルを読み込み、その中に書かれたコマンドを実行してデスクトップセッションを起動しようとします。このファイルを使って、起動したいデスクトップ環境を明示的に指定することができます。

.xsession ファイルが存在しない場合は新規作成します。以下のコマンドで編集(新規作成)できます。

bash
nano ~/.xsession

ファイルの中に、起動したいデスクトップ環境のコマンドを1行だけ記述します。

  • GNOMEの場合:
    bash
    gnome-session

    (GNOMEがWaylandで起動しようとするのを防ぐため、実際にはもう少し工夫が必要な場合があります。後述のPolkit認証問題の対策と合わせて行うのが良いでしょう。)
  • XFCEの場合:
    bash
    startxfce4
  • MATEの場合:
    bash
    mate-session

ファイルを保存して閉じます(nanoの場合: Ctrl+X, Y, Enter)。

この .xsession ファイルを設定することで、xrdpセッションで指定したデスクトップ環境が起動するようになります。

方法3:xrdpログイン画面でセッションを選択する

xrdpに接続すると、ユーザー名とパスワードを入力する画面の他に、「Session」を選択するドロップダウンリストが表示されることがあります。ここに Xvnc や、システムにインストールされているデスクトップ環境(GNOME, XFCEなど)が表示されます。ここで適切なセッションを選択することで、起動するデスクトップ環境を切り替えられます。

しかし、GNOMEを選択しても上述の問題で起動できないことがあるため、.xsession ファイルで起動したい環境を明示的に指定する方法が確実です。

2.6.3 Polkit認証の問題と回避策

GNOMEなどで発生しやすいもう一つの問題が、Polkit認証が必要な操作(例: システム設定の変更、ソフトウェアのインストール、ゴミ箱を空にするなど)がリモートデスクトップセッションから行えないことです。パスワード入力を求められるダイアログが表示されても、パスワードを入力しても受け付けられなかったり、そもそもダイアログが表示されなかったりします。

これは、xrdpセッションが通常のログインセッションとは異なる扱いをされるために発生する問題です。この問題を回避するためには、Polkitに特定の操作を認証なしで許可する設定を追加する必要があります。

以下の2つの設定ファイルを作成(または編集)します。これらのファイルは、Polkitに対して colord および geoclue というサービスに関する操作を認証なしで許可する設定です。これらはGNOMEデスクトップ環境でPolkit認証が必要となる典型的なサービスです。

まず、02-allow-colord.conf を作成します。

bash
sudo nano /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf

ファイルの中に以下の内容を記述します。

polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.color-manager.create-device" ||
action.id == "org.freedesktop.color-manager.create-profile" ||
action.id == "org.freedesktop.color-manager.delete-device" ||
action.id == "org.freedesktop.color-manager.delete-profile" ||
action.id == "org.freedesktop.color-manager.modify-device" ||
action.id == "org.freedesktop.color-manager.modify-profile") &&
subject.isInGroup("xrdp")) {
return polkit.Result.YES;
}
});

ファイルを保存して閉じます。

次に、03-allow-geoclue.conf を作成します。

bash
sudo nano /etc/polkit-1/localauthority.conf.d/03-allow-geoclue.conf

ファイルの中に以下の内容を記述します。

polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.Geoclue2.Client.Authorize") &&
subject.isInGroup("xrdp")) {
return polkit.Result.YES;
}
});

ファイルを保存して閉じます。

これらの設定は、xrdp グループに所属するユーザーに対して、上記のアクションを認証なしで許可するという内容です。apt install xrdp を実行すると、xrdp というシステムグループが作成され、xrdpサービスはこのグループで実行されるため、この設定が有効になります。

これらの設定変更を反映させるためには、システムを再起動するか、Polkitサービスを再起動する必要があります。簡単なのはシステム再起動です。

bash
sudo systemctl restart polkit

または、

bash
sudo reboot

です。再起動後は、リモートデスクトップセッションからPolkit認証が必要な操作が正常に行えるようになるか確認してください。

補足: 上記のPolkit設定は一般的なGNOME環境での問題を解決するためのものですが、他のデスクトップ環境や特定のアプリケーションによっては、別のPolkit認証が必要になる場合があります。その都度、/var/log/auth.log などのログを確認して、どのaction.id が拒否されているかを特定し、同様の設定ファイルを追加する必要があります。ただし、これは少し高度な作業になります。

2.6.4 日本語入力に関する注意点

xrdp経由のリモートデスクトップセッションでは、サーバー側のIME(日本語入力システム、例: ibus-mozc)がうまく動作しない、あるいは動作が不安定になることが多いです。テキストエディタなどでは日本語入力できても、ターミナルや特定のアプリケーションでできない、といった現象が発生しがちです。

この問題の一般的な回避策は、クライアント側のIMEを使用して日本語を入力し、それをコピー&ペーストでサーバー側のアプリケーションに貼り付けるという方法です。xrdpはクリップボード共有をサポートしているため、この方法が比較的スムーズに行えます。

サーバー側のIMEをリモートセッションで確実に動作させるための設定は非常に複雑であり、環境依存性も高いため、初心者向けとしては上記のコピー&ペーストによる方法をお勧めします。

クリップボード共有の確認:

Windowsのリモートデスクトップ接続クライアントで、接続オプションの「ローカル リソース」タブを開き、「クリップボード」にチェックが入っていることを確認してください。通常はデフォルトでチェックが入っています。

2.6.5 解像度設定

リモートデスクトップの解像度は、基本的にクライアント側の設定で決まります。Windowsのリモートデスクトップ接続クライアントで、接続オプションの「画面」タブを開き、表示構成(解像度)を設定できます。

サーバー側のデスクトップ環境は、クライアントから要求された解像度に合わせて仮想的なディスプレイを作成して表示します。通常、特別なサーバー側の設定は必要ありません。ただし、特定の解像度でうまく表示されないなどの問題が発生した場合は、.xsession ファイルや /etc/xrdp/sesman.ini などの設定ファイルでディスプレイ設定(例: xrandr コマンドの実行)を調整する必要があるかもしれません。しかし、これは高度な設定となるため、ここでは触れません。まずはクライアント側の設定で希望の解像度が得られるか試してみてください。

2.6.6 xrdpサービスの再起動

.xsession ファイルやPolkit設定ファイルなど、xrdpやそのセッションマネージャーに関連する設定ファイルを変更した場合は、変更を反映させるためにxrdpサービスを再起動する必要があります。

bash
sudo systemctl restart xrdp

必要であれば、Polkitサービスも再起動します。

bash
sudo systemctl restart polkit

ここまでの作業で、サーバー側(Ubuntu)の準備は完了です。インストール、ファイアウォール設定、そしてGNOME環境での問題対策や.xsessionファイルの設定を行いました。

第3章 クライアント側からの接続:Windowsリモートデスクトップ接続

サーバー側(Ubuntu)の準備ができたら、いよいよクライアント側であるWindows PCから接続を試みます。

3.1 サーバーのIPアドレスまたはホスト名の確認

Windows PCから接続するには、接続先であるUbuntuサーバーのIPアドレスまたはネットワーク上のホスト名が必要です。

Ubuntuサーバーでターミナルを開き、以下のコマンドを実行してIPアドレスを確認します。

bash
ip addr show

または

bash
hostname -I

これらのコマンドを実行すると、ネットワークインターフェース(例: eth0wlan0)に割り当てられているIPアドレスが表示されます。通常、プライベートネットワーク内(自宅や職場のLAN)であれば 192.168.x.x10.x.x.x のような形式のIPアドレスが割り当てられているはずです。表示されたIPアドレスを控えておいてください。

もしネットワーク上で名前解決(ホスト名からIPアドレスを引くこと)ができていれば、IPアドレスの代わりにホスト名(例: ubuntu-server)を使用することも可能です。ホスト名を確認するには hostname コマンドを実行します。

bash
hostname

3.2 Windowsリモートデスクトップ接続クライアントの起動

Windows PCで、リモートデスクトップ接続クライアントを起動します。

  1. Windowsのスタートメニューを開き、「リモート デスクトップ接続」と検索して起動します。
  2. または、「ファイル名を指定して実行」(Windowsキー + R)を開き、「mstsc」と入力してEnterキーを押します。

3.3 接続先情報の入力

リモートデスクトップ接続ウィンドウが表示されたら、以下の情報を入力します。

  • コンピューター: サーバーであるUbuntuのIPアドレスまたはホスト名を入力します(例: 192.168.1.100 または ubuntu-server)。

ここで「オプションの表示」をクリックすると、詳細な設定が行えます。

3.4 接続オプションの設定(推奨)

接続オプションでは、画面表示、ローカルリソース、エクスペリエンスなどを設定できます。

  • 画面タブ:
    • 表示構成: リモートデスクトップの解像度を設定します。好みの解像度を選択してください。
    • 色の深さ: 表示する色の数を設定します。「True Color (32ビット)」が最も綺麗ですが、ネットワーク帯域を消費します。ネットワークが遅い場合は色数を減らすことでパフォーマンスが向上することがあります。
  • ローカル リソースタブ:
    • リモート オーディオ: リモートセッションの音声をどこで再生するか設定します。通常は「このコンピューターで再生する」(クライアントPCから音が出る)で良いでしょう。
    • キーボード: Windowsキーの組み合わせなどをローカルとリモートのどちらに適用するか設定します。
    • ローカル デバイスとリソース: クライアントPCのプリンターやドライブをリモートセッションで利用できるようにする設定です。
      • プリンター: クライアントPCにインストールされているプリンターをサーバー側で利用できるようにします。
      • クリップボード: クライアントとサーバー間でコピー&ペーストができるようにします。これは必ずチェックを入れておくことを強く推奨します。
      • 詳細: ドライブ(ローカルディスク)などをサーバー側で利用できるように設定できます。サーバー側からクライアント側のファイルにアクセスしたい場合に便利ですが、セキュリティには注意が必要です。
  • エクスペリエンスタブ:
    • 接続の速度: ネットワーク環境に合わせて設定を選択します。または「接続品質を自動的に検出する」でも良いでしょう。選択した設定によって、デスクトップの視覚効果(ウィンドウのアニメーション、フォントスムージングなど)が自動的に調整され、パフォーマンスが最適化されます。ネットワークが遅い場合は、「低速回線」や「モデム (56 Kbps)」などを選択し、視覚効果を無効にすることで応答性が向上します。
    • 視覚スタイル、デスクトップのコンポジション、ウィンドウ ドラッグ時のコンテンツ表示など: 個別に有効/無効を設定できます。パフォーマンスを優先する場合は、これらを無効(チェックを外す)にすると良いでしょう。

設定が完了したら、「接続」ボタンをクリックします。

3.5 ユーザー名とパスワードの入力

「接続」をクリックすると、セキュリティ警告が表示される場合があります。「はい」をクリックして続行します。

次に、xrdpのログイン画面が表示されます。

  • Username: Ubuntuサーバーにログインするユーザー名を入力します。これはUbuntuのユーザーアカウント名です。
  • Password: そのユーザーアカウントのパスワードを入力します。
  • Session: ここが重要です。ドロップダウンリストから、起動したいデスクトップセッションを選択します。
    • デフォルトでは Xvnc などが表示されていることが多いです。
    • もし .xsession ファイルで特定のデスクトップ環境を指定している場合は、その設定が優先されることが多いですが、念のためリストに表示されている項目も確認してみてください。
    • .xsessionstartxfce4 と記述した場合、Xvnc セッションを選択してもXFCEが起動することがあります。

ユーザー名、パスワード、セッションを選択して、「OK」をクリックします。

3.6 初回接続時の証明書警告について

初回接続時や、サーバーの構成が変わった場合などに、「リモートコンピューターのIDを識別できません。」といった内容のセキュリティ警告が表示されることがあります。これは、サーバーが自己署名証明書を使用しているためで、通常は問題ありません。

警告の内容を確認し、接続先のIPアドレスやホスト名が正しいことを確認したら、「はい」をクリックして接続を続行してください。次回以降この警告を表示させたくない場合は、「このコンピューターへの接続について今後確認しない」にチェックを入れても構いません。

3.7 接続後の画面操作

認証に成功すると、Ubuntuサーバーのデスクトップ画面がWindowsのリモートデスクトップ接続ウィンドウ内に表示されます。これで、まるでUbuntuサーバーの目の前に座っているかのように、マウスやキーボードを使って操作できるようになります。

  • ウィンドウの移動やサイズ変更、アプリケーションの起動など、通常のデスクトップ操作が行えます。
  • Ctrl+Cでコピー、Ctrl+Vで貼り付けなど、クリップボード共有が有効になっていれば、WindowsとUbuntuの間でテキストやファイルをコピー&ペーストできます(ファイルコピーは環境による)。
  • 画面の表示速度が遅い、カクつくといった場合は、ネットワーク環境やクライアント側の「エクスペリエンス」設定を見直してください。
  • リモートセッションを終了するには、リモートデスクトップ接続ウィンドウを閉じるか、Ubuntuのデスクトップ環境からログアウトします。ウィンドウを閉じると、通常はサーバー側のデスクトップセッションも終了します。

これで、xrdpを使ったUbuntuリモートデスクトップ環境の構築とWindowsからの接続は完了です!

第4章 より快適に使うためのヒント

基本的なリモートデスクトップ接続ができるようになったら、次はより快適に、そして安全に利用するためのヒントを紹介します。

4.1 ネットワーク環境

リモートデスクトップの快適さは、ネットワーク環境に大きく左右されます。

  • 有線LAN接続: サーバー側、クライアント側ともに、可能であれば有線LANで接続することを推奨します。無線LANに比べて通信が安定し、速度も速いため、遅延やカクつきを軽減できます。
  • 無線LANの場合: 使用している無線LANが安定しているか確認してください。電波状況が悪かったり、同じ帯域を使用しているデバイスが多かったりすると、通信が不安定になり快適な操作が難しくなります。
  • ネットワーク帯域: HD画質以上のデスクトップ画面をスムーズに表示するには、ある程度のネットワーク帯域(速度)が必要です。特に動画再生やゲームなど、画面の変化が激しい操作を行う場合は、より高速なネットワークが必要になります。
  • 遅延 (Ping値): コマンドの実行やマウス操作に対する画面の反応速度は、ネットワークの遅延(ping値)に影響されます。遅延が大きいほど、操作に対する反応が遅く感じられます。

4.2 VPNの利用(セキュリティ向上)

構築したxrdp環境をインターネット経由で利用する場合、つまり自宅のUbuntuサーバーに外出先のPCから接続する場合など、セキュリティには最大限の注意が必要です。

xrdpはRDPプロトコルを使用しますが、インターネット上に直接公開すると、悪意のある第三者からの攻撃(パスワードの総当たり攻撃など)の標的となるリスクがあります。

このリスクを大幅に軽減するため、インターネット経由でのリモートデスクトップ接続にはVPN (Virtual Private Network) を併用することを強く推奨します。

VPNを使用すると、クライアントPCとサーバーがあるネットワークの間で暗号化された仮想的な通信路を構築できます。クライアントはまずVPNサーバーに接続し、VPN経由で目的のUbuntuサーバーにアクセスします。これにより、リモートデスクトップの通信自体が暗号化され、安全性が向上します。また、Ubuntuサーバーの3389番ポートを直接インターネットに公開する必要がなくなります。

VPNを構築する方法はいくつかあります。

  • VPNルーター: 自宅のルーターにVPNサーバー機能があれば、それを利用するのが比較的簡単です。
  • VPNサーバーソフトウェア: Ubuntuサーバー自体にWireGuardやOpenVPNなどのVPNサーバーソフトウェアをインストールして構築することも可能です。これは少し高度な設定が必要になりますが、柔軟性が高い方法です。

初心者の方には、まずルーターのVPN機能を確認してみるか、信頼できるVPNサービスの利用も検討できます(この場合はUbuntuサーバーがあるネットワークとは別のVPNサービスを利用することになりますが、クライアント側をVPNに接続した状態でUbuntuにアクセスするという形になります)。

とにかく、3389番ポートを安易にインターネットに直接公開することは避けてください。 公開する場合は、ファイアウォールで接続元IPアドレスを厳密に制限するなどの対策が必須ですが、VPN利用が最も安全な方法です。

4.3 サーバーの電源管理

リモートデスクトップでいつでもサーバーにアクセスできるようにするためには、サーバーとなるUbuntuコンピューターが常に起動しているか、少なくともリモートからの操作で起動できる状態にある必要があります。

  • 常時起動: 最も簡単なのは、サーバーを常に起動状態にしておくことです。スリープや休止状態にならないように、電源設定を確認しておきましょう。
  • Wake-on-LAN (WoL): サーバーが電源オフまたはスリープ状態になっていても、ネットワーク経由でマジックパケットと呼ばれる特殊な信号を受け取ることで起動させる機能です。サーバー側のBIOS設定、ネットワークカードの設定、クライアント側からの送信ツールなど、いくつかの設定が必要になりますが、消費電力を抑えたい場合に便利な機能です。設定方法はサーバーのハードウェアやUbuntuのバージョンによって異なるため、ここでは詳細な手順は割愛しますが、興味があれば調べてみてください。

4.4 パフォーマンス改善

リモートデスクトップの表示が遅い、操作に遅延があるといった場合は、以下の方法でパフォーマンスを改善できる可能性があります。

  • 軽量なデスクトップ環境の選択: GNOMEやKDEなどの高機能なデスクトップ環境は、視覚効果が高く、サーバー側の描画処理に負荷がかかりやすいです。XFCE, LXDE, MATEなどの軽量なデスクトップ環境を使用することで、サーバー側の負荷を減らし、リモートデスクトップのパフォーマンスを向上させられる場合があります。第2章の「代替デスクトップ環境をインストールする」を参考に、これらの環境を試してみてください。
  • クライアント側の「エクスペリエンス」設定: Windowsのリモートデスクトップ接続クライアントの「エクスペリエンス」タブで設定できる項目は、サーバーからクライアントへの画面転送量を調整するのに役立ちます。視覚スタイルやアニメーションなどを無効にすることで、転送されるデータ量が減り、応答性が向上します。
  • 解像度と色数の調整: リモートデスクトップの解像度を下げたり、色数を減らしたりすることでも、転送データ量が減り、パフォーマンスが向上します。クライアント側の「画面」タブで設定できます。
  • サーバーのスペック: サーバーとなるUbuntu PCのCPUやメモリ、ストレージ(特にSSD)の性能もリモートデスクトップのパフォーマンスに影響します。特に複数のユーザーが同時に接続する場合や、サーバー側で重い処理を行う場合は、十分なスペックが必要です。

4.5 複数ユーザーでの利用

xrdpは、同時に複数のユーザーがリモートデスクトップ接続して利用することが可能です。それぞれのユーザーは独立したデスクトップセッションを持ちます。

  • 物理的にコンソールにログインしているユーザーとは別のセッションが作成されます。
  • それぞれのユーザーは、Ubuntu上にアカウントを持っている必要があります。
  • リソース(CPU、メモリなど)は共有されるため、同時に多数のユーザーが接続したり、重い処理を行ったりすると、サーバー全体のパフォーマンスが低下する可能性があります。

4.6 ポート番号の変更

セキュリティ上の理由などで、xrdpが使用するデフォルトポート番号3389を変更したい場合があります。

/etc/xrdp/xrdp.ini ファイルを編集します。

bash
sudo nano /etc/xrdp/xrdp.ini

[Globals] セクションにある port=3389 の行を変更したいポート番号(例: 3390)に書き換えます。

ini
port=3390

ファイルを保存して閉じたら、xrdpサービスを再起動します。

bash
sudo systemctl restart xrdp

重要: ポート番号を変更した場合、ファイアウォールの設定も忘れずに変更してください。例えば、ポートを3390に変更した場合は、UFWで3390番ポートを許可する必要があります。

bash
sudo ufw allow 3390/tcp
sudo ufw delete allow 3389/tcp # 以前の3389番ポートの許可ルールが不要なら削除

また、Windowsクライアントからの接続時にも、コンピューター名の入力欄にIPアドレス(またはホスト名)に続けてポート番号をコロンで区切って指定する必要があります(例: 192.168.1.100:3390)。

第5章 トラブルシューティング:困ったときは

xrdpを使ったリモートデスクトップ環境の構築中や利用中に、様々な問題に遭遇する可能性があります。ここでは、よくあるトラブルとその原因、対処法について説明します。

5.1 接続できない

最も多いトラブルです。Windowsクライアントから接続しようとしても、接続が確立できない、エラーメッセージが表示される、といった場合です。

確認事項:

  1. サーバーの電源は入っていますか? 当たり前ですが、サーバーとなるUbuntu PCが起動している必要があります。
  2. Ubuntuサーバーはネットワークに接続されていますか? サーバーがネットワークケーブルで接続されているか、無線LANに接続されているか確認してください。
  3. IPアドレス/ホスト名は正しいですか? Windowsクライアントに入力したサーバーのIPアドレスまたはホスト名が間違っていないか再確認してください。IPアドレスは、サーバー側で ip addr show または hostname -I で確認できます。
  4. クライアントとサーバーは通信できますか? WindowsクライアントからUbuntuサーバーに対して ping コマンドを実行し、応答があるか確認してください。
    • WindowsのコマンドプロンプトまたはPowerShellを開き、ping <UbuntuサーバーのIPアドレスまたはホスト名> を実行します。
    • 例: ping 192.168.1.100
    • 応答がない場合は、ネットワークケーブルの接続、ルーターの設定、ファイアウォールなどが原因と考えられます。
  5. xrdpサービスは起動していますか? Ubuntuサーバーで以下のコマンドを実行し、xrdpサービスのステータスを確認してください。
    bash
    sudo systemctl status xrdp

    active (running) と表示されているか確認してください。もし停止している場合は、sudo systemctl start xrdp で起動してみてください。起動に失敗している場合は、ログを確認します(後述)。
  6. ファイアウォールは正しく設定されていますか? UbuntuサーバーのUFWで3389番ポート(または変更したポート番号)が許可されているか確認してください。
    bash
    sudo ufw status

    3389/tcp ALLOW Anywhere (または特定のIPアドレスからの許可) が表示されていることを確認してください。表示されていない場合は、sudo ufw allow 3389/tcp で許可してください。UFWが有効になっていることも確認してください。
  7. ネットワーク境界(ルーターなど)のファイアウォールは? もしインターネット経由で接続しようとしている場合、サーバーが接続されているネットワークのルーターやモデムで、外部からの3389番ポート(または変更したポート番号)への通信が許可(ポートフォワーディング/ポート開放)されているか確認してください。ただし、インターネットへの直接公開はセキュリティリスクが高いため、VPNの利用を強く推奨します(前述)。
  8. サーバーとクライアントのOSバージョンは互換性がありますか? 非常に古いOSや、特殊な環境の場合は互換性の問題が発生する可能性もゼロではありませんが、一般的なWindowsとUbuntuの組み合わせであれば問題ないはずです。

5.2 ログイン画面が表示されるがログインできない

Windowsクライアントから接続すると、xrdpのログイン画面(Username, Password, Sessionを入力する画面)は表示されるが、正しいユーザー名とパスワードを入力してもデスクトップ画面が表示されず、ログイン画面に戻ってしまう、あるいはエラーメッセージが表示される場合です(ログインループ)。

確認事項と対処法:

  1. ユーザー名とパスワードは正しいですか? Ubuntuサーバーに物理的にログインできるユーザーアカウントのユーザー名とパスワードを正確に入力しているか確認してください。Caps LockやNum Lockの状態も注意してください。
  2. Ubuntu側でそのアカウントは有効ですか? リモートログインしようとしているユーザーアカウントが、Ubuntuサーバーで有効なアカウントであり、ログインできる状態であることを確認してください。
  3. xrdpのログを確認する: ログイン試行が失敗した理由がログに記録されている場合があります。Ubuntuサーバーで以下のログファイルを確認してください。
    • /var/log/xrdp.log
    • /var/log/xrdp-sesman.log
      以下のコマンドで最新のログを表示できます。
      bash
      sudo tail /var/log/xrdp.log
      sudo tail /var/log/xrdp-sesman.log

      これらのログに、認証失敗やセッション起動に関するエラーメッセージが出力されていないか確認してください。例えば、「authentication failed」や、セッション起動に関するエラー(startxfce4gnome-session の実行エラーなど)が記録されている場合があります。
  4. .xsession ファイルの設定は正しいですか? .xsession ファイルが存在し、その中に記述されているデスクトップ環境を起動するコマンドが正しいか確認してください。コマンドが間違っている、あるいはそのデスクトップ環境がインストールされていない場合は、セッション起動に失敗します。例えば、XFCEを使いたいのに startxfce4 ではなく xfce4-session と書いているなど、コマンド名が微妙に異なる場合もあります。適切なコマンドは、各デスクトップ環境のドキュメントなどで確認してください。
  5. メモリ不足: サーバーのメモリが不足している場合、新しいデスクトップセッションを起動できずにログインループになることがあります。サーバーのメモリ使用状況を確認してください。
    bash
    free -h

    特に Swap の使用量が多い場合は、メモリ不足の可能性があります。不要なアプリケーションを終了させるか、サーバーのメモリを増設することを検討してください。

5.3 画面が真っ黒/灰色になる

接続は成功し、認証も通ったように見えるが、デスクトップ画面が表示されず、真っ黒または灰色の画面だけが表示される場合です。これは、デスクトップ環境(GNOMEなど)の起動に失敗している可能性が高いです。

確認事項と対処法:

  1. .xsession ファイルの設定: 第2章で解説したように、GNOMEなど特定のデスクトップ環境では .xsession ファイルで起動コマンドを明示的に指定しないとうまく起動できないことがあります。.xsession ファイルが正しく設定されているか再確認してください。
    • ファイルが存在するか (ls -a ~ | grep .xsession)
    • ファイルの中身が正しいコマンドになっているか (cat ~/.xsession)
  2. 代替デスクトップ環境を試す: GNOMEでの問題解決が難しい場合、XFCEなどの軽量でxrdpとの相性が良いデスクトップ環境をインストールし、.xsession ファイルでそちらを起動するように設定してみてください。
    • XFCEをインストール: sudo apt install xfce4 xfce4-goodies
    • .xsession ファイルを編集: echo "startxfce4" > ~/.xsession
    • xrdpサービスを再起動: sudo systemctl restart xrdp
    • クライアントから再接続
  3. xrdp-sesmanのログを確認する: デスクトップセッション起動時のエラーは /var/log/xrdp-sesman.log に記録されます。このログファイルを確認し、エラーメッセージを探してください。startxfce4gnome-session の実行に関するエラーが出力されているはずです。
  4. Polkit認証の問題: GNOME環境で画面は表示されても、特定の操作をしようとすると応答がなくなる場合は、Polkit認証の問題かもしれません。第2章で解説したPolkit設定ファイルが正しく配置され、サービスが再起動されているか確認してください。
  5. サーバー側のデスクトップセッション: サーバーに物理的にログインしている状態でリモート接続しようとしている場合、特にGNOMEでは同じセッションを共有しようとして問題が発生することがあります。可能であれば、物理コンソールからログアウトしてからリモート接続してみてください。xrdpは通常、新しい独立したセッションを作成します。

5.4 日本語入力ができない

リモートデスクトップセッション内で日本語入力ができない場合は、前述の通り、サーバー側のIMEがリモートセッションでうまく動作しないことが原因であることが多いです。

対処法:

  • クライアント側のIMEを使用し、コピー&ペーストする: これが最も現実的で簡単な解決策です。Windows上で日本語を入力し、それをコピーしてリモートデスクトップ画面上のアプリケーションに貼り付けてください。クリップボード共有が有効になっているか確認してください。

サーバー側での日本語入力の有効化は高度な設定が必要であり、環境によっては困難な場合があります。

5.5 コピー&ペーストができない

クライアントとサーバー間でテキストやファイルをコピー&ペーストできない場合は、クリップボード共有の設定を確認します。

確認事項と対処法:

  1. クライアント側の設定: Windowsのリモートデスクトップ接続クライアントの「ローカル リソース」タブで、「クリップボード」にチェックが入っているか確認してください。
  2. xrdpの設定: /etc/xrdp/xrdp.ini ファイルでクリップボード共有が有効になっているか確認します。通常、デフォルトで有効になっていますが、[Globals] セクションの allow_cliprdr=true のようになっていることを確認してください。
  3. xrdpサービスの再起動: 設定変更や、一時的な不具合の場合、xrdpサービスを再起動することで解消することがあります。sudo systemctl restart xrdp を実行してみてください。
  4. セッションタイプの違い: 使用しているセッションタイプ(Xvncなど)やデスクトップ環境によっては、クリップボード共有の挙動が異なる場合があります。

5.6 画面がちらつく/描画が遅い

リモートデスクトップ画面の表示がスムーズでなく、カクついたり、マウス操作に遅れて画面が追随したりする場合です。

原因と対処法:

  • ネットワーク環境: 最も可能性が高い原因です。ネットワーク速度が遅い、遅延が大きい、無線LANが不安定、といった場合に発生します。有線LANへの切り替え、より高速で安定したネットワーク環境の確保を検討してください。
  • クライアント側の「エクスペリエンス」設定: Windowsクライアントの「エクスペリエンス」タブで、視覚効果を無効にする、接続速度を遅い設定にするなど、描画に関する設定を簡素化することで改善する場合があります。
  • サーバーの負荷: UbuntuサーバーのCPU使用率やメモリ使用率が高い場合、デスクトップ環境の描画処理が遅くなり、それがリモートデスクトップにも影響します。サーバー側で実行している重いアプリケーションがないか確認し、可能であれば終了させてください。
  • サーバーのスペック: 古いPCをサーバーにしている場合など、ハードウェア性能が不足していると、リモートデスクトップの描画が遅くなります。CPU、メモリ、グラフィック性能が十分か確認してください。
  • デスクトップ環境: 高機能なデスクトップ環境(GNOMEなど)は軽量なもの(XFCEなど)に比べてサーバー側のリソースを多く消費します。軽量なデスクトップ環境に変更することでパフォーマンスが向上する可能性があります。
  • xrdpの設定: /etc/xrdp/xrdp.ini ファイルの [Globals] セクションにある max_bpp (色の深さの最大値) を低く設定するなど、詳細な描画設定を調整することも可能ですが、これは慎重に行う必要があります。

これらのトラブルシューティングの手順を試しても問題が解決しない場合は、xrdpのバージョン、Ubuntuのバージョン、デスクトップ環境のバージョンなどの固有の問題である可能性も考えられます。その場合は、エラーメッセージの内容やログの詳細を基に、インターネット上のフォーラムなどで情報を検索してみると解決策が見つかるかもしれません。

第6章 Q&A:よくある質問

これまでに説明した内容以外で、xrdpについてよく聞かれる質問とその回答をまとめました。

Q1: xrdpは無料ですか?
A1: はい、xrdpはオープンソースソフトウェアとして開発されており、誰でも無償で利用できます。

Q2: Windows ServerやWindows Pro版のデスクトップに接続できますか?
A2: いいえ、xrdpはLinuxなどのUNIX系OS上で動作するRDPサーバーの実装です。Windows PCやWindows Serverへのリモートデスクトップ接続は、Windowsに標準搭載されているリモートデスクトップ機能(RDPサーバー機能)を利用してください。xrdpクライアントは存在しないため、通常はWindows標準のリモートデスクトップ接続クライアントを使って接続します。

Q3: Macや別のLinux PCからxrdpサーバーに接続できますか?
A3: はい、接続できます。MacやLinuxにはRDPクライアントソフトウェアが存在します。例えば、MacにはMicrosoft公式の「Microsoft Remote Desktop」アプリがあります。Linuxには「Remmina」などの多機能なリモート接続クライアントがあり、RDPプロトコルをサポートしています。これらのクライアントソフトウェアを使えば、xrdpをインストールしたUbuntuサーバーに接続できます。

Q4: 同時に複数のユーザーが同じUbuntuサーバーにリモート接続できますか?
A4: はい、可能です。xrdpはマルチセッションに対応しており、異なるユーザーが同時に接続しても、それぞれ独立したデスクトップセッションが提供されます。ただし、サーバーのリソース(CPU、メモリなど)は共有されるため、同時に多数のユーザーが接続するとパフォーマンスが低下する可能性があります。

Q5: サーバー側のUbuntuにGUI(デスクトップ環境)がインストールされていませんが、xrdpで接続すればリモートでGUIを使えるようになりますか?
A5: いいえ、できません。xrdpは既存のデスクトップセッションをリモート表示するためのソフトウェアです。サーバーとなるUbuntuにデスクトップ環境(GNOME, XFCEなど)がインストールされていない場合、xrdpをインストールしても表示する画面がありません。リモートデスクトップを利用するには、事前にサーバー側にデスクトップ環境をインストールしておく必要があります。

Q6: xrdpが使用するポート番号3389を変更したいのですが?
A6: はい、変更可能です。第4章「より快適に使うためのヒント」の「ポート番号の変更」セクションで解説した手順に従って、/etc/xrdp/xrdp.ini ファイルを編集し、xrdpサービスを再起動してください。また、ファイアウォールの設定変更も忘れないでください。

Q7: リモートデスクトップ接続中に、サーバー側の物理的な画面はどうなりますか?
A7: xrdpは通常、物理的なコンソールセッションとは別の、新しい仮想的なデスクトップセッションを作成します。そのため、リモートデスクトップで接続しても、サーバーに物理的に接続されているモニターには、ログイン画面が表示されたままだったり、物理的にログインしている別のユーザーの画面が表示されたりします。リモートセッションの画面が物理的な画面に表示されるわけではありません(ただし、一部の古い設定やセッションタイプでは異なる挙動をする可能性もあります)。

Q8: リモートデスクトップ接続が切断された場合、サーバー側で実行していたアプリケーションはどうなりますか?
A8: 通常、xrdpによるリモートデスクトップセッションが予期せず切断された場合でも、サーバー側のデスクトップセッション自体はすぐに終了せず、一定時間維持されます。これは、ネットワークの一時的な瞬断などで接続が切れても、すぐに再接続すれば元の作業状態に戻れるようにするためです。ただし、サーバーが再起動されたり、長時間再接続されなかったりすると、セッションは終了します。

Q9: セキュリティが心配です。どのような対策が必要ですか?
A9: 最も重要なのは、インターネット経由での直接公開を避けることです。インターネットからアクセスする必要がある場合は、VPNを必ず併用してください。VPNを使わない場合は、ファイアウォールで接続元IPアドレスを厳密に制限するなどの対策が必須ですが、VPNに比べると安全性は劣ります。ローカルネットワーク内での利用であればリスクは比較的低いですが、Ubuntuサーバーのユーザーアカウントには強力なパスワードを設定し、不要なサービスは停止しておくなどの基本的なセキュリティ対策は怠らないようにしましょう。

第7章 まとめ

この記事では、Linux初心者の方に向けて、xrdpを使ったUbuntuリモートデスクトップ環境の構築方法を詳細に解説しました。

リモートデスクトップの基本的な仕組みから、xrdpのインストール、ファイアウォール設定、そしてUbuntuのデフォルトデスクトップ環境であるGNOMEで発生しがちな問題への対策(.xsessionファイル、Polkit認証)まで、ステップバイステップで説明しました。また、Windowsクライアントからの具体的な接続手順や、より快適に利用するためのヒント(ネットワーク環境、パフォーマンス改善、VPNによるセキュリティ向上)、そしてよく遭遇するトラブルとその解決策についても触れました。

xrdpを使えば、Windows PCからUbuntuデスクトップを比較的快適にリモート操作できます。これにより、以下のようなメリットが得られます。

  • 場所を選ばない作業: 自宅内のどこからでも、あるいは外出先から自宅のUbuntu PCにアクセスして作業ができます。
  • PCのリソース活用: スペックの高い自宅のUbuntu PCを、低スペックなノートPCやタブレットからフル活用できます。
  • 作業効率向上: 複数のPC間でファイルを簡単にやり取りしたり、環境を切り替えたりすることなく作業を継続できます。

構築過程でいくつかの設定やトラブルシューティングが必要になるかもしれませんが、この記事を参考にしていただければ、きっと快適なリモートデスクトップ環境を手に入れられるはずです。特にGNOMEを使用する場合は、.xsession ファイルやPolkit設定が重要になります。

最後に繰り返しになりますが、インターネット経由で利用する場合は、セキュリティのために必ずVPNを併用するか、厳格なファイアウォール設定を行ってください。 これを怠ると、不正アクセスのリスクが非常に高まります。

これで、あなたのUbuntuライフがより便利で快適なものになることを願っています!

免責事項:
この記事で紹介している手順は、執筆時点での情報に基づいています。Ubuntuやxrdpのバージョンアップにより、手順や設定ファイルの内容が変更される可能性があります。また、ご利用の環境(ハードウェア、ネットワーク設定、他のソフトウェアなど)によって、予期しない問題が発生することも考えられます。本記事の内容を参考に作業を行う際は、ご自身の判断と責任において実施してください。重要なデータは必ず事前にバックアップを取るようにしてください。


この記事の終わりに

これで、約5000語を目標としたxrdpに関する詳細な初心者向け記事は完了です。リモートデスクトップの概念から始まり、Ubuntuでのインストール・設定(GNOME対策含む)、Windowsからの接続、快適化のヒント、トラブルシューティング、Q&Aまで、可能な限り網羅的かつ詳細に記述しました。特にGNOME周りの問題とPolkit認証の回避策は、多くのユーザーがつまずきやすい点なので手厚く解説しました。日本語入力の課題やセキュリティ上の注意点(特にVPN推奨)も強調しました。この長さであれば、5000語にかなり近いボリュームになっているかと思われます。
“`markdown

【初心者向け】xrdpで快適リモートデスクトップ環境を構築:徹底解説ガイド

はじめに

自宅や職場のコンピューターに、外出先から、あるいは家の中の別の部屋からアクセスしたいと思ったことはありませんか? そんな時に役立つのが「リモートデスクトップ」です。リモートデスクトップを使えば、手元の端末から離れた場所にあるコンピューターの画面を操作し、まるで目の前にあるかのように作業を進めることができます。

Windowsには標準でリモートデスクトップ機能が搭載されていますが、Linux、特にデスクトップ環境を持つUbuntuなどをリモート操作したい場合、どのような方法があるのでしょうか? いくつかの選択肢がありますが、Windowsクライアントからの接続との互換性が高く、比較的快適な操作感を得やすいのが「xrdp」を使った方法です。

この記事は、Linux(特にUbuntu)のデスクトップ環境をWindows PCからリモート操作したいと考えている、リモートデスクトップやLinuxのコマンド操作に不慣れな初心者の方を対象としています。xrdpの基本的な概念から、Ubuntuへのインストール、設定、Windowsからの接続方法、さらには発生しがちなトラブルとその対策、そしてより快適に使うためのヒントまで、図解なしでも分かりやすいように、ステップバイステップで詳細に解説していきます。

この記事を読めば、あなたのUbuntuマシンを、いつでもどこからでもアクセスできる便利なリモートデスクトップサーバーとして活用できるようになるでしょう。少し長い記事になりますが、ぜひ最後までお付き合いください。

この記事で学ぶこと:

  • リモートデスクトップの基本概念
  • xrdpとは何か、なぜxrdpを選ぶのか
  • Ubuntuにxrdpをインストールし、基本的な設定を行う方法
  • WindowsからUbuntuへリモートデスクトップ接続する方法
  • GNOMEデスクトップ環境で発生しがちな問題と対策
  • 日本語入力やクリップボード共有について
  • 接続できないなどのトラブルシューティング
  • より快適・安全に利用するためのヒント

前提となる知識:

  • 基本的なコンピューターの操作(ファイル操作、ソフトウェアのインストールなど)
  • Windows PCの基本的な操作
  • Ubuntuがインストールされたコンピューター(サーバー側)
  • Ubuntuでの基本的なコマンド操作(sudo, apt, ファイル編集など)

これらの知識がなくても、記事内の手順をそのまま実行することで環境構築は可能です。しかし、コマンドの意味などを理解しておくと、よりスムーズに進められるでしょう。

第1章 リモートデスクトップの基本概念とxrdpとは

リモートデスクトップ環境を構築する前に、いくつかの基本的な概念を理解しておきましょう。

1.1 リモートデスクトップの仕組み:クライアント/サーバーモデル

リモートデスクトップは、一般的に「クライアント/サーバーモデル」という形で実現されます。

  • サーバー: リモート操作される側のコンピューター。このコンピューターの画面や操作を外部に提供します。今回の場合は、UbuntuがインストールされたPCがこれにあたります。サーバー側には、画面情報や操作情報をやり取りするための「リモートデスクトップサーバーソフトウェア」が必要です。
  • クライアント: リモート操作する側のコンピューターやデバイス。この端末からサーバーに接続し、サーバーの画面を表示したり、キーボードやマウスで操作したりします。今回の場合は、Windows PCがこれにあたります。クライアント側には、サーバーから送られてくる情報を受け取り、画面に表示し、操作情報をサーバーに送り返すための「リモートデスクトップクライアントソフトウェア」が必要です。Windowsには標準で「リモートデスクトップ接続」というクライアントソフトウェアが搭載されています。

このモデルでは、クライアントからサーバーに接続要求が出され、サーバーがそれを受け入れると、サーバーの画面イメージやキーボード・マウスの操作情報などがネットワークを介してやり取りされます。

1.2 RDP (Remote Desktop Protocol) とは?

RDPは「Remote Desktop Protocol」の略で、Microsoftが開発したリモートデスクトップのための通信プロトコル(通信規約)です。Windowsに標準搭載されているリモートデスクトップ機能は、このRDPプロトコルを使用しています。

RDPの特徴は、単に画面を画像として転送するだけでなく、描画命令やキー入力、マウス操作などの情報を効率的にやり取りできる点にあります。これにより、比較的スムーズで快適な操作感を実現しやすいとされています。また、クリップボードの共有(コピー&ペースト)や、クライアント側のプリンターやドライブをサーバー側で利用する機能などもサポートされています。

1.3 VNC とは何が違う?

リモートデスクトップの技術としては、RDPの他にVNC (Virtual Network Computing) もよく知られています。VNCもリモートデスクトップを実現するプロトコルですが、RDPとは仕組みが少し異なります。

  • VNC: 基本的に、サーバーの画面の内容を画像としてキャプチャし、それをクライアントに転送します。クライアントからの操作は、画像上の座標としてサーバーに送られます。これは比較的シンプルで汎用性が高い(様々なOSやデスクトップ環境に対応しやすい)方式ですが、動きの多い画面や高解像度の画面では、画像転送によるネットワーク負荷が大きくなりやすく、画面の遅延やカクつきが発生しやすい傾向があります。これは「画面転送」方式とも言えます。
  • RDP: 前述の通り、描画命令やテキスト情報などを効率的にやり取りします。これにより、ネットワーク負荷を抑えつつ、より滑らかな操作感を実現できる場合があります。これは「セッション転送」方式とも言えます(より厳密には、サーバー側で仮想的なグラフィックセッションを作成し、そこからの出力をクライアントに送るイメージです)。

今回の目的である「WindowsクライアントからUbuntuデスクトップを快適に操作する」という点において、RDPプロトコルに対応したxrdpは有力な選択肢となります。Windows標準のリモートデスクトップ接続クライアントをそのまま使えるという利点も大きいです。

1.4 xrdpとは? なぜxrdpを選ぶのか

xrdpは、LinuxなどのUNIX系OS上で動作する、オープンソースのRDPサーバー実装です。MicrosoftのRDPプロトコルを理解し、それに従ってWindowsクライアントなどと通信することができます。

xrdpを選ぶ主な理由は以下の通りです。

  • Windowsクライアントとの高い互換性: Windows標準のリモートデスクトップ接続クライアントから特別な設定なしに接続できます。
  • 比較的良好なパフォーマンス: VNCと比較して、特に描画の効率が高く、快適な操作感を得やすいとされています。
  • 広く使われている実績: LinuxでのRDPサーバーとしては定番の一つであり、情報も比較的豊富です。
  • 追加機能: クリップボード共有、プリンター共有(設定が必要な場合あり)、マルチモニター対応などもサポートしています。

もちろん、xrdpにも完璧ではありません。特にデスクトップ環境(GNOMEやKDEなど)との相性によって、いくつかの設定や回避策が必要になる場合があります。また、日本語入力に関しては、クライアント側のIMEを使うなど工夫が必要になることが多いです。しかし、これらの課題は適切な設定を行うことで克服可能です。

この記事では、特に一般的なUbuntuデスクトップ環境(デフォルトではGNOMEが多い)でのxrdp構築に焦点を当て、これらの課題に対する具体的な解決策も含めて解説します。

第2章 サーバー側の準備:Ubuntuへのxrdpインストールと設定

ここからは、リモート操作される側となるUbuntuコンピューター(サーバー)での作業を進めていきます。

2.1 使用するUbuntuのバージョンについて

Ubuntuには、半年ごとに新しいバージョンがリリースされる通常版と、2年ごとにリリースされ長期的なサポートが提供されるLTS (Long Term Support) 版があります。リモートデスクトップサーバーとして安定して利用するなら、LTS版(例: 20.04 LTS, 22.04 LTSなど) を使用することを強く推奨します。LTS版はセキュリティアップデートなどが長期間提供されるため、安心して使い続けることができます。

この記事では、特にバージョンを指定せず一般的な手順を解説しますが、Ubuntu 20.04 LTS や 22.04 LTS であれば基本的に同様の手順で構築できます。

2.2 デスクトップ環境の確認

Ubuntuをインストールする際に、デスクトップ環境(GUI)も同時にインストールしていることを確認してください。xrdpはデスクトップ環境を提供するためのものであり、CUI(コマンドラインインターフェース)のみのUbuntuにxrdpを入れても、リモートで操作できる画面はありません。

Ubuntuのデフォルトデスクトップ環境はGNOMEです。しかし、GNOMEはxrdpとの組み合わせで、画面が真っ黒になる、ログインループに陥る、Polkit認証が必要な操作ができない、といった相性問題が発生しやすいことが知られています。

これらの問題を回避するため、後述する追加設定を行うか、あるいはGNOMEよりも軽量でxrdpとの相性が良いとされる代替デスクトップ環境(XFCE, MATE, LXDEなど)をインストールして利用することも検討できます。この記事では、デフォルトのGNOMEで発生しがちな問題への対策を中心に解説しますが、代替デスクトップ環境の導入についても触れます。

まずは、現在のUbuntu環境にxrdpをインストールすることから始めましょう。

2.3 システムのアップデート

ソフトウェアをインストールする前には、システムのパッケージ情報を最新の状態に更新し、既存のパッケージをアップグレードするのが良い習慣です。これにより、最新のバージョンのソフトウェアをインストールできるだけでなく、システムの安定性も保てます。

Ubuntuサーバーにログインし、ターミナルを開いて以下のコマンドを実行します。

bash
sudo apt update

このコマンドは、インターネット上のUbuntuのソフトウェアリポジトリ(ソフトウェアの置き場所)から、利用可能なパッケージのリストを最新の状態に更新します。実行にはインターネット接続が必要です。

次に、以下のコマンドでインストール済みのパッケージをアップグレードします。

bash
sudo apt upgrade

このコマンドは、apt updateで見つかった新しいバージョンのパッケージをインストールします。途中で続行するか聞かれたら y を入力してEnterキーを押してください。アップグレードには少し時間がかかる場合があります。

2.4 xrdpのインストール

システムの準備ができたら、いよいよxrdpをインストールします。以下のコマンドをターミナルで実行してください。

bash
sudo apt install xrdp

このコマンドは、xrdpパッケージとその依存関係にあるパッケージをインストールします。インストール中に続行するか聞かれたら y を入力してEnterキーを押してください。

インストールが完了すると、xrdpサービスは自動的に起動し、コンピューター起動時にも自動的に立ち上がるように設定されます。

インストール後、xrdpサービスの現在の状態を確認してみましょう。

bash
sudo systemctl status xrdp

このコマンドを実行すると、xrdpサービスが現在「active (running)」の状態であることを確認できるはずです。もしactiveになっていない場合は、以下のコマンドでサービスを起動できます。

bash
sudo systemctl start xrdp

コンピューター起動時に自動的にxrdpサービスが開始されるように設定されているかも確認しておきましょう。通常、apt install xrdp で自動的に設定されますが、念のため以下のコマンドで確認・設定できます。

bash
sudo systemctl is-enabled xrdp

もし disabled と表示された場合は、以下のコマンドで有効化してください。

bash
sudo systemctl enable xrdp

2.5 ファイアウォール設定 (UFW)

Ubuntuには、標準でUFW (Uncomplicated Firewall) というファイアウォール管理ツールが搭載されています。セキュリティのため、必要な通信だけを許可するようにファイアウォールを設定しておくことが重要です。

xrdpはデフォルトでTCPポートの3389番ポートを使用します。WindowsクライアントからUbuntuサーバーにリモートデスクトップ接続するためには、この3389番ポートへの通信を許可する必要があります。

まず、UFWの状態を確認しましょう。

bash
sudo ufw status

もしUFWが「inactive」(無効)になっている場合は、このステップは省略しても構いませんが、セキュリティのために有効化することを強く推奨します。Status: active と表示されていれば、UFWは有効になっています。有効な場合は、既になにかルールが設定されているか確認してください。

UFWが有効な場合、またはこれから有効にする場合は、以下のコマンドで3389番ポートへのTCP通信を許可します。

bash
sudo ufw allow 3389/tcp

これで、外部から3389番ポートへの接続が許可されます。

もしUFWが inactive だった場合は、以下のコマンドで有効化します。

bash
sudo ufw enable

有効化する際に「This may disrupt existing ssh connections. Proceed with operation (y|n)?」のような警告が表示されることがありますが、SSHで接続している場合は、SSHポート(デフォルトは22番)が既に許可されていることを確認してから有効化してください(通常、Ubuntuインストール時にSSHを有効にしている場合は自動的に22番ポートが許可されます)。UFWを有効化すると、明示的に許可したポート以外の通信はブロックされるようになります。

再度 sudo ufw status を実行し、3389/tcp ALLOW Anywhere のような行が表示されていることを確認してください。Anywhere はどのIPアドレスからでも許可するという意味です。もし特定のIPアドレスからのみ接続を許可したい場合は、sudo ufw allow from <許可したいIPアドレス> to any port 3389 proto tcp のように指定することも可能です。セキュリティを高めるためには、接続元IPアドレスを限定するのが望ましいですが、ここではAnywhereで進めます。

これで、xrdpのインストールと基本的なファイアウォール設定は完了です。

2.6 追加設定(快適化、GNOME対策など)

このままの状態でもWindowsから接続できる場合もありますが、特にGNOMEデスクトップ環境を使用している場合や、より快適に利用するためには、いくつかの追加設定が必要になることが多いです。

2.6.1 セッションタイプの指定 (/etc/xrdp/xrdp.ini)

xrdpは、いくつかの方法でデスクトップセッションを起動できます。デフォルトでは、xrdp.ini という設定ファイルで定義されたセッションタイプ([xrdp-sesman] セクションや、[Xvnc], [sesman-Xvnc] などのセクション)が使用されます。

Ubuntuにapt install xrdpでインストールした場合、デフォルトでは sesman-Xvnc というセッションが使用されるように設定されていることが多いです。これは、xrdpが内部的にXvnc(VNCサーバーの一種)を起動し、その画面をRDPプロトコルに変換してクライアントに送るという方式です。この方式でも接続は可能ですが、GNOMEなどの最新のデスクトップ環境との相性があまり良くなかったり、パフォーマンスが最適でなかったりする場合があります。

よりネイティブなRDPセッションに近い形や、特定のデスクトップ環境を確実に起動させるために、設定ファイルを編集することがあります。設定ファイルは /etc/xrdp/xrdp.ini です。このファイルを編集するには、sudo コマンドとテキストエディタを使用します。例えば、nanoエディタを使う場合は以下のコマンドです。

bash
sudo nano /etc/xrdp/xrdp.ini

このファイルには様々な設定項目がありますが、ここでは主に以下の点を確認・編集することがあります。

  • [Globals] セクション:
    • port=3389: 接続ポート。変更したい場合はここを編集します。
    • allowed_users=any: xrdpに接続できるユーザーを指定します。デフォルトの any であれば、システム上のどのユーザーでも接続できます。console_users にすると、物理的にコンソールにログインできるユーザーのみに制限できます。セキュリティを高めるなら console_users にするのも手ですが、リモート専用ユーザーを使いたい場合は any のままで良いでしょう。
  • [xrdp-sesman] セクション:
    • ListenPort=3350: xrdp-sesman(セッションマネージャー)が内部的にリッスンしているポートです。通常変更する必要はありません。
    • User, Group, PrivSepUser: セッション実行時のユーザー・グループに関する設定。デフォルトのままでOKです。
  • セッション定義セクション ([Xvnc], [sesman-vnc], [sesman-X11rdp] など):
    • xrdpがどのような方法でデスクトップセッションを起動するかを定義しています。aptでインストールした場合、[Xvnc][sesman-Xvnc]がデフォルトで有効になっていることが多いです。

デフォルトの /etc/xrdp/xrdp.ini は、いくつかのセッションタイプが定義されており、接続時に選択できるようになっています。しかし、GNOMEをうまく起動できない場合など、起動するデスクトップ環境を明示的に指定する必要があります。これは次の.xsessionファイルの設定と関連します。

2.6.2 GNOME環境での問題回避と .xsession ファイル

UbuntuのデフォルトであるGNOMEは、Waylandという新しいディスプレイサーバー技術をデフォルトで使用するようになってきています。しかし、xrdpはWaylandに完全には対応しておらず、Xorgという従来のディスプレイサーバーを前提としています。このため、GNOME環境では以下のような問題が発生しやすいです。

  • 接続しても画面が真っ黒または灰色になる。
  • ログイン画面は表示されるが、認証後にデスクトップが表示されず、再度ログイン画面に戻ってしまう(ログインループ)。
  • ファイルマネージャーで権限が必要な操作(例: システムフォルダーへのファイルコピー)をしようとすると、パスワード入力を求められるが、認証ダイアログが表示されなかったり、パスワードを入力しても認証が通らなかったりする(Polkit認証の問題)。

これらの問題を回避するために、いくつかの方法があります。

方法1:代替デスクトップ環境をインストールする

GNOME以外のデスクトップ環境(XFCE, MATE, LXDE, Cinnamonなど)は、一般的にXorg上で動作し、xrdpとの相性が良い傾向があります。特にXFCEは軽量でリモートデスクトップに適しています。

例:XFCEデスクトップ環境をインストールする場合

bash
sudo apt install xfce4 xfce4-goodies

インストール後、xrdpセッションでXFCEを起動するように設定します。

方法2:.xsession ファイルを作成・編集する(GNOMEで試す場合)

xrdpは、ユーザーのホームディレクトリにある .xsession というファイルを読み込み、その中に書かれたコマンドを実行してデスクトップセッションを起動しようとします。このファイルを使って、起動したいデスクトップ環境を明示的に指定することができます。

.xsession ファイルが存在しない場合は新規作成します。以下のコマンドで編集(新規作成)できます。

bash
nano ~/.xsession

ファイルの中に、起動したいデスクトップ環境のコマンドを1行だけ記述します。

  • GNOMEの場合:
    bash
    gnome-session

    (GNOMEがWaylandで起動しようとするのを防ぐため、実際にはもう少し工夫が必要な場合があります。後述のPolkit認証問題の対策と合わせて行うのが良いでしょう。)
  • XFCEの場合:
    bash
    startxfce4
  • MATEの場合:
    bash
    mate-session

ファイルを保存して閉じます(nanoの場合: Ctrl+X, Y, Enter)。

この .xsession ファイルを設定することで、xrdpセッションで指定したデスクトップ環境が起動するようになります。

方法3:xrdpログイン画面でセッションを選択する

xrdpに接続すると、ユーザー名とパスワードを入力する画面の他に、「Session」を選択するドロップダウンリストが表示されることがあります。ここに Xvnc や、システムにインストールされているデスクトップ環境(GNOME, XFCEなど)が表示されます。ここで適切なセッションを選択することで、起動するデスクトップ環境を切り替えられます。

しかし、GNOMEを選択しても上述の問題で起動できないことがあるため、.xsession ファイルで起動したい環境を明示的に指定する方法が確実です。

2.6.3 Polkit認証の問題と回避策

GNOMEなどで発生しやすいもう一つの問題が、Polkit認証が必要な操作(例: システム設定の変更、ソフトウェアのインストール、ゴミ箱を空にするなど)がリモートデスクトップセッションから行えないことです。パスワード入力を求められるダイアログが表示されても、パスワードを入力しても受け付けられなかったり、そもそもダイアログが表示されなかったりします。

これは、xrdpセッションが通常のログインセッションとは異なる扱いをされるために発生する問題です。この問題を回避するためには、Polkitに特定の操作を認証なしで許可する設定を追加する必要があります。

以下の2つの設定ファイルを作成(または編集)します。これらのファイルは、Polkitに対して colord および geoclue というサービスに関する操作を認証なしで許可する設定です。これらはGNOMEデスクトップ環境でPolkit認証が必要となる典型的なサービスです。

まず、02-allow-colord.conf を作成します。

bash
sudo nano /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf

ファイルの中に以下の内容を記述します。

polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.color-manager.create-device" ||
action.id == "org.freedesktop.color-manager.create-profile" ||
action.id == "org.freedesktop.color-manager.delete-device" ||
action.id == "org.freedesktop.color-manager.delete-profile" ||
action.id == "org.freedesktop.color-manager.modify-device" ||
action.id == "org.freedesktop.color-manager.modify-profile") &&
subject.isInGroup("xrdp")) {
return polkit.Result.YES;
}
});

ファイルを保存して閉じます(nanoの場合: Ctrl+X, Y, Enter)。

次に、03-allow-geoclue.conf を作成します。

bash
sudo nano /etc/polkit-1/localauthority.conf.d/03-allow-geoclue.conf

ファイルの中に以下の内容を記述します。

polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.Geoclue2.Client.Authorize") &&
subject.isInGroup("xrdp")) {
return polkit.Result.YES;
}
});

ファイルを保存して閉じます(nanoの場合: Ctrl+X, Y, Enter)。

これらの設定は、xrdp グループに所属するユーザーに対して、上記のアクションを認証なしで許可するという内容です。apt install xrdp を実行すると、xrdp というシステムグループが作成され、xrdpサービスはこのグループで実行されるため、この設定が有効になります。

これらの設定変更を反映させるためには、システムを再起動するか、Polkitサービスを再起動する必要があります。簡単なのはシステム再起動です。

bash
sudo systemctl restart polkit

または、

bash
sudo reboot

です。再起動後は、リモートデスクトップセッションからPolkit認証が必要な操作が正常に行えるようになるか確認してください。

補足: 上記のPolkit設定は一般的なGNOME環境での問題を解決するためのものですが、他のデスクトップ環境や特定のアプリケーションによっては、別のPolkit認証が必要になる場合があります。その都度、/var/log/auth.log などのログを確認して、どのaction.id が拒否されているかを特定し、同様の設定ファイルを追加する必要があります。ただし、これは少し高度な作業になります。

2.6.4 日本語入力に関する注意点

xrdp経由のリモートデスクトップセッションでは、サーバー側のIME(日本語入力システム、例: ibus-mozc)がうまく動作しない、あるいは動作が不安定になることが多いです。テキストエディタなどでは日本語入力できても、ターミナルや特定のアプリケーションでできない、といった現象が発生しがちです。

この問題の一般的な回避策は、クライアント側のIMEを使用して日本語を入力し、それをコピー&ペーストでサーバー側のアプリケーションに貼り付けるという方法です。xrdpはクリップボード共有をサポートしているため、この方法が比較的スムーズに行えます。

サーバー側のIMEをリモートセッションで確実に動作させるための設定は非常に複雑であり、環境依存性も高いため、初心者向けとしては上記のコピー&ペーストによる方法をお勧めします。

クリップボード共有の確認:

Windowsのリモートデスクトップ接続クライアントで、接続オプションの「ローカル リソース」タブを開き、「クリップボード」にチェックが入っていることを確認してください。通常はデフォルトでチェックが入っています。

2.6.5 解像度設定

リモートデスクトップの解像度は、基本的にクライアント側の設定で決まります。Windowsのリモートデスクトップ接続クライアントで、接続オプションの「画面」タブを開き、表示構成(解像度)を設定できます。

サーバー側のデスクトップ環境は、クライアントから要求された解像度に合わせて仮想的なディスプレイを作成して表示します。通常、特別なサーバー側の設定は必要ありません。ただし、特定の解像度でうまく表示されないなどの問題が発生した場合は、.xsession ファイルや /etc/xrdp/sesman.ini などの設定ファイルでディスプレイ設定(例: xrandr コマンドの実行)を調整する必要があるかもしれません。しかし、これは高度な設定となるため、ここでは触れません。まずはクライアント側の設定で希望の解像度が得られるか試してみてください。

2.6.6 xrdpサービスの再起動

.xsession ファイルやPolkit設定ファイルなど、xrdpやそのセッションマネージャーに関連する設定ファイルを変更した場合は、変更を反映させるためにxrdpサービスを再起動する必要があります。

bash
sudo systemctl restart xrdp

必要であれば、Polkitサービスも再起動します。

bash
sudo systemctl restart polkit

ここまでの作業で、サーバー側(Ubuntu)の準備は完了です。インストール、ファイアウォール設定、そしてGNOME環境での問題対策や.xsessionファイルの設定を行いました。

第3章 クライアント側からの接続:Windowsリモートデスクトップ接続

サーバー側(Ubuntu)の準備ができたら、いよいよクライアント側であるWindows PCから接続を試みます。

3.1 サーバーのIPアドレスまたはホスト名の確認

Windows PCから接続するには、接続先であるUbuntuサーバーのIPアドレスまたはネットワーク上のホスト名が必要です。

Ubuntuサーバーでターミナルを開き、以下のコマンドを実行してIPアドレスを確認します。

bash
ip addr show

または

bash
hostname -I

これらのコマンドを実行すると、ネットワークインターフェース(例: eth0wlan0)に割り当てられているIPアドレスが表示されます。通常、プライベートネットワーク内(自宅や職場のLAN)であれば 192.168.x.x10.x.x.x のような形式のIPアドレスが割り当てられているはずです。表示されたIPアドレスを控えておいてください。

もしネットワーク上で名前解決(ホスト名からIPアドレスを引くこと)ができていれば、IPアドレスの代わりにホスト名(例: ubuntu-server)を使用することも可能です。ホスト名を確認するには hostname コマンドを実行します。

bash
hostname

3.2 Windowsリモートデスクトップ接続クライアントの起動

Windows PCで、リモートデスクトップ接続クライアントを起動します。

  1. Windowsのスタートメニューを開き、「リモート デスクトップ接続」と検索して起動します。
  2. または、「ファイル名を指定して実行」(Windowsキー + R)を開き、「mstsc」と入力してEnterキーを押します。

3.3 接続先情報の入力

リモートデスクトップ接続ウィンドウが表示されたら、以下の情報を入力します。

  • コンピューター: サーバーであるUbuntuのIPアドレスまたはホスト名を入力します(例: 192.168.1.100 または ubuntu-server)。

ここで「オプションの表示」をクリックすると、詳細な設定が行えます。

3.4 接続オプションの設定(推奨)

接続オプションでは、画面表示、ローカルリソース、エクスペリエンスなどを設定できます。

  • 画面タブ:
    • 表示構成: リモートデスクトップの解像度を設定します。好みの解像度を選択してください。
    • 色の深さ: 表示する色の数を設定します。「True Color (32ビット)」が最も綺麗ですが、ネットワーク帯域を消費します。ネットワークが遅い場合は色数を減らすことでパフォーマンスが向上することがあります。
  • ローカル リソースタブ:
    • リモート オーディオ: リモートセッションの音声をどこで再生するか設定します。通常は「このコンピューターで再生する」(クライアントPCから音が出る)で良いでしょう。
    • キーボード: Windowsキーの組み合わせなどをローカルとリモートのどちらに適用するか設定します。
    • ローカル デバイスとリソース: クライアントPCのプリンターやドライブをリモートセッションで利用できるようにする設定です。
      • プリンター: クライアントPCにインストールされているプリンターをサーバー側で利用できるようにします。
      • クリップボード: クライアントとサーバー間でコピー&ペーストができるようにします。これは必ずチェックを入れておくことを強く推奨します。
      • 詳細: ドライブ(ローカルディスク)などをサーバー側で利用できるように設定できます。サーバー側からクライアント側のファイルにアクセスしたい場合に便利ですが、セキュリティには注意が必要です。
  • エクスペリエンスタブ:
    • 接続の速度: ネットワーク環境に合わせて設定を選択します。または「接続品質を自動的に検出する」でも良いでしょう。選択した設定によって、デスクトップの視覚効果(ウィンドウのアニメーション、フォントスムージングなど)が自動的に調整され、パフォーマンスが最適化されます。ネットワークが遅い場合は、「低速回線」や「モデム (56 Kbps)」などを選択し、視覚効果を無効にすることで応答性が向上します。
    • 視覚スタイル、デスクトップのコンポジション、ウィンドウ ドラッグ時のコンテンツ表示など: 個別に有効/無効を設定できます。パフォーマンスを優先する場合は、これらを無効(チェックを外す)にすると良いでしょう。

設定が完了したら、「接続」ボタンをクリックします。

3.5 ユーザー名とパスワードの入力

「接続」をクリックすると、セキュリティ警告が表示される場合があります。「はい」をクリックして続行します。

次に、xrdpのログイン画面が表示されます。

  • Username: Ubuntuサーバーにログインするユーザー名を入力します。これはUbuntuのユーザーアカウント名です。
  • Password: そのユーザーアカウントのパスワードを入力します。
  • Session: ここが重要です。ドロップダウンリストから、起動したいデスクトップセッションを選択します。
    • デフォルトでは Xvnc などが表示されていることが多いです。
    • もし .xsession ファイルで特定のデスクトップ環境を指定している場合は、その設定が優先されることが多いですが、念のためリストに表示されている項目も確認してみてください。
    • .xsessionstartxfce4 と記述した場合、Xvnc セッションを選択してもXFCEが起動することがあります。

ユーザー名、パスワード、セッションを選択して、「OK」をクリックします。

3.6 初回接続時の証明書警告について

初回接続時や、サーバーの構成が変わった場合などに、「リモートコンピューターのIDを識別できません。」といった内容のセキュリティ警告が表示されることがあります。これは、サーバーが自己署名証明書を使用しているためで、通常は問題ありません。

警告の内容を確認し、接続先のIPアドレスやホスト名が正しいことを確認したら、「はい」をクリックして接続を続行してください。次回以降この警告を表示させたくない場合は、「このコンピューターへの接続について今後確認しない」にチェックを入れても構いません。

3.7 接続後の画面操作

認証に成功すると、Ubuntuサーバーのデスクトップ画面がWindowsのリモートデスクトップ接続ウィンドウ内に表示されます。これで、まるでUbuntuサーバーの目の前に座っているかのように、マウスやキーボードを使って操作できるようになります。

  • ウィンドウの移動やサイズ変更、アプリケーションの起動など、通常のデスクトップ操作が行えます。
  • Ctrl+Cでコピー、Ctrl+Vで貼り付けなど、クリップボード共有が有効になっていれば、WindowsとUbuntuの間でテキストやファイルをコピー&ペーストできます(ファイルコピーは環境による)。
  • 画面の表示速度が遅い、カクつくといった場合は、ネットワーク環境やクライアント側の「エクスペリエンス」設定を見直してください。
  • リモートセッションを終了するには、リモートデスクトップ接続ウィンドウを閉じるか、Ubuntuのデスクトップ環境からログアウトします。ウィンドウを閉じると、通常はサーバー側のデスクトップセッションも終了します。

これで、xrdpを使ったUbuntuリモートデスクトップ環境の構築とWindowsからの接続は完了です!

第4章 より快適に使うためのヒント

基本的なリモートデスクトップ接続ができるようになったら、次はより快適に、そして安全に利用するためのヒントを紹介します。

4.1 ネットワーク環境

リモートデスクトップの快適さは、ネットワーク環境に大きく左右されます。

  • 有線LAN接続: サーバー側、クライアント側ともに、可能であれば有線LANで接続することを推奨します。無線LANに比べて通信が安定し、速度も速いため、遅延やカクつきを軽減できます。
  • 無線LANの場合: 使用している無線LANが安定しているか確認してください。電波状況が悪かったり、同じ帯域を使用しているデバイスが多かったりすると、通信が不安定になり快適な操作が難しくなります。
  • ネットワーク帯域: HD画質以上のデスクトップ画面をスムーズに表示するには、ある程度のネットワーク帯域(速度)が必要です。特に動画再生やゲームなど、画面の変化が激しい操作を行う場合は、より高速なネットワークが必要になります。
  • 遅延 (Ping値): コマンドの実行やマウス操作に対する画面の反応速度は、ネットワークの遅延(ping値)に影響します。遅延が大きいほど、操作に対する反応が遅く感じられます。

4.2 VPNの利用(セキュリティ向上)

構築したxrdp環境をインターネット経由で利用する場合、つまり自宅のUbuntuサーバーに外出先のPCから接続する場合など、セキュリティには最大限の注意が必要です。

xrdpはRDPプロトコルを使用しますが、インターネット上に直接公開すると、悪意のある第三者からの攻撃(パスワードの総当たり攻撃など)の標的となるリスクがあります。

このリスクを大幅に軽減するため、インターネット経由でのリモートデスクトップ接続にはVPN (Virtual Private Network) を併用することを強く推奨します。

VPNを使用すると、クライアントPCとサーバーがあるネットワークの間で暗号化された仮想的な通信路を構築できます。クライアントはまずVPNサーバーに接続し、VPN経由で目的のUbuntuサーバーにアクセスします。これにより、リモートデスクトップの通信自体が暗号化され、安全性が向上します。また、Ubuntuサーバーの3389番ポートを直接インターネットに公開する必要がなくなります。

VPNを構築する方法はいくつかあります。

  • VPNルーター: 自宅のルーターにVPNサーバー機能があれば、それを利用するのが比較的簡単です。
  • VPNサーバーソフトウェア: Ubuntuサーバー自体にWireGuardやOpenVPNなどのVPNサーバーソフトウェアをインストールして構築することも可能です。これは少し高度な設定が必要になりますが、柔軟性が高い方法です。

初心者の方には、まずルーターのVPN機能を確認してみるか、信頼できるVPNサービスの利用も検討できます(この場合はUbuntuサーバーがあるネットワークとは別のVPNサービスを利用することになりますが、クライアント側をVPNに接続した状態でUbuntuにアクセスするという形になります)。

とにかく、3389番ポートを安易にインターネットに直接公開することは避けてください。 公開する場合は、ファイアウォールで接続元IPアドレスを厳密に制限するなどの対策が必須ですが、VPN利用が最も安全な方法です。

4.3 サーバーの電源管理

リモートデスクトップでいつでもサーバーにアクセスできるようにするためには、サーバーとなるUbuntuコンピューターが常に起動しているか、少なくともリモートからの操作で起動できる状態にある必要があります。

  • 常時起動: 最も簡単なのは、サーバーを常に起動状態にしておくことです。スリープや休止状態にならないように、電源設定を確認しておきましょう。
  • Wake-on-LAN (WoL): サーバーが電源オフまたはスリープ状態になっていても、ネットワーク経由でマジックパケットと呼ばれる特殊な信号を受け取ることで起動させる機能です。サーバー側のBIOS設定、ネットワークカードの設定、クライアント側からの送信ツールなど、いくつかの設定が必要になりますが、消費電力を抑えたい場合に便利な機能です。設定方法はサーバーのハードウェアやUbuntuのバージョンによって異なるため、ここでは詳細な手順は割愛しますが、興味があれば調べてみてください。

4.4 パフォーマンス改善

リモートデスクトップの表示が遅い、操作に遅延があるといった場合は、以下の方法でパフォーマンスを改善できる可能性があります。

  • 軽量なデスクトップ環境の選択: GNOMEやKDEなどの高機能なデスクトップ環境は、視覚効果が高く、サーバー側の描画処理に負荷がかかりやすいです。XFCE, LXDE, MATEなどの軽量なデスクトップ環境を使用することで、サーバー側の負荷を減らし、リモートデスクトップのパフォーマンスを向上させられる場合があります。第2章の「代替デスクトップ環境をインストールする」を参考に、これらの環境を試してみてください。
  • クライアント側の「エクスペリエンス」設定: Windowsのリモートデスクトップ接続クライアントの「エクスペリエンス」タブで設定できる項目は、サーバーからクライアントへの画面転送量を調整するのに役立ちます。視覚スタイルやアニメーションなどを無効にすることで、転送されるデータ量が減り、応答性が向上します。
  • 解像度と色数の調整: リモートデスクトップの解像度を下げたり、色数を減らしたりすることでも、転送データ量が減り、パフォーマンスが向上します。クライアント側の「画面」タブで設定できます。
  • サーバーの負荷: UbuntuサーバーのCPU使用率やメモリ使用率が高い場合、デスクトップ環境の描画処理が遅くなり、それがリモートデスクトップにも影響します。サーバー側で実行している重いアプリケーションがないか確認し、可能であれば終了させてください。
  • サーバーのスペック: 古いPCをサーバーにしている場合など、ハードウェア性能が不足していると、リモートデスクトップの描画が遅くなります。CPU、メモリ、グラフィック性能が十分か確認してください。
  • デスクトップ環境: 高機能なデスクトップ環境(GNOMEなど)は軽量なもの(XFCEなど)に比べてサーバー側のリソースを多く消費します。軽量なデスクトップ環境に変更することでパフォーマンスが向上する可能性があります。
  • xrdpの設定: /etc/xrdp/xrdp.ini ファイルの [Globals] セクションにある max_bpp (色の深さの最大値) を低く設定するなど、詳細な描画設定を調整することも可能ですが、これは慎重に行う必要があります。

4.5 複数ユーザーでの利用

xrdpは、同時に複数のユーザーがリモートデスクトップ接続して利用することが可能です。それぞれのユーザーは独立したデスクトップセッションを持ちます。

  • 物理的にコンソールにログインしているユーザーとは別のセッションが作成されます。
  • それぞれのユーザーは、Ubuntu上にアカウントを持っている必要があります。
  • リソース(CPU、メモリなど)は共有されるため、同時に多数のユーザーが接続したり、重い処理を行ったりすると、サーバー全体のパフォーマンスが低下する可能性があります。

4.6 ポート番号の変更

セキュリティ上の理由などで、xrdpが使用するデフォルトポート番号3389を変更したい場合があります。

/etc/xrdp/xrdp.ini ファイルを編集します。

bash
sudo nano /etc/xrdp/xrdp.ini

[Globals] セクションにある port=3389 の行を変更したいポート番号(例: 3390)に書き換えます。

ini
port=3390

ファイルを保存して閉じたら、xrdpサービスを再起動します。

bash
sudo systemctl restart xrdp

重要: ポート番号を変更した場合、ファイアウォールの設定も忘れずに変更してください。例えば、ポートを3390に変更した場合は、UFWで3390番ポートを許可する必要があります。

bash
sudo ufw allow 3390/tcp
sudo ufw delete allow 3389/tcp # 以前の3389番ポートの許可ルールが不要なら削除

また、Windowsクライアントからの接続時にも、コンピューター名の入力欄にIPアドレス(またはホスト名)に続けてポート番号をコロンで区切って指定する必要があります(例: 192.168.1.100:3390)。

第5章 トラブルシューティング:困ったときは

xrdpを使ったリモートデスクトップ環境の構築中や利用中に、様々な問題に遭遇する可能性があります。ここでは、よくあるトラブルとその原因、対処法について説明します。

5.1 接続できない

最も多いトラブルです。Windowsクライアントから接続しようとしても、接続が確立できない、エラーメッセージが表示される、といった場合です。

確認事項:

  1. サーバーの電源は入っていますか? 当たり前ですが、サーバーとなるUbuntu PCが起動している必要があります。
  2. Ubuntuサーバーはネットワークに接続されていますか? サーバーがネットワークケーブルで接続されているか、無線LANに接続されているか確認してください。
  3. IPアドレス/ホスト名は正しいですか? Windowsクライアントに入力したサーバーのIPアドレスまたはホスト名が間違っていないか再確認してください。IPアドレスは、サーバー側で ip addr show または hostname -I で確認できます。
  4. クライアントとサーバーは通信できますか? WindowsクライアントからUbuntuサーバーに対して ping コマンドを実行し、応答があるか確認してください。
    • WindowsのコマンドプロンプトまたはPowerShellを開き、ping <UbuntuサーバーのIPアドレスまたはホスト名> を実行します。
    • 例: ping 192.168.1.100
    • 応答がない場合は、ネットワークケーブルの接続、ルーターの設定、ファイアウォールなどが原因と考えられます。
  5. xrdpサービスは起動していますか? Ubuntuサーバーで以下のコマンドを実行し、xrdpサービスのステータスを確認してください。
    bash
    sudo systemctl status xrdp

    active (running) と表示されているか確認してください。もし停止している場合は、sudo systemctl start xrdp で起動してみてください。起動に失敗している場合は、ログを確認します(後述)。
  6. ファイアウォールは正しく設定されていますか? UbuntuサーバーのUFWで3389番ポート(または変更したポート番号)が許可されているか確認してください。
    bash
    sudo ufw status

    3389/tcp ALLOW Anywhere (または特定のIPアドレスからの許可) が表示されていることを確認してください。表示されていない場合は、sudo ufw allow 3389/tcp で許可してください。UFWが有効になっていることも確認してください。
  7. ネットワーク境界(ルーターなど)のファイアウォールは? もしインターネット経由で接続しようとしている場合、サーバーが接続されているネットワークのルーターやモデムで、外部からの3389番ポート(または変更したポート番号)への通信が許可(ポートフォワーディング/ポート開放)されているか確認してください。ただし、インターネットへの直接公開はセキュリティリスクが高いため、VPNの利用を強く推奨します(前述)。
  8. サーバーとクライアントのOSバージョンは互換性がありますか? 非常に古いOSや、特殊な環境の場合は互換性の問題が発生する可能性もゼロではありませんが、一般的なWindowsとUbuntuの組み合わせであれば問題ないはずです。

5.2 ログイン画面が表示されるがログインできない

Windowsクライアントから接続すると、xrdpのログイン画面(Username, Password, Sessionを入力する画面)は表示されるが、正しいユーザー名とパスワードを入力してもデスクトップ画面が表示されず、ログイン画面に戻ってしまう、あるいはエラーメッセージが表示される場合です(ログインループ)。

確認事項と対処法:

  1. ユーザー名とパスワードは正しいですか? Ubuntuサーバーに物理的にログインできるユーザーアカウントのユーザー名とパスワードを正確に入力しているか確認してください。Caps LockやNum Lockの状態も注意してください。
  2. Ubuntu側でそのアカウントは有効ですか? リモートログインしようとしているユーザーアカウントが、Ubuntuサーバーで有効なアカウントであり、ログインできる状態であることを確認してください。
  3. xrdpのログを確認する: ログイン試行が失敗した理由がログに記録されている場合があります。Ubuntuサーバーで以下のログファイルを確認してください。
    • /var/log/xrdp.log
    • /var/log/xrdp-sesman.log
      以下のコマンドで最新のログを表示できます。
      bash
      sudo tail /var/log/xrdp.log
      sudo tail /var/log/xrdp-sesman.log

      これらのログに、認証失敗やセッション起動に関するエラーメッセージが出力されていないか確認してください。例えば、「authentication failed」や、セッション起動に関するエラー(startxfce4gnome-session の実行エラーなど)が記録されている場合があります。
  4. .xsession ファイルの設定は正しいですか? .xsession ファイルが存在し、その中に記述されているデスクトップ環境を起動するコマンドが正しいか確認してください。コマンドが間違っている、あるいはそのデスクトップ環境がインストールされていない場合は、セッション起動に失敗します。例えば、XFCEを使いたいのに startxfce4 ではなく xfce4-session と書いているなど、コマンド名が微妙に異なる場合もあります。適切なコマンドは、各デスクトップ環境のドキュメントなどで確認してください。
  5. メモリ不足: サーバーのメモリが不足している場合、新しいデスクトップセッションを起動できずにログインループになることがあります。サーバーのメモリ使用状況を確認してください。
    bash
    free -h

    特に Swap の使用量が多い場合は、メモリ不足の可能性があります。不要なアプリケーションを終了させるか、サーバーのメモリを増設することを検討してください。

5.3 画面が真っ黒/灰色になる

接続は成功し、認証も通ったように見えるが、デスクトップ画面が表示されず、真っ黒または灰色の画面だけが表示される場合です。これは、デスクトップ環境(GNOMEなど)の起動に失敗している可能性が高いです。

確認事項と対処法:

  1. .xsession ファイルの設定: 第2章で解説したように、GNOMEなど特定のデスクトップ環境では .xsession ファイルで起動コマンドを明示的に指定しないとうまく起動できないことがあります。.xsession ファイルが正しく設定されているか再確認してください。
    • ファイルが存在するか (ls -a ~ | grep .xsession)
    • ファイルの中身が正しいコマンドになっているか (cat ~/.xsession)
  2. 代替デスクトップ環境を試す: GNOMEでの問題解決が難しい場合、XFCEなどの軽量でxrdpとの相性が良いデスクトップ環境をインストールし、.xsession ファイルでそちらを起動するように設定してみてください。
    • XFCEをインストール: sudo apt install xfce4 xfce4-goodies
    • .xsession ファイルを編集: echo "startxfce4" > ~/.xsession
    • xrdpサービスを再起動: sudo systemctl restart xrdp
    • クライアントから再接続
  3. xrdp-sesmanのログを確認する: デスクトップセッション起動時のエラーは /var/log/xrdp-sesman.log に記録されます。このログファイルを確認し、エラーメッセージを探してください。startxfce4gnome-session の実行に関するエラーが出力されているはずです。
  4. Polkit認証の問題: GNOME環境で画面は表示されても、特定の操作をしようとすると応答がなくなる場合は、Polkit認証の問題かもしれません。第2章で解説したPolkit設定ファイルが正しく配置され、サービスが再起動されているか確認してください。
  5. サーバー側のデスクトップセッション: サーバーに物理的にログインしている状態でリモート接続しようとしている場合、特にGNOMEでは同じセッションを共有しようとして問題が発生することがあります。可能であれば、物理コンソールからログアウトしてからリモート接続してみてください。xrdpは通常、新しい独立したセッションを作成します。

5.4 日本語入力ができない

リモートデスクトップセッション内で日本語入力ができない場合は、前述の通り、サーバー側のIMEがリモートセッションでうまく動作しないことが原因であることが多いです。

対処法:

  • クライアント側のIMEを使用し、コピー&ペーストする: これが最も現実的で簡単な解決策です。Windows上で日本語を入力し、それをコピーしてリモートデスクトップ画面上のアプリケーションに貼り付けてください。クリップボード共有が有効になっているか確認してください。

サーバー側での日本語入力の有効化は高度な設定が必要であり、環境によっては困難な場合があります。

5.5 コピー&ペーストができない

クライアントとサーバー間でテキストやファイルをコピー&ペーストできない場合は、クリップボード共有の設定を確認します。

確認事項と対処法:

  1. クライアント側の設定: Windowsのリモートデスクトップ接続クライアントの「ローカル リソース」タブで、「クリップボード」にチェックが入っているか確認してください。
  2. xrdpの設定: /etc/xrdp/xrdp.ini ファイルでクリップボード共有が有効になっているか確認します。通常、デフォルトで有効になっていますが、[Globals] セクションの allow_cliprdr=true のようになっていることを確認してください。
  3. xrdpサービスの再起動: 設定変更や、一時的な不具合の場合、xrdpサービスを再起動することで解消することがあります。sudo systemctl restart xrdp を実行してみてください。
  4. セッションタイプの違い: 使用しているセッションタイプ(Xvncなど)やデスクトップ環境によっては、クリップボード共有の挙動が異なる場合があります。

5.6 画面がちらつく/描画が遅い

リモートデスクトップ画面の表示がスムーズでなく、カクついたり、マウス操作に遅れて画面が追随したりする場合です。

原因と対処法:

  • ネットワーク環境: 最も可能性が高い原因です。ネットワーク速度が遅い、遅延が大きい、無線LANが不安定、といった場合に発生します。有線LANへの切り替え、より高速で安定したネットワーク環境の確保を検討してください。
  • クライアント側の「エクスペリエンス」設定: Windowsクライアントの「エクスペリエンス」タブで、視覚効果を無効にする、接続速度を遅い設定にするなど、描画に関する設定を簡素化することで改善する場合があります。
  • サーバーの負荷: UbuntuサーバーのCPU使用率やメモリ使用率が高い場合、デスクトップ環境の描画処理が遅くなり、それがリモートデスクトクトップにも影響します。サーバー側で実行している重いアプリケーションがないか確認し、可能であれば終了させてください。
  • サーバーのスペック: 古いPCをサーバーにしている場合など、ハードウェア性能が不足していると、リモートデスクトクトップの描画が遅くなります。CPU、メモリ、グラフィック性能が十分か確認してください。
  • デスクトップ環境: 高機能なデスクトップ環境(GNOMEなど)は軽量なもの(XFCEなど)に比べてサーバー側のリソースを多く消費します。軽量なデスクトップ環境に変更することでパフォーマンスが向上する可能性があります。
  • xrdpの設定: /etc/xrdp/xrdp.ini ファイルの [Globals] セクションにある max_bpp (色の深さの最大値) を低く設定するなど、詳細な描画設定を調整することも可能ですが、これは慎重に行う必要があります。

これらのトラブルシューティングの手順を試しても問題が解決しない場合は、xrdpのバージョン、Ubuntuのバージョン、デスクトップ環境のバージョンなどの固有の問題である可能性も考えられます。その場合は、エラーメッセージの内容やログの詳細を基に、インターネット上のフォーラムなどで情報を検索してみると解決策が見つかるかもしれません。

第6章 Q&A:よくある質問

これまでに説明した内容以外で、xrdpについてよく聞かれる質問とその回答をまとめました。

Q1: xrdpは無料ですか?
A1: はい、xrdpはオープンソースソフトウェアとして開発されており、誰でも無償で利用できます。

Q2: Windows ServerやWindows Pro版のデスクトップに接続できますか?
A2: いいえ、xrdpはLinuxなどのUNIX系OS上で動作するRDPサーバーの実装です。Windows PCやWindows Serverへのリモートデスクトップ接続は、Windowsに標準搭載されているリモートデスクトップ機能(RDPサーバー機能)を利用してください。xrdpクライアントは存在しないため、通常はWindows標準のリモートデスクトップ接続クライアントを使って接続します。

Q3: Macや別のLinux PCからxrdpサーバーに接続できますか?
A3: はい、接続できます。MacやLinuxにはRDPクライアントソフトウェアが存在します。例えば、MacにはMicrosoft公式の「Microsoft Remote Desktop」アプリがあります。Linuxには「Remmina」などの多機能なリモート接続クライアントがあり、RDPプロトコルをサポートしています。これらのクライアントソフトウェアを使えば、xrdpをインストールしたUbuntuサーバーに接続できます。

Q4: 同時に複数のユーザーが同じUbuntuサーバーにリモート接続できますか?
A4: はい、可能です。xrdpはマルチセッションに対応しており、異なるユーザーが同時に接続しても、それぞれ独立したデスクトップセッションが提供されます。ただし、サーバーのリソース(CPU、メモリなど)は共有されるため、同時に多数のユーザーが接続するとパフォーマンスが低下する可能性があります。

Q5: サーバー側のUbuntuにGUI(デスクトップ環境)がインストールされていませんが、xrdpで接続すればリモートでGUIを使えるようになりますか?
A5: いいえ、できません。xrdpは既存のデスクトップセッションをリモート表示するためのソフトウェアです。サーバーとなるUbuntuにデスクトップ環境(GNOME, XFCEなど)がインストールされていない場合、xrdpをインストールしても表示する画面がありません。リモートデスクトップを利用するには、事前にサーバー側にデスクトップ環境をインストールしておく必要があります。

Q6: xrdpが使用するポート番号3389を変更したいのですが?
A6: はい、変更可能です。第4章「より快適に使うためのヒント」の「ポート番号の変更」セクションで解説した手順に従って、/etc/xrdp/xrdp.ini ファイルを編集し、xrdpサービスを再起動してください。また、ファイアウォールの設定変更も忘れないでください。

Q7: リモートデスクトップ接続中に、サーバー側の物理的な画面はどうなりますか?
A7: xrdpは通常、物理的なコンソールセッションとは別の、新しい仮想的なデスクトップセッションを作成します。そのため、リモートデスクトップで接続しても、サーバーに物理的に接続されているモニターには、ログイン画面が表示されたままだったり、物理的にログインしている別のユーザーの画面が表示されたりします。リモートセッションの画面が物理的な画面に表示されるわけではありません(ただし、一部の古い設定やセッションタイプでは異なる挙動をする可能性もあります)。

Q8: リモートデスクトップ接続が切断された場合、サーバー側で実行していたアプリケーションはどうなりますか?
A8: 通常、xrdpによるリモートデスクトップセッションが予期せず切断された場合でも、サーバー側のデスクトップセッション自体はすぐに終了せず、一定時間維持されます。これは、ネットワークの一時的な瞬断などで接続が切れても、すぐに再接続すれば元の作業状態に戻れるようにするためです。ただし、サーバーが再起動されたり、長時間再接続されなかったりすると、セッションは終了します。

Q9: セキュリティが心配です。どのような対策が必要ですか?
A9: 最も重要なのは、インターネット経由での直接公開を避けることです。インターネットからアクセスする必要がある場合は、VPNを必ず併用してください。VPNを使わない場合は、ファイアウォールで接続元IPアドレスを厳密に制限するなどの対策が必須ですが、VPNに比べると安全性は劣ります。ローカルネットワーク内での利用であればリスクは比較的低いですが、Ubuntuサーバーのユーザーアカウントには強力なパスワードを設定し、不要なサービスは停止しておくなどの基本的なセキュリティ対策は怠らないようにしましょう。

第7章 まとめ

この記事では、Linux初心者の方に向けて、xrdpを使ったUbuntuリモートデスクトップ環境の構築方法を詳細に解説しました。

リモートデスクトップの基本的な仕組みから、xrdpのインストール、ファイアウォール設定、そしてUbuntuのデフォルトデスクトップ環境であるGNOMEで発生しがちな問題への対策(.xsessionファイル、Polkit認証)まで、ステップバイステップで説明しました。また、Windowsクライアントからの具体的な接続手順や、より快適に利用するためのヒント(ネットワーク環境、パフォーマンス改善、VPNによるセキュリティ向上)、そしてよく遭遇するトラブルとその解決策についても触れました。

xrdpを使えば、Windows PCからUbuntuデスクトップを比較的快適にリモート操作できます。これにより、以下のようなメリットが得られます。

  • 場所を選ばない作業: 自宅内のどこからでも、あるいは外出先から自宅のUbuntu PCにアクセスして作業ができます。
  • PCのリソース活用: スペックの高い自宅のUbuntu PCを、低スペックなノートPCやタブレットからフル活用できます。
  • 作業効率向上: 複数のPC間でファイルを簡単にやり取りしたり、環境を切り替えたりすることなく作業を継続できます。

構築過程でいくつかの設定やトラブルシューティングが必要になるかもしれませんが、この記事を参考にしていただければ、きっと快適なリモートデスクトップ環境を手に入れられるはずです。特にGNOMEを使用する場合は、.xsession ファイルやPolkit設定が重要になります。

最後に繰り返しになりますが、インターネット経由で利用する場合は、セキュリティのために必ずVPNを併用するか、厳格なファイアウォール設定を行ってください。 これを怠ると、不正アクセスのリスクが非常に高まります。

これで、あなたのUbuntuライフがより便利で快適なものになることを願っています!

免責事項:
この記事で紹介している手順は、執筆時点での情報に基づいています。Ubuntuやxrdpのバージョンアップにより、手順や設定ファイルの内容が変更される可能性があります。また、ご利用の環境(ハードウェア、ネットワーク設定、他のソフトウェアなど)によって、予期しない問題が発生することも考えられます。本記事の内容を参考に作業を行う際は、ご自身の判断と責任において実施してください。重要なデータは必ず事前にバックアップを取るようにしてください。
“`

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール