【Raspberry Piセットアップ方法(旧式)】ラズパイ & Remmina on LinuxでRDP接続してリモートデスクトップさせてみる


※ 当ページには【広告/PR】を含む場合があります。
2020/03/29
2022/04/16

例えばLAN越しにRaspberryPi(以下ラズパイ)をリモートデスクトップ接続ができるだけで、開発用のPCを一台に集約し、テスト環境下に置いた複数台のラズパイを遠隔操作しながら組込み開発できるなど、いろいろなユースケースが考えられます。

今回はラズパイにリモートデスクトップを導入するまでの手順をまとめ、ラズパイでリモートデスクトップするまでの方法を解説します。

まず最初にリモートデスクトップの事前準備として、ラズパイのデスクトップの自動ログイン機能をオフにし、ユーザー・パスワードでログイン認証できるようにします。

※2021/1月現在でRaspberry Pi OS(旧Raspbain OS)でも動作確認して内容の方をアップデートしています。なおBeta版のRaspberry Pi OS 64bitでも基本的には同じ内容が適用できるようです。

※2022/4月現在、Raspberry PIのデフォルトユーザー名
「pi」およびデフォルトパスワード「raspberry」が廃止されたのを受けて、新式のセットアップ方法を以下の別記事にて対応。

合同会社タコスキングダム|タコツボの中の工作室
【Raspberry Piセットアップ方法(最新)】Raspberry Pi Imagerで初回のSSH接続環境を整える

現在の初回のSSH接続設定方法をRaspberry Pi Imagerから行う手順を紹介していきます。

参考ニュースリリース|「Raspberry Pi OS」、最新リリースでデフォルトユーザー「pi」削除--セキュリティ強化


ラズベリーパイ4B 4GB 技適対応品

LABISTS Raspberry4 4B-32GB オールインワンセット

ラズベリーパイ カメラモジュールV2

NORSMIC 10インチRaspberry Pi用モニター

WEBカメラ eMeet C960 HD1080P ワイドサイズ対応 内蔵マイク

ラズパイ側での下準備

ラズパイへRDP接続する前段階として、まずはRDP接続させるクライアント設定を以降の手順でラズパイに仕込んでいきます。

ラズパイの動作環境確認

動作確認用に利用したラズパイはRaspberryPi 3B+/4です。

ラズパイにインストールしているLinuxの情報は
lsb_release -aで掃き出すことが出来ます。

            $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
        

ラズパイの自動ログイン機能

ラズパイに
Raspberry Pi OSをインストールしたての状態のままでは、

            ユーザー名:
    pi
パスワード:
    raspberry
        
の値で与えられており、root権限で操作が可能になっています。

とりあえず今回は自宅のLAN内限定でリモートデスクトップを利用しますが、基本的にリモートデスクトップを使う場合には、セキリュティ重視に運用すべきですので、本番環境ではユーザー名とパスワードをしっかり管理しなければなりません。

ユーザー名の変更のやり方は後回しにして、しばらく
piのままにしてまず先にパスワードの変更をやってみます。

パスワードの変更

パスワードの変更にはシステム設定用のユーティリティツール
raspi-configが利用可能です。以下、ターミナルから呼び出します。

            $ sudo raspi-config
        
以下のようにリスト項目から 1. System Options > S3. Passwordを選択しましょう。

合同会社タコスキングダム|蛸壺の中の工作室

すると、新しいパスワードの入力が求められ、入力したら変更完了です。設定したパスワードは忘れないようにメモしておきます。

自動ログイン設定の解除

デフォルトでは、ユーザーは自動ログインになっているので、ユーザー名とパスワードによって手動でログインできるように設定を変更しましょう。

lightdm.conf

次に/etc/lightdm/内にあるlightdm.confに定義されている自動ログインの設定をコメントアウトします。

            $ sudo nano /etc/lightdm/lightdm.conf
...中略
#autologin-user=pi #👈 ココをコメントアウト
...
        
これで再起動したらログイン時にユーザー名とパスワードを逐次要求されるようになります。

autologin@.service

ついでに今はまだ変更しなくてもいいのですが、ユーザー名を変えたときに関連して、ユーザーログイン時に用いられるデーモン起動用の設定ファイルも覗いておきましょう。

