macOS から Debian へのリモートデスクトップ接続

1. 背景

macOS から Debian に GUI でリモート接続する必要があった。クライアントは macOS Sequoia 上の Windows App、サーバは Debian 13(display manager: lightdm)である。ローカルではかつて GNOME Flashback を常用していたが、リモートは軽量な Xfce4 を使いたい方針。


2. 目的

  • ローカル環境を壊さずに、リモート接続時に軽量な Xfce4 セッションを起動する。
  • ログインループ等の落とし穴を避け、運用を単純化する。

結果として macOS から Debian 13 環境へのリモートデスクトップ接続をすることができた。


3. 構成と前提

  • xrdp(Xorg バックエンド)+ lightdm。
  • ローカル:lightdm のセッション選択で GNOME Flashback 等を利用。
  • リモート(RDP):~/.xsession の指定に従って Xfce4 を起動。
  • Windows App のドライブ共有を有効にすると Linux 側に /thinclient_drives が現れる。

4. 調査過程

~/.xsession に startxfce4 と記入して挙動を確認した。結果は以下である。

  • ローカルログイン:lightdm のセッション選択により GNOME Flashback を普通に起動でき ~/.xsession の固定化効果は見られなかった。
  • xrdp 経由:Xfce4 が自動的に起動し、軽快に動作した。

懸念していたログインループは本手順では再現しなかった。


5. 解決方法(最小手順)

  1. xrdp と Xfce4 を導入する。
  2. リモートで利用する各ユーザーのホームに ~/.xsession を作成し、内容を以下の一行のみとする。

1
startxfce4

これにより RDP 時だけ Xfce4 が起動し、ローカルは従来どおり自由にセッションを選べる。


6. xrdp 導入手順

xrdp は Debian 公式リポジトリに含まれているため、導入は容易である。以下の手順で必要なパッケージを導入し、サービスを起動させる。

1) パッケージ導入

まずパッケージリストを更新し、xrdp を導入する。

1
2
sudo apt update
sudo apt install xrdp

2) サービス確認

導入直後に自動で起動する。状態を確認するには以下を実行する。

1
systemctl status xrdp

必要に応じて再起動する場合は次のとおりである。

1
sudo systemctl restart xrdp

3) ファイアウォール設定

TCP ポート 3389 を開放する必要がある。例えば ufw を利用している場合は次のように設定する。

1
sudo ufw allow 3389/tcp

4) セッション指定

リモート接続時に起動するデスクトップ環境を指定するには、各ユーザーのホームに

1
~/.xsession

を作成し、内容を以下の一行のみとする。

1
startxfce4

5) 注意事項

  • RDP セッションはローカルの X セッションとは共有されない。
  • 認証は通常のログインと同じく PAM により行われる。
  • インターネットへ直接公開せず、VPN や SSH トンネルを経由するのが望ましい。

7. 既知の仕様・注意事項

  • セッション非共有:xrdp の X セッションはローカルの X セッションとは別物である。RDP で起動したアプリをローカルで続き表示することはできない。逆も同様である。切断はプロセス終了を意味しないが、表示面は別セッションである。
  • thinclient_drives の扱い:Windows App のドライブ共有でセッション専用のマウント /thinclient_drives が現れる。バックアップやミラー、ウイルススキャンの除外対象に入れると循環コピーやスキャン時間増大を避けられる。
  • ~/.xsession の影響範囲:lightdm のローカルログインではセッション選択が優先されるため ~/.xsession による固定化効果は出にくい。
  • 全ユーザー配布の是非: ~/.xsession を全員に配布すると RDP では必ず Xfce4 になる。

8. 運用決定

  • RDP 専用セッションは Xfce4 とする。ローカルは GNOME Flashback も含め自由に選択する。
  • ~/.xsession は RDP を使うユーザーにのみ配布する。
  • /thinclient_drives はバックアップ・スキャンの除外に登録する。
  • RDP 切断後のジョブ(例:VM)はバックグラウンドで動き続けるが、表示の引き継ぎは不可という前提で運用する。

9. トラブルシュート(メモ)

  • ログインループ疑い:本構成では未再現。まず ~/.xsession の内容を極力単純に保つ。
  • ウィンドウの既定最大化(Windows App 側の挙動):既定で全画面化を避けたい場合は Windows App 側の表示設定を見直す(起動時フルスクリーンやウィンドウフィット設定など)。

10. まとめ

RDP は別セッションであるという前提を受け入れ、リモートには軽量な Xfce4 を利用すると運用は安定する。ローカルとリモートの共存を崩さず、省リソースで必要十分な環境を得た。