最近サーバー周りの環境を更新していて、Raspberry Piに余りが出てきたのでLinuxのデスクトップサーバーとしてRaspberry Piを使用することにしました。
Raspberry Piのデスクトップをリモート接続で実現する方法はVNCサーバーを用いる方法などがありますが、Windowsのリモートデスクトップのソフトで接続できる「xrdp」を使う場合も多いかと思います。
今回は。xrdpを使ったところトラブルが発生したのでその情報を書き残しておきます。
環境を簡単に書くとこんな感じです。
- Raspberry Pi OS with Desktop(2022-04-04 release)
- Raspberry Pi 4 B
- WiFiで接続
- USB機器なし
- 以前のデフォルトユーザーと同じ「pi」とパスワード「raspberry」で設定
まず、症状ですが、xrdpで接続すると水色の画面になると思います。
この状態で正しいパスワードを入れても、この背景の水色の画面の状態で止まってしまいます。
以前に別環境のDebianでxrdpを導入したときには、エラーが出てパッケージを入れれば解決できたので、当時の記憶を基に色々やってみたのですが、上手くいきませんでした。
なので、とりあえずログを確認してみます。すると、接続しようとした際にエラーになっている部分を発見しました。
cat /var/log/xrdp-sesman.log
[20220413-22:00:40] [INFO ] Session in progress on display 11, waiting until the window manager (pid 3028) exits to end the session
[20220413-22:00:40] [WARN ] Timed out waiting for X server on display 11 to startup
[20220413-22:00:40] [ERROR] There is no X server active on display 11
[20220413-22:00:40] [ERROR] A fatal error has occured attempting to start the window manager on display 11, aborting connection
[20220413-22:00:40] [WARN ] Window manager (pid 3028, display 11) exited quickly (0 secs). This could indicate a window manager config problem
前後も貼っています。このエラーによるとX serverのdisplay 11がアクティブじゃないのがエラーだそうな。CLIの環境で見たいようなエラーです。これは明らかに沼のエラー感があるのでもう少し色々調べます。
次に、systemctlを使って確認してみます。
sudo systemctl status xrdp
4月 13 23:53:55 raspberrypi xrdp[4955]: [ERROR] xrdp_sec_recv: xrdp_mcs_recv failed
4月 13 23:53:55 raspberrypi xrdp[4955]: [ERROR] xrdp_rdp_recv: xrdp_sec_recv failed
4月 13 23:53:55 raspberrypi xrdp[4955]: [ERROR] libxrdp_process_data: xrdp_rdp_recv failed
4月 13 23:53:55 raspberrypi xrdp[4955]: [ERROR] xrdp_process_data_in: xrdp_process_loop failed
4月 13 23:53:55 raspberrypi xrdp[4955]: [ERROR] xrdp_iso_send: trans_write_copy_s failed
4月 13 23:53:55 raspberrypi xrdp[4955]: [ERROR] Sending [ITU T.125] DisconnectProviderUltimatum failed
こちらにもこんなエラーが出ていますが、こちらも解決方法が密明けいません。
これ詰んでね?という状況になってしまったのですが、頑張って探すと海外の掲示板「Reddit」にこのようなスレッドを発見。
ここを見ると似たような症状が書いてあります。コメントには「こんな意味不明のバグ解決するのに1日無駄にしたわ」なんてこめんとがついています。
このページによると、おそらくデフォルトユーザーの設定は何かがおかしいようでこのデフォルトユーザーの「pi」環境でのみxrdpが正しく機能しないようです。
ということで、実際に別ユーザーを作成して試してみます。
sudo adduser USERNAME
USERNAMEは好きな名前にしてもらうとして、この後は指示に従ってパスワードを設定します。パスワードの設定以外は全部Enterで飛ばします。
後は新しく作成したアカウントでリモートデスクトップのソフトからログインを試します。
無事画面が表示されました。
ここからは少しだけ余談ですが、この方法で作ったユーザーでログインした状態だとsudoが使えないのでsudoグループに追加しておくと良いと思います。
sudoコマンドを使えるユーザーでログインして以下のコマンドを実行したら新しく作成したユーザーでsudoコマンドを使えるようになります。
sudo usermod -G sudo USERNAME
これで今までとさほど変わらずxrdp環境でサーバー運用ができそうです。
あまり同じ症状で困ることは無いと思うのですが、数か月前から修正されていないので、もしxrdpがどうしてもつながらないという場合は試してみても良いかもしれません。
1件のコメント