/etc/systemd/system/という場所のautologin@.serviceに記述されています。

            $ cat /etc/systemd/system/autologin@.service
#...中略

[Service]
#The VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM
#ExecStart=-/sbin/agetty --autologin <カスタムユーザー名> --noclear %I $TERM
Type=idle
Restart=always
RestartSec=0
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes

#...以下略
        
現在はデフォルトユーザー名piで設定しているため、設定ファイル中腹のExecStart=-/sbin/agetty --autologin pi --noclear %I $TERMに設定されています。ユーザー名を変更した際には、ここの設定を編集する必要があります。

これで自動ログインがオフになったので、再起動して確認してみましょう。


ラズベリーパイ4B 4GB 技適対応品

LABISTS Raspberry4 4B-32GB オールインワンセット

ラズベリーパイ カメラモジュールV2

NORSMIC 10インチRaspberry Pi用モニター

WEBカメラ eMeet C960 HD1080P ワイドサイズ対応 内蔵マイク

xrdpをRDPクライアント(ラズパイ)にインストール

さてここから本題のリモートデスクトップの環境構築をやっていきます。

リモートデスクトップといっても、主に

            + SSH接続
+ VNC接続
+ RDP接続
        
のようなものがあります。それぞれの詳細はグーグル先生にでも聞いていただくとしまして、それぞれの接続方式に長所短所があり、肝心なことはユーザーが目的に適した接続方法を選択することであります。

今回はRDP接続を使ったリモート環境からのラズパイの開発を想定しておりますので、手始めに
xrdpをラズパイに導入することから始めます。

といっても今日日、ラズパイへの
xrdpの導入はとても簡単です。

            $ sudo apt update && sudo apt upgrade
$ sudo apt install xrdp
        
インストールが問題なく完了したら以下のようにRDP接続の環境が整っているとおもいます。

            $ xrdp --help
xrdp 0.9.9
  A Remote Desktop Protocol Server.
  Copyright (C) 2004-2018 Jay Sorg, Neutrino Labs, and all contributors.
  See https://github.com/neutrinolabs/xrdp for more information.

  Configure options:
      --enable-ipv6
      --enable-jpeg
#...中略
  Compiled with OpenSSL 1.1.1d  10 Sep 2019
        
おまけでですが、現在のxrdpのパッケージ依存性も確認しておきます。

            $ apt-cache depends xrdp
xrdp
  依存: adduser
  依存: lsb-base
  依存: ssl-cert
  依存: libc6
  依存: libfuse2
  依存: libjpeg62-turbo
  依存: libopus0
  依存: libpam0g
  依存: libssl1.1
  依存: libx11-6
  依存: libxfixes3
  依存: libxrandr2
  推奨: fuse
    fuse3
  推奨: xorgxrdp
  提案: guacamole
  提案: <xrdp-pulseaudio-installer>
        


ラズベリーパイ4B 4GB 技適対応品

LABISTS Raspberry4 4B-32GB オールインワンセット

ラズベリーパイ カメラモジュールV2

NORSMIC 10インチRaspberry Pi用モニター

WEBカメラ eMeet C960 HD1080P ワイドサイズ対応 内蔵マイク

SSHサーバーの起動

ラズパイをCLI(コマンドライン)から操作するためにはSSHが欠かすことのできないツールになります。RDP接続においてもSSHは必須の要素ですので、この節でSSH接続が使えるようにラズパイ側に設定を行います。

まずラズパイのターミナル上で、以下のように設定ユーティリティを起動しましょう。

            $ sudo raspi-config
        
すると設定画面に移行しますので、3. Interfacing Options > P2. SSHを選択します。

合同会社タコスキングダム|蛸壺の中の工作室

そこでSSHを有効化するかどうか聞かれるので、
はいを選択するとSSHサーバーが有効します。

合同会社タコスキングダム|蛸壺の中の工作室

念の為、有効化したあとはラズパイ再起動しましょう。

クライアント側のsshで接続

開発用のデスクトップに移り、ターミナルからssh接続させてみましょう。

            $ ssh pi@192.168.0.105
pi@192.168.0.105\'s password:*********
Linux raspberrypi 4.19.102-v7+ #1295 SMP Thu Feb 6 15:43:59 GMT 2020 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Feb  7 18:40:24 2020

