Raspberry Pi 3の環境構築 OSのインストールからSSHでの認証ログインまで

今更ながら「Raspberry Pi 3 model B+」の環境構築をしたので、その作業内容を備忘録として残していきます。

このラズパイ自体は2019年末頃購入して、一度環境構築済みでした。
しかしその後全く触っておらず、どんな設定したのかも忘れてしまったので、思い出すのも兼ねて最初から行なっていきました。

なお、以下のPC側の作業はMac環境を記載しています。

また、最初からSSHで接続する前提ですので、Raspberry Pi側はwifiに接続するのみで、キーボードやディスプレイ等は接続しません。

Raspberry Pi OS のインストール

OSイメージの取得

以前はRaspbianという名称でしたが、「Raspberry Pi OS」に変わったんですね。
下記のサイトよりダウンロードが可能です。

OSの種類は従来と同じ3種類ですね。
特にVNCで繋いだりディスプレイに接続する予定もないので、今回はLiteを導入しています。

  • Raspberry Pi OS with desktop and recommended software
    →全部入りバージョン
  • Raspberry Pi OS with desktop
    →最低限のソフトウェア+デスクトップ環境
  • Raspberry Pi OS Lite
    →CUI環境のみ

Image書き込みツールをダウンロード

Raspbianの時はあったかな?
OSの書き込み用のツールも公開されているんですね。
今回はこれを使用したいと思います。

SDカードの初期化から書き込みまでこれ一つでOKみたいです。簡単!

起動後、ダウンロードしたOSイメージを選択して、「WRITE」をクリックするのみ。
その後のダイアログで「YES」を選択すれば、あとは待つだけです。

事前のWifi設定

SDカードをラズパイにセットする前に、先にwifiの設定を書き込んでおきます。
ラズパイにはキーボードもディスプレイも繋がないので、起動後すぐにネットワークに接続して欲しいからです。

何もしなくても有線LANであればつなげてくれますが、ここではwifiで繋ぐように設定しておきます。

wpa_supplicant.confの設定

ラズパイOSをインストールしたSDカードの直下で作業を行います。
接続先のSSIDとパスフレーズを下記のように入力した「wpa_supplicant.conf」を作成すればOK。

ここではパスフレーズは平文のままです。
必要であれば暗号化をしてください。


$ touch wpa_supplicant.conf      ★ファイルを新規作成する
$ vi wpa_supplicant.conf     ★viを起動し、以下の記述を行う
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1
network={
        ssid="設定するSSIDの名称"
        psk="接続用のパスフレーズ"
}

Raspberry Pi を起動し、SSHで接続する

以下の手順でラズパイにwifi経由でSSHで繋ぎます。

  • OSイメージを書き込んだSDカードをラズパイにセットする
  • ラズパイを起動する(USBを接続する)
  • PC(Mac)側で以下を実行し、ラズパイのipアドレスを確認して接続する
    • ラズパイのMacアドレスはこれまで「b8:27:eb:**:**:**」だったのですが、ラズパイ4が出てから種類が増えたようですね。
    • うちのラズパイはb8〜なので、そのMacアドレスを持つipアドレスをarpコマンドで探します
$ arp -a
(ipアドレス) at b8:27:eb:**:**:**   ・・・・

$ ssh pi@arpで調べたipアドレス

viのキー動作がおかしいので設定する

SSHでログイン後、設定のためにviを起動するのですが、どうも動作がおかしい。
症状としてはこんな感じです。

  • 矢印キーを入力するとA,B,C,Dのような入力がされてしまう
  • “i”を入力してもINSERTモードに切り替わらない

調べてみたところ、vi互換として動作するとこうなるとか。。。
あまりこの辺がよく分かっていませんが、互換ではなくために以下の作業を行います。

$ vi .vimrc
(以下は.vimrcの記載内容)
set nocompatible

ルートでファイル編集する必要がある場合もあるので、root側の.vimrcも記載しておく必要があります。

ユーザー設定

ここからは外から繋いだりしない限り不要かもしれませんが、一応やっておきます。
実施内容は下記。

ここではpiユーザーを削除していますが、削除しない方が良いという方もいるようですね。
この辺は自己判断で。。。

  • ルートパスワードの変更
  • 新規ユーザーの追加
  • pi(デフォルトユーザー)の削除
  • ホスト名の変更
  • SSHでのrootログイン禁止

ルートパスワードの変更

新しいパスワードを2回入力するだけ。
古いパスワードの入力は必要ない。

$ sudo passwd root
New password: 
Retype new password: 
passwd: password updated successfully

新規ユーザーの追加

