2019年1月21日月曜日

Raspbian Liteにデスクトップ環境をインストールしてRDPでリモートログインする方法


背景

RaspbianとはRaspberry Piという5000円前後で買えるPC向けに配布されているOSです。
Raspbianにはデスクトップ環境を含んでいないLite版、デスクトップ環境を含む通常版、便利そうなプログラムを含むFull版があります。

RDPとは、リモートデスクトップ接続に関するプロトコルです。
リモートデスクトップを利用するにはRDPの他にVNCを使う選択肢がありますが、 VNCは通信内容を暗号化していない一方、RDPはTCP通信を利用する中で暗号化しているため、この記事ではより安全そうなRDPを利用します。

Raspbian Liteで動かしていたRaspberry Piにデスクトップ環境を構築してリモートでログインしたくなったものの、検索して見つけた情報だけでは分からなかった部分で時間を取られたので、自分の言葉でまとめます。

使ったもの

Raspberry Pi + Raspbian Lite

Raspbianは2018.11版を利用しました。
Raspberry PiはZero WHと3B+で動作を確認しました。

Zero WH: スイッチサイエンス
3B+: スイッチサイエンス amazon

Raspberry PiにリモートログインするためのPC

この記事ではUbuntu18.04でRemminaというプログラムを利用してRaspberry Piにリモートログインする方法を紹介します。
UbuntuでRemminaを起動するには、Windowsボタンを押してメニューを表示し、remminaと入力してエンターを押すと起動できます。


RDPはWindowsでは標準機能として扱われているようなので、WindowsからRaspberry PiにRDPでログインしたい場合は、検索すると情報が見つかると思いますので、他のサイトを参照してください。

Rasbian Liteにデスクトップ環境とRDPプログラムをインストール

インストールコマンド

Raspberry PiをRDPのサーバーとして動かすことで、他のPCからRDPで接続し、デスクトップ環境にリモートログインできるようにします。

Raspbian Liteにデスクトップ環境をインストールします。
sudo apt install --no-install-recommends xserver-xorg xinit
sudo apt install raspberrypi-ui-mods
sudo reboot

RDPのサーバーとして動くxrdpというプログラムをインストールします。
sudo apt install xrdp

以上の手順でRDPでRaspbianにログインできるようになります。

しかし、上記のコマンドだけだとGUI操作でランチャーに並ぶプログラムが少ないので、ブラウザとコンソールをインストールしておくと、デスクトップのヘッダにボタンが並んで便利だと思います。
sudo apt install firefix-esr lxterminal

またRaspbianには日本語が入っていないので、日本語フォントを入れておくのもおすすめです。
sudo apt install fonts-noto

thinvncserverは要るのか?

RDPの使い方を解説しているページによってはxrdpを使うには一緒にthinvncserverをインストールする必要があるように書かれています。
しかし、自分が試した時はthinvncserver無しでRDP接続ができました。
以前はxrdpがthinvncserverに依存していたようでが、今は依存していないようなので、thinvncserverは不要なようです。
apt-cache depends xrdp
xrdp
  Depends: adduser
  Depends: lsb-base
  Depends: ssl-cert
  Depends: init-system-helpers
  Depends: libc6
  Depends: libfuse2
  Depends: libjpeg62-turbo
  Depends: libopus0
  Depends: libpam0g
  Depends: libssl1.1
  Depends: libx11-6
  Depends: libxfixes3
  Depends: libxrandr2
  Recommends: fuse
  Recommends: xorgxrdp
  Suggests: guacamole

--no-install-recommends無しでインストールしてRDP接続出来ない場合

先ほど紹介した
sudo apt install --no-install-recommends xserver-xorg xinit

sudo apt install xserver-xorg xinit
のように「--no-install-recommends」なしで実行した場合、後ほど紹介する手順でログインしようとしても、数分待たされた後に下記のようなエラーが表示されて、リモートログインできません。


connecting to sesman ip 127.0.0.1 port 3350
sesman connect ok
sending login info to session manager, please wait...
login successful for display 10
started connecting
connection problem, giving up
some problem