$ lsb_release -a
No LSB modules are available.
Distributor ID:    Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:    10
Codename:    buster

$ who
pi       tty1         2020-02-07 19:07
pi       pts/0        2020-02-07 19:33 (192.168.0.108)

$ exit
ログアウト
Connection to 192.168.0.105 closed.
        
となり、SSH接続できました。

ちなみに
whoコマンドを用いると、ログインしているユーザー名、使用中の端末名、ログインした時刻、ログイン中の端末IPアドレス(ここでは192.168.0.105)の順で表示できます。

たとえばここでは、
tty1がsshホストで使用中のラズパイ実機で、shh接続でアクセスしているクライアント側のコンピュータはpts/0という端末名になっているようです。(ちなみにクライアント側のIPは192.168.0.108)

SCPコマンドでssh接続間のファイルのやり取り

個人的に良く忘れやすいのでscpコマンドについて利用方法をまとめておきます。

scpコマンドを使えばssh接続を使ってネットワーク間でファイルを転送することが出来ます。以下が基本的なコマンド用法です。

            $ scp [オプション] [送り元のファイルかフォルダ] [送り先のパス]
        
利用例として以下にいくつか挙げます。ローカルにあってSSHでコンソールから接続する側がクライアント、リモートにあって接続される個体がサーバーとしますと、

            ##👇クライアント > サーバー(IP:192.168.0.105の時)
#① クライアントの1つのファイル(~/Desktop/hoge.dat)をサーバー(のHomenのred-tacoフォルダ)に送る
$ scp ~/Desktop/hoge.dat pi@192.168.0.105:~/red-taco/
#② フォルダの中身を全て送りたい場合は-rオプションを使う
$ scp -r ~/Desktop/red-taco pi@192.168.0.105:~/red-taco/
#③ SSH開放ポートが22以外なら-Pオプションを使う
$ scp -P 55555 -r ~/Desktop/red-taco pi@192.168.0.105:~/red-taco/

##👇サーバー(IP:192.168.0.105の時) > クライアント
#① サーバーの1つのファイル(~/red-taco/hoge.dat)をクライアント(のHomenのDesktopフォルダ)に送る
scp pi@192.168.0.105:~/red-taco/hoge.dat ~/Desktop/
#② フォルダの中身を全て送りたい場合は-rオプションを使う
$ scp -r pi@192.168.0.105:~/red-taco ~/Desktop/
#③ SSH開放ポートが22以外なら-Pオプションを使う
$ scp -P 55555 -r pi@192.168.0.105:~/red-taco/ ~/Desktop/
        

ラズベリーパイ4B 4GB 技適対応品

LABISTS Raspberry4 4B-32GB オールインワンセット

ラズベリーパイ カメラモジュールV2

NORSMIC 10インチRaspberry Pi用モニター

WEBカメラ eMeet C960 HD1080P ワイドサイズ対応 内蔵マイク

pi(デフォルトユーザー名)の変更

ラズパイへのssh接続ができたので、次はデフォルトユーザー名のpiの変更を先にやってみたいとおもいます。デフォルトユーザーを変更するには、一時的に作業できる仮のユーザーを作成し、そこのユーザーにログインしてしばらく作業します。

一時的な作業用ユーザーの作成

下記のコマンドでtempユーザを作成した後、sudo権限に追加します。

            $ sudo useradd temp
$ sudo gpasswd -a temp sudo
ユーザ temp をグループ sudo に追加
$ sudo passwd temp
新しいパスワード:*******
新しいパスワードを再入力してください:*******
passwd: パスワードは正しく更新されました
        
作成したパスワードは控えておきましょう。

(余談)rootでログイン

通常ではラズパイにrootにログインできない仕様だそうで、以下のように設定ファイルを覗いてみると、

            $ cat /etc/ssh/sshd_config
#...中略

#Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password

#...以下略
        
とrootでのログインは許可されていないようです。

今回は作業用のユーザーで新規ユーザーを作成する方法を利用しましたが、どうしてもrootに入って(自己責任で)操作したい場合には、

            $ sudo nano /etc/ssh/sshd_config
#...中略

#Authentication:

PermitRootLogin yes
        
としてsshを再起動すると、ログインできるそうです。

tempユーザーでログイン

