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 です。
コメント
まだコメントはありません。最初になりましょう。