xrdp+xfce4でUbuntu GUIにリモート接続してみた

# 背景・目的
Ubuntu にリモートデスクトップでログインするときのメモです。AWSで試してみます。

# まとめ
下記に特徴をまとます。

|特徴|説明|
|:--|:--|
|xrdpとは|MSのリモートデスクトッププロトコル（RDP）を使用してリモート満身へのグラフィカルログインを提供する<BR>下記のような様々なRDPクライアントから接続を受け入れる<BR>・FreeRDP<BR>・rdesktop<BR>・KRDC<BR>・NeutrinoRDP<BR>・Windows MSTSC<BR>・Microsoft Remote Desktop<BR><BR>これらの多くは、Windows、Mac OS、iOS、Android の一部またはすべてで動作する<BR>RDP トランスポートは、デフォルトで TLS を使用して暗号化される|
|xrdpの機能|Remote Desktop Access<BR>Access to Remote Resources<BR>Supported Platforms|
|xfceとは|UNIX ライクなオペレーティングシステム用の軽量デスクトップ環境<BR>・魅力的なヴィジュアルと使い勝手の良さ<BR>・高速でシステムリソースの使用が少ない<BR>・モジュール性と再利用性という従来の UNIX 哲学を体現している|
|xfceの機能|・ウィンドウマネージャー<BR>・デスクトップマネージャー<BR>・パネル<BR>・セッションマネージャー<BR>・アプリケーションファインダー<BR>・ファイルマネージャー<BR>・設定マネージャー|

# 概要
## xrdp
下記を基に整理します。

https://github.com/neutrinolabs/xrdp

https://www.xrdp.org/

- xrdpは、MSのリモートデスクトッププロトコル（RDP）を使用してリモート満身へのグラフィカルログインを提供する
- 下記のような様々なRDPクライアントから接続を受け入れる
    - FreeRDP
    - rdesktop
    - KRDC
    - NeutrinoRDP
    - Windows MSTSC (Microsoft Terminal Services Client, aka mstsc.exe)
    - Microsoft Remote Desktop (found on Microsoft Store, which is distinct from MSTSC)
- これらの多くは、Windows、Mac OS、iOS、Android の一部またはすべてで動作する
- RDP トランスポートは、デフォルトで TLS を使用して暗号化される

### Feature
#### Remote Desktop Access
- どこからでも RDP を使用して Linux デスクトップに接続する (xorgxrdp Xorg モジュールが必要)
- 既存のセッションに再接続する
- セッションのサイズ変更（接続時とオンザフライの両方）
- RDP/VNC プロキシ (xrdp 経由で別の RDP/VNC サーバーに接続)

#### Access to Remote Resources
- 双方向クリップボード転送（テキスト、ビットマップ、ファイル）
- オーディオリダイレクト（追加モジュールの構築が必要）
- マイクのリダイレクト（追加モジュールの構築が必要）
- ドライブのリダイレクト（ローカルクライアントドライブをリモートマシンにマウントする）

### Supported Platforms
- 主にGNU/Linuxオペレーティングシステムを対象としている
- x86（x86-64を含む）およびARMプロセッサは、xrdpを実行するのに最も成熟したアーキテクチャ
- xorgxrdpやRemoteFXコーデックなどの一部のコンポーネントは、SIMD命令を用いたx86向けに特別な最適化が施されている
    - そのため、x86プロセッサ上でxrdpを実行すると、最大限の高速化が実現する


### .xsession
https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/212startuponx.html

- .xsession は、X（GUI）のログイン時に実行されるスクリプトファイル
- xrdp や xdm、lightdm などの ディスプレイマネージャーが GUI セッションを立ち上げるときに参照する
- 指定しないとGUIが起動しない（黒画面など）


## Xfce
下記を基に整理します。

https://www.xfce.org/

https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/839usexfce.html

- UNIX ライクなオペレーティングシステム用の軽量デスクトップ環境
- 魅力的なヴィジュアルと使い勝手の良さ
- 高速でシステムリソースの使用が少ない
- モジュール性と再利用性という従来の UNIX 哲学を体現している


### Features
#### ウィンドウマネージャー
- 画面上のウィンドウの配置を管理し、ウィンドウ枠を表示し、ワークスペースおよび仮想デスクトップを管理


#### デスクトップマネージャー
- 背景画像を設定し、ルートウィンドウメニュー、デスクトップアイコンや最小化アイコン、およびウィンドウリストを提供

#### パネル
- 開いているウィンドウを切り替え、アプリケーションを起動し、ワークスペースを切り替え、アプリケーションやディレクトリを開くメニュープラグインを提供

#### セッションマネージャー
- ログインおよびデスクトップの電源管理を制御し、複数セッションを保存することができる

#### アプリケーションファインダー
- システムにインストールされているアプリケーションの一覧をカテゴリごとに表示し、目的のアプリケーションをすばやく見つけて起動できる


#### ファイルマネージャー
- 基本的なファイル管理機能と、一括リネーム機能などの独自のユーティリティーを提供

#### 設定マネージャー
- デスクトップのさまざまな設定をコントロールするツール
- キーボード ショートカット、外観、ディスプレイ設定など

## Microsoft Remote Desktop(Windows App for Mac)
> Windows App for Mac (previously named Microsoft Remote Desktop) is your gateway to securely connect to Windows including remote PCs and admin-provided virtual apps and desktops across Windows 365, Azure Virtual Desktop, Dev Box and Remote Desktop Services.

- Microsoft Remote Desktopは、Windows App for Macになったようだ

# 実践
1. AWSにサインインします

## VPC
以前、下記で作成したネットワークを使用します。

https://qiita.com/zumax/items/88e7d07b6dd7bb6c217d#vpc