まだユーザーはpiのままですので、tempに切り替えてログインします。

まずは
piがログインで立ち上がらないように起動デーモンの設定をコメントアウトします。

            $ sudo nano /etc/systemd/system/autologin@.service
#...中略
[Service]
#the VT is cleared by TTYVTDisallocate
#ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM
        
またお手元のラズパイによっては、/etc/systemd/system/getty@tty1.service.d/autologin.confにもログイン時の設定が書き込まれている場合があるので、そこも該当箇所を修正します。

            $ sudo nano /etc/systemd/system/getty@tty1.service.d/autologin.conf
[Service]
#ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM
        
個人的はオートログイン機能を使う予定はないのですが、もしオートログイン機能を復活させて使う際にはここらへんの設定を戻してあげると良いでしょう。設定ファイルを書き換えたら、再起動します。

            $ sudo reboot
Connection to 192.168.0.103 closed by remote host.
Connection to 192.168.0.103 closed.
        
再起動後に、ここからは先程作業用に作ったユーザー・tempに切り替えて作業するのですがGUIのままだと、デスクトップのプロセスがずっと居残ってしまい、piのユーザー名を変える時に以下のようなエラーが出てしまいます。

            $ usermod -l hogehoge pi

usermod: user pi is currently used by process 1234
        
ということで、tempユーザーに切り替える前に、raspi-configからブートオプションでConsoleにモード変更しておく必要があります。

            $ sudo raspi-config
#👇選択肢から
#1. System Option >
#S5. Boot / Auto Login >
#B1. Console
#の順で変更
        
これで再起動し終わったら、

            $ ssh temp@192.168.0.105
temp@192.168.0.105\'s password:******
Linux raspberrypi 4.19.102-v7+ #1295 SMP Thu Feb 6 15:43:59 GMT 2020 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Could not chdir to home directory /home/temp: No such file or directory
temp@raspberrypi:/$ who
temp     pts/0        2020-02-07 21:14 (192.168.0.108)
        
ということで無事tempでログインできたようです。早速作業用のtempユーザー名でsshログインし直し引き続き作業を行います。

piからユーザー名を変更する

では本題の
usermodコマンドでログイン名をpiからred-tacoという名前に変更してみます。

            $ sudo usermod -l red-taco pi #ユーザー名変更
$ sudo usermod -d /home/red-taco -m red-taco #ホームディレクトリの名前修正
$ sudo groupmod -n red-taco pi #権限グループの変更
        
終わったら再起動します。

では
red-tacoというユーザー名でログインします。パスワードはpiのときに使っていたもので引き継がれます。

            $ ssh red-taco@192.168.0.105
red-taco@192.168.0.105\'s password:*******
Linux raspberrypi 4.19.102-v7+ #1295 SMP Thu Feb 6 15:43:59 GMT 2020 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Feb  7 21:04:59 2020
red-taco@raspberrypi:~ $ who
red-taco pts/0        2020-02-07 21:25 (192.168.0.108)
        
ちゃんと新しいユーザーとして認識されました。

後片付け

作業用に利用した
tempユーザーはもういらないので削除します。

            $ sudo userdel -r temp
あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

[sudo] red-taco のパスワード:*********
userdel: temp のメールスプール (/var/mail/temp) がありません
        
なにかしら警告がでますが無視してもよさそうです。

ここまでの内容で参考にさせて頂いたサイト

RaspberryPi 3 デフォルトユーザpiの変更

Raspberry Pi 3のセキュリティ対策を行う


ラズベリーパイ4B 4GB 技適対応品

LABISTS Raspberry4 4B-32GB オールインワンセット

ラズベリーパイ カメラモジュールV2

NORSMIC 10インチRaspberry Pi用モニター

WEBカメラ eMeet C960 HD1080P ワイドサイズ対応 内蔵マイク

SSHのポート番号の変更

前節までで、ssh接続によるユーザー名の変更を解説しました。

この時点で本題のRDP接続も十分可能なのですが、前回の内容でssh接続のポート番号がデフォルトの
22のままなのがずっと気になってはいました。最近の著者のラズパイはssh接続を許可したまま利用することも多いので、デフォルトのポート番号のままだと、セキュリティー面で不安が残ります…ということで、この節ではすこし脱線して、sshのポート番号の修正方法と、ラズパイのIPを固定する方法と、先に解説します。