ここでは新規のユーザー名を”USERNAME“としています。
途中でユーザー情報を入力するようい言われますが、特に何も入力しなくてもOKです。

pi@raspberrypi:~ $ sudo adduser USERNAME
Adding user `USERNAME' ...
Adding new group `USERNAME' (1001) ...
Adding new user `USERNAME' (1001) with group `USERNAME' ...
Creating home directory `/home/USERNAME' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for USERNAME
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] Y

新規ユーザーのグループをpiユーザーと同じにする

後々piユーザーを削除する前提なので、新規ユーザーをpiユーザーの属するグループと同じにしておく必要があります。

$ groups pi
pi : pi adm ・・・(piの属すグループが全て表示される)
$ sudo usermod -G pi,・・・(上記グループを全て,区切りで入力)  USERNAME

piユーザーフォルダの中身を新規ユーザーフォルダにコピー

起動直後だから何もない気はしますが、下記を実行。

$ sudo cp -r /home/pi/. home/USERNAME/.

オートログインユーザーを新規ユーザーに変更する

書いてて思ったけど、これCUIでも必要なのかな?

$ sudo vi /etc/systemd/system/autologin@.service
  ★以下の行のpiをUSERNAMEに変更する(元々は"pi")
ExecStart=-/sbin/agetty --autologin USERNAME --noclear %I $TERM

$ sudo reboot
〜リブート後〜
$ who 
USERNAME ・・・

piユーザー(デフォルトユーザー)を削除する

$ sudo userdel -r pi

ホスト名を変更する

セキュリティというのもありますが、今後台数が増えたりするかもしれませんので、そのためにもホスト名を変えておきます。

$ sudo vi /etc/hostname
HOSTNAME
$ sudo vi /etc/hosts
127.0.0.1	localhost
::1		localhost ip6-localhost ip6-loopback
ff02::1		ip6-allnodes
ff02::2		ip6-allrouters

127.0.1.1		HOSTNAME

ホスト名が変更されたので、以降はSSHで接続する際も
ssh USERNAME@HOSTNAME.local で実行できます。

SSHでのrootログインを禁止する

$ sudo vi /etc/ssh/sshd_config
〜〜〜
★以下のように変更
#PermitRootLogin prohibit-password
PermitRootLogin no
〜〜〜

SSHの認証方式を鍵認証に変更する

公開鍵を作成し、scpでラズパイに転送する

※Mac側の作業です※

$ ssh-keygen -t rsa    ★公開鍵を作成する
$ scp .ssh/id_rsapub USERNAME@HOSTNAME.local:
   ★ラズパイに公開鍵をscpで転送する

ssh-keygenで公開鍵を作成するとき、パスフレーズの入力を求められます。
セキュリティ的にはもちろん入力した方が良いですが、未入力でエンターでも作成できます。
外から繋ぐとか出ないのであれば、SSHのたびにパスフレーズを入れるのは面倒なので入力しないのも良いかもしれませんね。

転送された公開鍵を使ってラズパイを設定する

※ラズパイ側の作業です※

$ mkdir .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys ★scpした公開鍵の内容を転記
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
$ rm id_rsa.pub ★不要になった公開鍵を削除

$ sudo vi /etc/ssh/sshd_config
〜〜〜
★以下のように変更
AuthorizedKeysFile  .ssh/authorized_keys .ssh/authorized_keys2
〜〜〜

$ sudo reboot

MacからSSHするときのconfigの記載

※Mac側の作業です※

公開鍵方式でSSHするようにした場合、オプションでポート番号や鍵の名称の入力が必要になります。
.ssh/configに設定を記載しておけば、入力内容を省くことができるので便利です。

以下の内容まで記載しておけば、SSHする際にはホスト名のみ入れれば接続できます。

$ vi .ssh/config
Host 任意の接続名称
        HostName HOSTNAME.local
        User USERNAME
        Port ポート番号
        IdentityFile ~/.ssh/id_rsa

$ ssh 任意の接続名称

その他

.bash_profileの所有者変更

ラズパイ側にSSHで接続した際に、コンソール(Macのターミナル)の表示色が白一色になってしまいました。

原因はどうやら下記の2点。

  • .bash_profileの所有権がrootになっているため、sshしても読み込まれなかった
  • ssh接続時、.bashrcが読み込まれていなかった

なので下記の操作を実施。

$ chown USERNAME:GROUPNAME .bash_profile 
$ echo "source ~/.bashrc" >> ~/.bash_profile

これでSSHを接続した時に、.bashrcの内容が反映されるようになりました。

終わりに

この記事では、Raspberry Pi OSをインストールしてからおよそ必要な設定をするまでの作業を列挙してみました。

作業する際の参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です