## EC2の作成
1. EC2に移動します
1. 「インスタンスを起動」をクリックします
1. アプリケーションおよびOSイメージで、下記を選択します
    - Amazonマシンイメージ（AMI）：Ubuntu Server 22.04 LTS
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/a0595406-d186-4795-8fa0-eb762e68e6db.png)
1. パブリックIPの自動割り当てを「有効化」にします
1. ネットワーク設定は、以前作成したVPCのPublic Subnetを選択します
1. 下記のルールでセキュリティグループを作成します
    - SSHと自分のIPアドレス
    - RDPと自分のIPアドレス

1. 「インスタンスを起動」をクリックします

## UbuntuにGUI(xfce4)とxrdpをインストール
1. PCのssh_configを作成します（ユーザはubuntuです）
1. SSHします
    ```bash
    % ssh ubuntu       
    Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1024-aws x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/pro
    
     System information as of Sun Apr 13 06:10:39 UTC 2025
    
      System load:  0.0               Processes:             101
      Usage of /:   21.8% of 7.57GB   Users logged in:       0
      Memory usage: 20%               IPv4 address for eth0: 10.0.100.4
      Swap usage:   0%
    
    
    Expanded Security Maintenance for Applications is not enabled.
    
    0 updates can be applied immediately.
    
    Enable ESM Apps to receive additional future security updates.
    See https://ubuntu.com/esm or run: sudo pro status
    
    
    The list of available updates is more than a week old.
    To check for new updates run: sudo apt update
    New release '24.04.2 LTS' available.
    Run 'do-release-upgrade' to upgrade to it.
    
    
    Last login: Sun Apr 13 06:10:40 2025 from 210.170.160.250
    To run a command as administrator (user "root"), use "sudo <command>".
    See "man sudo_root" for details.
    
    ubuntu@ip-XXXXX:~$ 
    ```

1. パッケージを更新します
    ```bash
    sudo apt update && sudo apt upgrade -y
    ```
1. OKを選びます
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/6539a39a-fcf4-42e1-b94b-2fd111231d9a.png)

### xfce4（軽量なGUI）と必要なパッケージをインストール

1. xfce4、xfce4-goodies、xrdpをインストールします
    ```bash
    sudo apt install xfce4 xfce4-goodies xrdp -y
    ```
1. OKを選びます
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/5c593bd1-bec0-440a-a580-120df4da1c89.png)

1. セッションをxfce4に設定します
    ```bash
    $ echo xfce4-session > ~/.xsession
    $ cat ~/.xsession 
    xfce4-session
    $ 
    ```

### xrdpのサービスを再起動
1. xrdpのサービスを再起動します
    ```bash
    sudo systemctl restart xrdp
    ```

## パスワードを設定（初回ログイン用）
xrdpはSSHの鍵認証を使えないとのこと。そのため、Ubuntuユーザーのパスワードを明示的に設定する必要があるとのこと。

1. パスワードを入力します
    ```bash
    $ sudo passwd ubuntu
    New password: 
    Retype new password: 
    passwd: password updated successfully
    $ 
    ```
## MacにMicrosoft Remote Desktopをインストール
1. App Storeから入手する
1. `microsoft remote desktop`を検索すると、Windows Appが表示される

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/03714222-0414-4536-a35d-01c775c3f509.png)

1. ダウンロードします


## リモート接続設定（Windows App）

1. Windows Appを起動します
1. 「Not Now」をクリックします（Yesでも問題ありません。適宜判断してください）
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/fecc1e2c-a5a4-4b99-b5a3-6a16f588fc2a.png)

1. カメラやマイクへのアクセスを「Continue」を選びます
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/0193a790-70dc-42d9-8225-ba994ecaaf79.png)

1. 特に使用しないので、「許可しない」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/4308f226-f440-478a-9af7-5517ad96bb80.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/b73be292-30a4-4f24-861d-0aeca095206b.png)

1. 起動します。「Next」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/24558149-9811-4800-b43b-58c29fde4e4a.png)

1. 「Done」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/860ad413-4f25-405d-9bae-460ae0c308d3.png)

1. ポップアップが上がります。リモートデスクトップにしかアクセスしないので「許可しない」をクリックします

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/1762cba6-889c-4f9d-a00e-acb5f56d6969.png)

## リモート接続

1. ①「＋」＞②「Add PC」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/c3b39dfd-39d8-4413-b995-bab397fb02be.png)

1. PC nameにEC2のパブリックIP、Credentials：Add Credentialsをクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/75f65980-9219-4176-9ee7-f6c1a55d055a.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/e650bfc2-04ed-4282-9f62-b5acc494a0ff.png)

1. UsernameとパスワードをUbuntuにサインインするものを利用します
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/482f5d27-6075-4773-b684-1e5ac4e490d0.png)

1. 最後に、「Add」をクリックすると保存されます
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/124abdad-2a0b-4ec0-93ce-c720571ca68f.png)

1. ダブルクリックします
1. 「Connect」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/9d3dd9c3-c244-4490-8339-829af4fc494e.png)

1. ディスプレイ設定、プリンタの色プロファイルの追加を行おうとしています。「Cancel」をクリックします

1. Terminalをクリックします
1. IPアドレスもEC2のプライベートIPが確認できました
1. 先ほど、作成したファイルが見えました
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/f7fde6e8-470d-436a-bcee-7e4b85fdd77a.png)


# 考察
今回、EC2にインストールしたUbuntuに対して、Macからリモート接続を試してみました。
引き続き、あれこれ試してみます

# 参考
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0621

https://www.xrdp.org/

https://e-words.jp/w/xrdp.html

https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/839usexfce.html

https://www.xfce.org/

https://ja.wikipedia.org/wiki/Xfce