まずはsshのポート番号の変更を先にやりましょう。sshのポート番号を変更しますが、若い番号だとみっちりと役割予約されている場合がおおいようですので、
49152-65535(動的・プライベートポート)をどれかを利用するのが良いとのことです。

ここでは好みの問題で例えばポート番号を
55555に変更してみます。(運用上はもっと並びの悪いポート番号を利用したほうが良いと思います...)

なおsshでリモート接続しながら、sshのポート番号を変更できませんので、ラズパイ実機で直接作業します。ラズパイのコンソールで設定ファイルの中のポート番号を記述している箇所を変更・保存しましょう。

            $ sudo nano /etc/ssh/sshd_config
#...中略
#Port 22
Port 55555
#...以下略
        
その後sshを再起動します。

            $ sudo /etc/init.d/ssh restart
[ ok ] Restarting ssh (via systemctl): ssh.service.
        
それではリモートのsshクライアント機から接続してみます。

            $ ssh red-taco@192.168.0.105 -p 55555
red-taco@192.168.0.105\'s password:*********
Linux raspberrypi 4.19.102-v7+ #1295 SMP Thu Feb 6 15:43:59 GMT 2020 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Feb  8 02:10:11 2020 from 192.168.0.108
red-taco@raspberrypi:~ $
        
これで、sshのポート番号を無事変更することができました。


ラズベリーパイ4B 4GB 技適対応品

LABISTS Raspberry4 4B-32GB オールインワンセット

ラズベリーパイ カメラモジュールV2

NORSMIC 10インチRaspberry Pi用モニター

WEBカメラ eMeet C960 HD1080P ワイドサイズ対応 内蔵マイク

IPアドレスの固定

毎回DHCPで動的に割り振られたIPアドレスでリモートデスクトップを利用するのは大変ですので、ラズパイ子機のIPアドレス固定方法をここで試してみます。

ここでは無線LANでのWi-Fi接続前提で、IPアドレスの固定方法を行います(有線LANでの場合は取り上げませんが
有線LANの場合の設定方法を取り上げられている記事の方をご参照ください)。

Wi-Fiの初期設定

だいたいラズパイを購入された方は、手始めにWi-Fi接続をさせてみる方が多いと思いますので、既に接続されている方はこの項目をスキップしてください。

以下は、ラズパイのWi-Fi設定ウィザードを利用せずに、Wi-Fiの設定ファイルに直接書き込む方法です。

            $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
    ssid="********" # Wi-Fiのssid名
    psk="********" # Wi-Fiのパスフレーズ
    key_mgmt=WPA-PSK
}
        
これでネットワークに接続できるか確認ください。

IPアドレス値の固定

では、ネットワークの設定ファイルを編集し、IPアドレス値を固定します。今回は試しに
192.168.0.250で固定してみます。

サブネットマスクはだいたいご家庭用の無線Wi-Fiルーターなら
/24だと思いますが、サブネットマスク値の計算でも確認できます。

デフォルトゲートウェイ値は、お手元の無線ルーターでメーカーごとに仕様が異なります。例えば著者が利用中の無線Wi-FiのルータはTP-Linkの無線ルーターですので、デフォルトゲートウェイは
192.168.0.1となります。ネットワーク環境によって適切なデフォルトゲートウェイを設定ください。

            $ sudo nano /etc/dhcpcd.conf
#...中略
#以下をファイル内に追記
interface wlan0
static ip_address=192.168.0.250/24 # 固定したいIP+サブネットマスク
static routers=192.168.0.1 # デフォルトゲートウェイ
static domain_name_servers=192.168.0.1 # デフォルトゲートウェイ
        
再起動して早速IPを確認します。

            $ ifconfig
#...中略
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.250  netmask 255.255.255.0  broadcast 192.168.0.255
#...
        
となり、確かに192.168.0.250で固定されております。

おまけ:IPの確認コマンドの色々

本筋の内容と関係ないですが、
ifconfigでIPアドレス値を確認しようとすると、いろんな情報がバッと出てきて見づらい場合があります。そんなとき覚えておいて損はないコマンドのご紹介です。

networkctl

ネットワークの稼働状態を教えてくれるコマンドです。その際にIPアドレスも表示されています。

            $ networkctl status