システムのログは下記のような内容になっていました。
tail -f /var/log/xrdp-sesman.log
[20190113-10:30:20] [ERROR] another Xserver might already be active on display 10 - see log
[20190113-10:30:20] [DEBUG] aborting connection...
[20190113-10:30:20] [INFO ] ++ terminated session:  username pi, display :10.0, session_pid 1286, ip 0.0.0.0:33334 - socket: 12
[20190113-10:33:26] [INFO ] A connection received from ::1 port 58778
[20190113-10:33:27] [INFO ] ++ created session (access granted): username pi, ip 0.0.0.0:33338 - socket: 12
[20190113-10:33:27] [INFO ] starting Xorg session...
[20190113-10:33:27] [DEBUG] Closed socket 9 (AF_INET6 :: port 5910)
[20190113-10:33:27] [DEBUG] Closed socket 9 (AF_INET6 :: port 6010)
[20190113-10:33:27] [DEBUG] Closed socket 9 (AF_INET6 :: port 6210)
[20190113-10:33:27] [DEBUG] Closed socket 8 (AF_INET6 ::1 port 3350)
[20190113-10:33:27] [DEBUG] Closed socket 7 (AF_INET6 ::1 port 3350)
[20190113-10:33:27] [INFO ] Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp  
[20190113-10:33:37] [ERROR] X server for display 10 startup timeout
[20190113-10:33:37] [INFO ] starting xrdp-sessvc - xpid=1367 - wmpid=1366
[20190113-10:33:37] [ERROR] X server for display 10 startup timeout
[20190113-10:33:37] [ERROR] another Xserver might already be active on display 10 - see log
[20190113-10:33:37] [DEBUG] aborting connection...
[20190113-10:33:37] [INFO ] ++ terminated session:  username pi, display :10.0, session_pid 1365, ip 0.0.0.0:33338 - socket: 12

この内容で検索したところ、ズバリ解決策を提示しているサイトが見つかりました。
xrdp が以下のようなエラーで接続できない時の直しかた

Xwrapper.configのalowed_usersをconsoleからanybodyに変更すると、RDPでログインできるようになりました。
/etc/X11/Xwrapper.config
allowed_users=anybody

「--no-install-recommends」ありでインストールした場合や、RaspbianのDesctop版やFull版にはXwrapper.configが無いので、「--no-install-recommends」無しでインストールすると、Raspbianには標準で入っていないプログラムがインストールされてこの現象が発生するようです。

PCからRaspbianにRDPでログイン

UbuntuからRemminaを使い、WiFi経由でRaspberry Piにログインしてみます。
(PCとRaspberry Piは同じWiFiに接続しておいてください。)

まずは、Raspberry Piで下記のコマンドを入力し、アドレスを調べます。
ip a show

「192.168.」で始まるのがローカルのIPであることが多いです。

Raspberry Piのアドレスが分かったら、Remminaからのログインを試みます。
UbuntuでWindowsマークをクリックしてremminaと入力してからエンターを押し、Remminaを起動します。


「+」をクリックして、接続先を追加します。


名前を付けておくと、設定が保存されて再接続する際に便利です。


Raspberry Piのアドレス、ユーザー名(標準はpi)、パスワード(標準はraspberry)を入力します。
標準のパスワードだと容易に乗っ取られるので、パスワードは自分のものに変えることをお勧めします。


Raspberry Piで動かしているxrdpは32bppに対応しますが、GVX AVC形式は対応していないため、GVX AVC形式で接続しようとすると下記のようなエラーが表示されます。


You requested an H264 GFX mode for server *.*.*.*, but your libfreerdp does not support H264. Please check Color Depth settings.

GVX RFX以下の色設定を選ぶと、エラー無く繋がってくれます。



Save and Connect ボタンを押してRaspberry Piのデスクトップが表示されればリモートログイン成功です。



まとめ

Raspbian Liteにデスクトップ環境をインストールして、RDPでリモートログインできました。

何かの参考になれば嬉しいです。

参考

Upgrade Raspbian Stretch Lite zur vollen Desktop Version
Raspbian Stretch Liteにデスクトップ環境をインストール(3ステップ)
Remmina で not support H264 エラーが出て接続できない

0 件のコメント :