Ubuntu 22.04 LTSのリモートデスクトップ接続でハマった話

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

# 0. Ubuntu 22.04 LTS でリモートデスクトップ接続を試してみたがどうも上手くいかない

Ubuntu 22.04でリモートデスクトップが使えるようになったという話だったので、WindowsのRDPクライアントからUbuntuデスクトップへの接続を試してみましたが、接続するのに2時間ぐらい溶かしたので、ハマる人が少なくなるようにメモっておきます。

# 1. リモートデスクトップ設定をする

## 1-1. 環境は以下の通りです。

- RDPサーバー:
  - OS: Ubuntu 22.04.1 LTS
  - Kernel: Linux 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
  - gnome-remote-desktop: gnome-remote-desktop/jammy-updates,now 42.3-0ubuntu1 amd64
- RDPクライアント:
  - OS: Windows 10
  - 

## 1-2. Ubuntuデスクトップ側にRDPサーバー設定

設定方法は、あわしろいくや さんの記事が良いでしょう。

[第713回　Ubuntu 22\.04 LTSの新機能、リモートデスクトップのRDPサポートを使用する \| gihyo\.jp](https://gihyo.jp/admin/serial/01/ubuntu-recipe/0713)

# 2. つながりません。。。

どんなエラーが出るか

## 2-1. クライアント側(Windows 10)

Windows10の接続クライアントでは、以下のようなエラーが出て接続ダイアログに戻ります。

プロトコル エラーのため、セッションは切断されます。
リモートコンピューターに接続し直してください。
以下のようなダイアログが出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/b90594ab-c44f-2273-c645-aeca585a28fa.png)


## 2-2. サーバー側(Ubuntu)

サーバー側では以下のようなログが出ます。

```
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:323] [4779:5407] [WARN][com.winpr.negotiate] - AcceptSecurityContext status SEC_I_CONTINUE_NEEDED [0x00090312]
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:324] [4779:5407] [WARN][com.winpr.negotiate] - AcceptSecurityContext status SEC_I_COMPLETE_NEEDED [0x00090313]
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:325] [4779:5407] [ERROR][com.freerdp.core.transport] - BIO_read returned a system error 104: Connection reset by peer
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:325] [4779:5407] [ERROR][com.freerdp.core] - transport_read_layer:freerdp_set_last_error_ex ERRCONNECT_CONNECT_TRANSPORT_FAILED [0x0002000D]
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:325] [4779:5407] [ERROR][com.freerdp.core.nla] - [nla_recv] error: -1
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:325] [4779:5407] [ERROR][com.freerdp.core.transport] - client authentication failure
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:325] [4779:5407] [ERROR][com.freerdp.core.peer] - peer_recv_callback: CONNECTION_STATE_INITIAL - rdp_server_accept_nego() fail
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:325] [4779:5407] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:326] [4779:4779] [ERROR][com.freerdp.core.transport] - BIO_should_retry returned a system error 32: Broken pipe
Aug 23 11:57:50 testpc gnome-remote-de[4779]: Unable to check file descriptor, closing connection
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:392] [4779:5417] [WARN][com.winpr.negotiate] - AcceptSecurityContext status SEC_I_CONTINUE_NEEDED [0x00090312]
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:393] [4779:5417] [WARN][com.winpr.negotiate] - AcceptSecurityContext status SEC_I_COMPLETE_NEEDED [0x00090313]
Aug 23 11:57:50 testpc gnome-remote-de[4779]: [RDP.RDPGFX] CapsAdvertise: Accepting capability set with version RDPGFX_CAPVERSION_106, Client cap flags: H264 (AVC444): true, H264 (AVC420): true
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:455] [4779:5421] [ERROR][com.freerdp.channels.rdpgfx.server] - WTSVirtualChannelRead failed!
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:455] [4779:5421] [ERROR][com.freerdp.channels.rdpgfx.server] - rdpgfx_server_handle_messages failed with error 1359
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:455] [4779:5417] [ERROR][com.freerdp.core.transport] - BIO_read returned a system error 104: Connection reset by peer
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:455] [4779:5417] [ERROR][com.freerdp.core] - transport_read_layer:freerdp_set_last_error_ex ERRCONNECT_CONNECT_TRANSPORT_FAILED [0x0002000D]
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:456] [4779:4779] [ERROR][com.freerdp.core] - rdp_set_error_info:freerdp_set_last_error_ex ERRINFO_RPC_INITIATED_DISCONNECT [0x00010001]
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:456] [4779:4779] [ERROR][com.freerdp.core] - rdp_set_error_info: TODO: Trying to set error code ERRINFO_RPC_INITIATED_DISCONNECT, but ERRCONNECT_CONNECT_TRANSPORT_FAILED already set!
Aug 23 11:57:50 testpc gnome-remote-de[4779]: Unable to check file descriptor, closing connection
Aug 23 11:57:50 testpc gnome-remote-de[4779]: [RDP.CLIPRDR] Client capabilities: long format names, stream file clip, file clip no file paths, can lock clip data, huge file support
Aug 23 11:57:50 testpc gnome-remote-desktop-daemon[4779]: [11:57:50:468] [4779:4779] [ERROR][com.freerdp.core.transport] - BIO_should_retry returned a system error 32: Broken pipe
Aug 23 11:57:50 testpc systemd[1]: run-user-1000-gnome\x2dremote\x2ddesktop-cliprdr\x2d9PHKSw.mount: Deactivated successfully.
```

# 3. 解決

問題は選択していた「画面の色」でした。
「最高品質(32ビット)」を選択して接続してください。

High Colorの15ビットも16ビットもTrue Colorの24ビットもダメで、「最高品質(32ビット)」でしかつながりませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/156443e4-f06a-1bb6-9760-07572809b644.png)

ちなみに2-2.のログはこの接続エラーには全く関係なくて、正常に接続したときにも同じように表示されます....。。

# 4. まとめ

帯域を節約しようとしたらエライ目に遭いました。

ちなみに「画面の設定」でリモートデスクトップの解像度を指定しても関係ありません。Ubuntuデスクトップ側の画面の解像度になります。