WARNING: systemd-networkd is not running, output will be incomplete.
●        State: n/a
       Address: 192.168.0.250 on wlan0
                fe80::a3d5:12:4be7:6270 on wlan0
       Gateway: 192.168.0.1 on wlan0
        

hostname

IPアドレスだけを引っこ抜きたいときの最もシンプルなコマンドです。

            $ hostname -I
192.168.0.250
        

ip

IP周りの詳細なプロフィール情報を表示させます。サブネットマスク表示など、現在のネットワークを詳しく知りたいときのコマンドです。

            $ ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.0.250/24 brd 192.168.0.255 scope global noprefixroute wlan0
       valid_lft forever preferred_lft forever
        

ラズベリーパイ4B 4GB 技適対応品

LABISTS Raspberry4 4B-32GB オールインワンセット

ラズベリーパイ カメラモジュールV2

NORSMIC 10インチRaspberry Pi用モニター

WEBカメラ eMeet C960 HD1080P ワイドサイズ対応 内蔵マイク

補足編 〜 Dockerとdocker-composeを使えるようにしておく

個人にラズパイをdockerと組み合わせて何らかのサーバーとして常時起動させておくような使い方が多いので、docker回りのインストール手順にも触れておきます。

ラズパイへのdockerの導入方法は、リソースビルドするしか無かった時代と比べると、かなり楽になっています。以下のようにインストールスクリプトが用意されているので、このスクリプトを走らせるだけで簡単にdockerを導入することができます。

            $ curl -sSL https://get.docker.com | sh
        
さらにpip3で簡単にdocker-composeもインストールできますので、これも導入しておきます。

            $ sudo pip3 install docker-compose
        
ちなみに直近のRaspberry Pi OSはデフォルトでpython3がインストールされていると思いますが、pip3はデフォルトで入ってはいないと思います。pip3の導入には、aptを使ってインストールできます。

            $ sudo apt install python3-pip
        
もしdocker-composeのインストール中に、pip3からNo package 'libffi' foundのエラーが合った場合にはlibffiを入れる必要がありますので、

            $ sudo apt update
$ sudo apt install libffi-dev
        
とするとdocker-composeも簡単に使えるようになると思います。

ちなみに
sudo無しのdockerコマンドで以下のようなエラーが出るときがあります。

            $ docker ...
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=alpine&tag=edge: dial unix /var/run/docker.sock: connect: permission denied
        
これは現在のユーザーにdockerコマンドを直接実行する権限がないと言われているために起こるものです。毎回sudoしてdockerを呼び出すのは面倒ですので、Permissionを与えておきます。

            $ whoami
red-taco
#👇権限を与えたいユーザーに"red-taco"の箇所を置換える
$ sudo usermod -g docker red-taco
$ sudo systemctl restart docker.service
$ id red-taco
#👇ユーザーにdockerの実行権限が付与されている
uid=1000(red-taco) gid=995(docker) groups=995(docker),...
        
設定を有効にするためには、一度ログアウトしてログインし直すか、再起動するとdockerコマンドの実行にログイン中のユーザーにルート権限を持たせるためには以下のコマンドを叩くと次回からはsudoの枕詞が要らなくて済みます。


ラズベリーパイ4B 4GB 技適対応品

LABISTS Raspberry4 4B-32GB オールインワンセット

ラズベリーパイ カメラモジュールV2

NORSMIC 10インチRaspberry Pi用モニター

WEBカメラ eMeet C960 HD1080P ワイドサイズ対応 内蔵マイク

ラズパイへRDP接続する

前節まででラズパイのIP固定方法SSHのポート番号変更の方法を先んじて解説しましたが、この節からはいよいよRDP接続の内容を解説していきます。

上記したようにWi-FiのIPアドレス値を固定する手順を説明していましたが、そこで固定したIPアドレス値を使って、
RemminaによるRDP接続するという首題の手順をやっていきます。

Linuxデスクトップの動作環境

現在、この内容執筆時の
Remminaをインストールさせてみる環境です。以下のようにDebian10のデスクトップを利用しております。

            $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
$ cat /etc/debian_version
10.3
        
Remminaは対応できるLinuxOSの種類が多いので、公式のインストールガイドに沿って、お手元のPCに合った方法をとりましょう。

