−25%

Windows 年払い、10月31日まで。 プランを見る

EQVPS
始める

Linux VPS にデスクトップを入れてリモートデスクトップで接続する方法(XFCE + xrdp)

Ubuntu 24.04 の VPS に、普通のリモートデスクトップアプリで開けるグラフィカルなデスクトップを用意します。XFCE と xrdp、動かなくなる 2 つの初期設定(違うセッション、TLS なし)、そしてポート 3389 を一切インターネットに出さない構成。ディスク使用量とセッションごとの RAM も実測しました。

Linux サーバーには画面がなく、たいていは必要もありません。ただ、必要になる場面もあります。サーバー自身のアドレスから動かすべきブラウザー、グラフィカルな画面しかないツール、あるいは起動したままにしておき、どのパソコンからでも戻れるデスクトップです。このガイドでは Ubuntu 24.04 に軽量デスクトップの XFCE と xrdp を入れ、Windows サーバーと同じリモートデスクトップアプリで開けるようにします。

当社の Ubuntu 24.04 イメージですべての手順を試しました。初期設定のうち 2 つで最初の試みは失敗したので、以下で両方を直します。sudo を使える通常ユーザーが必要です。Ubuntu の初期設定ガイドで作れます。例では deploy という名前にしています。

1. XFCE と xrdp をインストールする

sudo apt update
sudo apt install -y xfce4 xfce4-goodies xrdp

2 GB のサーバーでは約 4 分半かかり、ディスクを 1.7 GB 使いました(使用量は 2.7 GB から 4.4 GB に)。xrdp 0.9.24 が入り、すぐに起動してポート 3389 で待ち受けます。

2. xrdp に GNOME ではなく XFCE を起動させる

デスクトップを使うユーザーでログインし、次を実行します。

echo xfce4-session > ~/.xsession

このファイルがないと、最初のログインでは XFCE ではなく GNOME が起動し、セッションはすぐに「Oh no! Something has gone wrong」で落ちました。手順 1 のパッケージは GNOME のセッションマネージャーも一緒に入れ、Ubuntu はそれを既定にします。~/.xsession があれば、xrdp は XFCE を起動します。

3. xrdp に TLS を使わせる

xrdp は専用の xrdp ユーザーで動き、このユーザーはサーバーの秘密鍵を読めません。最初の接続はうまくいきましたが、/var/log/xrdp.log を見ると信用してはいけない理由がわかりました。

Cannot read private key file /etc/xrdp/key.pem: Permission denied
Non-TLS connection established from ::ffff:127.0.0.1

鍵がないと、xrdp は TLS ではなく古い RDP の暗号化に戻ります。読み取り権限を与えて再起動します。

sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp

次の接続では、ログに TLS connection established ... TLSv1.3 と出ました。自分のサーバーも同じ方法で確認できます。

sudo grep -E "TLS connection|Non-TLS" /var/log/xrdp.log | tail -2

4. ポート 3389 をインターネットに出さない

インストール直後の xrdp はすべてのアドレスで待ち受けます。Windows と違って xrdp には Network Level Authentication がないので、ポートに届く人なら誰でもログイン画面でパスワードを試せます。サーバー自身でだけ待ち受けるようにします。

sudo sed -i 's|^port=3389$|port=tcp://127.0.0.1:3389|' /etc/xrdp/xrdp.ini
sudo systemctl restart xrdp
ss -ltn | grep 3389

最後の行に 127.0.0.1:3389 と出れば正しい状態です。テストではこのあと、サーバーのアドレスの 3389 への直接接続は拒否され、次の手順のトンネルは引き続き使えました。

5. SSH 経由で接続する

自分のパソコンでトンネルを開きます。Windows でも PowerShell に同じ ssh コマンドがあります。

ssh -L 13389:localhost:3389 deploy@YOUR.SERVER.IP

NAT プランでは -p とダッシュボードの専用 SSH ポートを付けてください。このウィンドウは開いたままにします。次にリモートデスクトップアプリの接続先を localhost:13389 にして、deploy とそのユーザーのパスワードでログインします。

  • Windows: リモートデスクトップ接続(mstsc)。
  • macOS: App Store の Windows App。
  • Linux: Remmina、または xfreerdp /v:localhost:13389 /u:deploy。

ローカル側を 3389 ではなく 13389 にしているのは、パソコン側の 3389 がそのパソコン自身のリモートデスクトップで使われていることがあるからです。初回は、知らない証明書だという警告が出ます。これはサーバーの自己署名証明書で、通信はどのみち SSH の中で暗号化されています。

6. 手に入るもの

パネル、ファイルマネージャー、ターミナルのある XFCE デスクトップが使えます。当社のサーバーでは、セッション 1 つで RAM が約 360 MB 増えました。接続前の使用量は 388 MB、セッション中は 747 MB です。

リモートデスクトップのウィンドウを閉じても、ログアウトにはなりません。テストでは、切断したあとも長いコマンドが動き続けました。もう一度接続すると、xrdp は同じセッションに戻してくれました(ログには reconnected session ... display :10)。本当にセッションを終えるには、XFCE のメニューから Log Out を選びます。

どのプランを選ぶか

デスクトップに必要なのは CPU より RAM です。Micro(2 vCPU、2 GB、25 GB、月 $5)なら XFCE と軽いツールは余裕で動きます。セッションでブラウザーを開きっぱなしにするなら、4 vCPU、4 GB で月 $8 の Small を選んでください。どちらも NAT プランですが、ここでは問題ありません。リモートデスクトップは SSH のポートを通るからです。

本当に必要なのが Windows のソフトウェアなら、Windows VPS でそのまま動かせます。Windows-Small は月 $11 からです。Ubuntu 24.04 は Ubuntu VPS のページに掲載されており、VPS のすべての Linux プランで選べます。支払いは Base、Ethereum、Polygon 上の USDT、USDC、ETH です。

よくある質問

Windows の普通のリモートデスクトップアプリで接続できますか?

できます。xrdp は RDP プロトコルを話すので、Windows に標準のリモートデスクトップ接続、macOS の Windows App、Linux の Remmina や xfreerdp が使えます。接続先はサーバーのアドレスではなく、SSH トンネル経由の localhost です。

NAT プランでも使えますか?

使えます。RDP 接続は SSH の中を通り、SSH は NAT プランがサーバーに転送している唯一のポートだからです。ポート 3389 をインターネットに閉じたままにできるので、このガイドではどのプランでもこの構成をおすすめしています。

デスクトップはどれくらい RAM を使いますか?

テストサーバーでは XFCE のセッション 1 つで約 360 MB 増え、使用メモリは 388 MB から 747 MB になりました。2 GB の Micro プランなら、デスクトップと軽いツールには十分です。セッション内で Web ブラウザーを使うなら 4 GB あると快適です。

黒い画面か「Oh no! Something has gone wrong」が出ます。原因は?

xrdp が XFCE ではなく GNOME を起動しています。手順 1 のパッケージは GNOME のセッションマネージャーも一緒に入れ、Ubuntu はそれをシステムの既定にします。ログインするユーザーに xfce4-session と書いた ~/.xsession を作り、もう一度接続してください。

RDP で root としてログインできますか?

xrdp の初期設定では許可されています(/etc/xrdp/sesman.ini の AllowRootLogin=true)が、sudo を使える通常ユーザーで入るほうが安全です。root を拒否するなら AllowRootLogin=false にして xrdp を再起動してください。

コメント

まだコメントはありません。最初になりましょう。

コメントを残す

コメントは表示される前にモデレートされます。