〔不具合対応〕 Windows 10 リモートデスクトップから XRDP 0.9.4 in LXDE on Ubuntu 16.04 LTS サーバへ接続できない

昨日の日記「2017-10-04 - grasso0210の日記」で、
Ubunutu 16.04 + LXDE 上での XRDP の動作確認に成功したと書きましたが、
改めて再インストール(実行PCのHDD交換のため)したところ、
接続できない不具合が発生したので記録しておきます。


【現象】

Windows 10 からのリモートデスクトップ接続で、ログイン後にクライアント自体が落ちる

/var/log/xrdp.log を見ると、以下のようなエラーメッセージが出力されていました。

[20171005-14:35:13] [ERROR] Listening socket is in wrong state we terminate listener



【原因】

ユーザディレクトリ下に作成した ~/.xsession script 内で、X Session manager (lxsession) を起動していなかったため
LXDE サーバとの session 用 socket が正常に作られず、RDP client と LXDE サーバとの通信ができなかったため…(推測)


【対策】

ユーザディレクトリ下の ~/.xsession に次の1行を加える

lxsession -s LXDE -e LXDE

参考サイト

                                                                                                                      • -

原因の調査の過程で、以下のようなことを試しました。
しかし、状況は改善しませんでした。

■ 失敗策 (1)

参照サイト:

この記事の後半に書かれているように、
TLS秘密鍵と証明書署名要求を再作成し、/etc/xrdp/xrdp.ini に記載しました。
でも、現象は変わりませんでした。

TLS 秘密鍵と証明書署名要求の作成

$ cd /etc/xrdp
$ sudo openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365

※ 対話形式で各種設定項目を問われますので、 FQDN を問われたら xrdp サーバの FQDN を設定すると、RDP接続時に「証明書のFQDNとサーバのFQDNが違う」旨のエラーメッセージが出なくなります。


/etc/xrdp/xrdp.ini の Security Layer 設定関連

[Globals]
security_layer=negotiate
crypt_level=high
certificate=cert.pem
key_file=key.pem
ssl_protocols=TLSv1, TLSv1.1, TLSv1.2

■ 失敗策(2)

参考サイト:

xrdp 0.9.3 以前のバージョンではそうだったのかもしれませんが、
私が試した xrdp 0.9.4 では /etc/xrdp/xrdp.ini 内の下記双方のパラメータを 24 から 32 に変更しても現象は変わりませんでした。

[Globals]
max_bpp=24

[X11rdp]
xserverbpp=24

                                                                                                                      • -

余談になりますが、昨日のテストで上記の現象が発生せず、
今日の動作確認段階で発生したのは、
~/.xsession ファイルの有無の違いです。

今日は、LXDE 環境下での Keymap を変更 ( 「Caps Lock」キーを「左Ctrl」キーに変更)する処理を追加したためでした。

こちらは、/etc/default/keyboard で

XKBOPTIONS="ctrl:nocaps"

と記述することで、コンソール上では変更されていたのに、
LXDE 起動後に LXTerminal 等では反映されなかったのはなぜ?
という疑問が残るのですが… f(^_^;