以降はDebian10でのインストールを確認した際の手順で説明していきます。他のLinuxディストリビューションでも、おおまかな手順は同じですので、多少の手順の違いは御了承ください。

LinuxにRemminaのインストール

公式にもありますが、Debian10以降のディストーションではパッケージマネージャによるインストールが可能になりました。

メニューからパッケージマネージャを開きます。

合同会社タコスキングダム|蛸壺の中の工作室

パッケージイントーラを立ち上げ、
Remminaとパッケージ検索するとアプリケーションが表示されますので、それをチェックしてインストールしましょう。

合同会社タコスキングダム|蛸壺の中の工作室

インストールが終わると、アプリケーションメニューに
Remminaが登録されていると思います。

合同会社タコスキングダム|蛸壺の中の工作室

Remminaを使ったRDP接続

さて、前回までで散々設定を施してきたラズパイへ、いよいよRemminaからRDP接続する作業です。

まずRemminaを立ち上げます。

合同会社タコスキングダム|蛸壺の中の工作室

左上の
新規プロファイル作成のアイコンをクリックして、プロファイル作成画面に移ります。

合同会社タコスキングダム|蛸壺の中の工作室

今回は基本設定以外の設定はいじりません。設定項目は以下の通りです。

            名前:
    お好きなプロファイル名
    #例)red-taco@rasppi
プロトコル:
    RDP
サーバー:
    ホスト機(ラズパイ)のIP
    #例)192.168.0.250
ユーザー名:
    ホスト機(ラズパイ)へログインするユーザー名
    #例)red-taco
ユーザーパスワード:
    ログインするユーザーのパスワード
解像度:
    1024x768(カスタム)
    #お使いのディスプレイに合わせて設定
色数:
    GFX RFX(32bpp)
    #画面転送量に関連
        
IPなどの設定項目は、ご自分の環境で設定した値を入力してください。

ちなみにラズパイ4では画面解像度が
1152x864で、色数RemoteFX(32bpp)に変えると上手く表示されると思います。

適切に設定が反映された後に接続させてみると、

合同会社タコスキングダム|蛸壺の中の工作室

無事RemminaでRDP接続できました。

thinclient_driversの処理

気にならなければ、そのままRDP接続を利用できるのですが、そのままではデスクトップ上に
thinclient_driversという謎ドライブが居座り続けます。

この解決策を提示していらっしゃる方の記事を拝見しますと、隠しファイル化する方法が一番良さそうです。

ではラズパイ上で、設定ファイル
/etc/xrdp/sesman.iniの中身を編集します。iniファイルの最後の方にある箇所をFuseMountName=.thinclient_drivesとするだけです。

            $ sudo nano /etc/xrdp/sesman.ini
#....中略
[Chansrv]
; drive redirection, defaults to xrdp_client if not set
; FuseMountName=thinclient_drives ; 👈コメントアウト
FuseMountName=.thinclient_drives

[SessionVariables]
PULSE_SCRIPT=/etc/xrdp/pulse/default.pa
        
編集し終わったら、元あったthinclient_drivesを消去し、xrdpを再起動させます。

            $ ls ~
thinclient_drives
$ rm -rf thinclient_drives
$ sudo systemctl restart xrdp
        
再度RemminaでRDP接続をすると、デスクトップからアイコンが消えて、隠しファイル化しております。

合同会社タコスキングダム|蛸壺の中の工作室


ラズベリーパイ4B 4GB 技適対応品

LABISTS Raspberry4 4B-32GB オールインワンセット

ラズベリーパイ カメラモジュールV2

NORSMIC 10インチRaspberry Pi用モニター

WEBカメラ eMeet C960 HD1080P ワイドサイズ対応 内蔵マイク

まとめ

長くなりましたが、RemminaによるRDP接続を行う手順を説明してまいりましたが、いかがでしたでしょうか。

RDP接続を使えば、ラズパイにSSH接続するときには手の届かなかったグラフィカルな操作が可能になりますので、カメラや音声を取り込むような自作のアプリケーションを動作確認するようなユースケースに捗りそうです。

今後なにか面白い応用が思いつけばブログで取り上げるかもしれませんので、またその時はタコキンのブログをチェックいただけたら幸いです。