Pulog

Raspberry Pi OS Lite をインストール後に行うべき初期設定

普段使っている Raspberry Pi4 Model B の構成がどうもおかしくなってしまったようで、久々に Raspberry Pi3 Model B を動かそうと思い立ち、その際に行った初期設定を備忘録として記載しておきます。

誰かの参考になれば幸いです。

Raspberry Pi OS の入手

ここ最近? Raspbian OS から Raspberry Pi OS に名称が変わったらしいですね。
Download Raspberry Pi OS for Raspberry Pi

今回は Raspberry Pi OS (32-bit) Lite という、GUIを提供しない軽量版のOSを利用していきます。64bit版もありますが、まだベータ版という位置づけなので、使用しないでおきます。

Raspberry Pi OS をマイクロSDカードに焼く

自分はOSのイメージは balenaEtcher を利用して焼いています。
balenaEtcher - Flash OS images to SD cards & USB drives

他のOSイメージの作成と変わらないので、具体的なOSのイメージの焼き方は省略します。

SSHの有効化

Raspbian OS はデフォルトだとSSHが有効になっていないので、 boot ボリュームに ssh という拡張子無しのファイルを作成。中身は空のままで問題ないです。

Raspberry Pi起動 & IPアドレスを探す

マイクロSDカードを Raspberry Pi 本体に差し込んで電源投入、数分お茶を飲み Raspberry Pi の準備が整ったと思われるタイミングでSSH接続で必要なIPアドレスを探していく。

当方はWindowsでSSH接続するためのIPアドレスを知りたいので、コマンドプロントか Windows Power Shellより以下コマンドを叩く。

PS C:\Users\****> arp -a

インターフェイス: 192.168.1.9 --- 0x5
  インターネット アドレス 物理アドレス           種類
  192.168.1.1           **-**-**-**-**-**     動的
  192.168.1.5           **-**-**-**-**-**     動的
  192.168.1.6           **-**-**-**-**-**     動的
  192.168.1.25          dc-a6-32-8f-d9-c3     動的
  192.168.1.26          b8-27-eb-96-1d-b5     動的
  192.168.1.255         ff-ff-ff-ff-ff-ff     静的
  224.0.0.22            **-**-**-**-**-**     静的
  224.0.0.251           **-**-**-**-**-**     静的
  224.0.0.252           **-**-**-**-**-**     静的
  239.255.255.250       **-**-**-**-**-**     静的
  255.255.255.255       ff-ff-ff-ff-ff-ff     静的

# 以下省略……

arp -a で叩くことで同一のネットに繋がっている機器のIPとMACアドレスが確認できる。b8:27:e1dc-a6-32 が先頭の機器が Raspberry Pi と判断することができる。詳細はQiitaでまとめてくださっている方がいるので、そちらを参照していただければと思います。

Raspberry Pi 4 のMACアドレスの範囲が変わったぞ - Qiita

自分のネットワーク環境の場合、 192.168.1.25 が Raspberry Pi4、 192.168.1.26 が Raspberry Pi3 であることがわかる。今回は Raspberry Pi3 をセットアップしていくので、こちらのIPアドレスでSSH接続をしていきます。

SSH接続

  • Host: 上記で調べたIPアドレス
  • User: pi
  • Password: raspberry

これでSSH接続ができます、ここから Raspberry Pi OS の設定を進めていきます。

Raspberry Pi OS の初期設定

パッケージの更新

セキュリティアップデートもあるはずなので、必ず行っておきましょう。

$ sudo apt update && apt upgrade

Vimをインストール

$ sudo apt install vim

ユーザー pi のパスワード変更

本当は先程の用にMACアドレスから Raspberry Pi を利用していることがバレてしまうため、ログイン試行の標的となりやすいデフォルトのユーザー pi を削除して新しいユーザーを作ってしまったほうが良いのだろうけど、面倒なのでそのまま利用する。次の手順でパスワードでのSSH接続を拒否しますが、念の為デフォルトのパスワードは変更しておきます。

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

任意のパスワードを2回を入力して完了。

IPアドレス固定

Raspberry Piが再起動する耽美にIPアドレスが変わってしまう可能性があるので、IPアドレスを固定してしまいます。

$ sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.orig # 一応バックアップ
$ sudo vi /etc/dhcpcd.conf

dhcpcd.conf の末尾に以下のように追記していきます。

+ interface eth0
+ static ip_address=192.168.1.26/24
+ static routers=192.168.1.1
+ static domain_name_servers=192.168.1.1
+ noipv6

interface eth0 は有線か無線かだったり、Raspberry Pi OSのバージョンで変わってくるので ifconfig コマンドでルーターに接続しているネットワークアダプタを確認してください。

static ip_address は設定したいIPアドレスを指定、static routersstatic domain_name_servers はルーターのIPアドレスを指定してください。

保存したら、再起動して指定したIPアドレスで接続できることを確認、出来ていなかったら指定する前のIPアドレスで接続して設定の見直し、それでも接続できなかったら Raspberry Pi をディスプレイとキーボードを直接つないで設定の見直しをしてみてください。

$ sudo reboot

SSHの接続情報を変更する

以下のような変更を加えます

  • ROOTでのSSH接続を拒否
  • パスワードでのログインを拒否(公開鍵を用いた認証に変更)
  • SSHの22からポートを変更する

まずは鍵を生成します、パスフレーズ等問われますが、省略することも可能です。

$ ssh-keygen -t rsa

~/.ssh/ 配下に id_rsaid_rsa.pub の2ファイルが生成されているので、 id_rsa をSSH接続するクライアントPCにSFTPなりで送っておく。

※SFTPでPCに id_rsa ファイルを送る方法の例としてとして、RLoginというターミナルソフトを用いている場合、 ファイル > SFTPファイルの転送 から簡単にファイルをPCにファイルを取り込むことができる。

その後、今回生成した鍵を authorized_keys に追加する。同時に秘密鍵もRaspberry Pi側では不要になるので削除を行う。

$ cd ~/.ssh/
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 authorized_keys
$ rm id_rsa.pub

最後にSSHの設定を上記で列挙したように変更を加える。

$ sudo cp /etc/ssh/sshd_config ~/ #一応バックアップ
$ sudo vi /etc/ssh/sshd_config

変更箇所

# SSHのポート番号を変更する設定 13行目付近にあるはず、Raspberry Piが使用していないポート番号を選ぶ
# 0~65535から選択、既にRaspberry Piが使用していないポートを選択する、49513~65535のプライベートポートの範囲内が良い気がする
Port 65535 

# rootでのログインを許可しない設定 32行目付近にあるはず
PermitRootLogin no 

# 鍵認証を用いたSSH接続を許可する(デフォルトでONになってるかも?) 37行目付近にあるはず
PubkeyAuthentication yes 

# パスワードを用いたSSH接続を拒否する 56行目付近にあるはず
PasswordAuthentication no 

保存して、SSHを再起動します。

$ systemctl restart sshd

上記の操作後、ターミナルは閉じないまま、新しいターミナルソフトを立ち上げて、PCに送った鍵を用いて正常にログインできることを試してからターミナルを任意のタイミングで閉じてください。

※上記を怠ると、SSH接続状態での設定の見直し、修正ができなくなってしまいます。SSH接続ができなくなると、Raspberry Piにディスプレイとキーボードを直接つないで再度設定見直しをするという結構面倒な工程が増えてしまいます。

現在時刻をあわせる

date コマンドを叩くと恐らく時間がずれていると思われるので、時間を合わせてしまいましょう。

$ sudo apt -y install ntp
$ sudo cp /etc/ntp.conf /etc/ntp.conf.orig
$ sudo vi /etc/ntp.conf

現在時刻を取得するサーバーを変更します。

- pool 0.debian.pool.ntp.org iburst
- pool 1.debian.pool.ntp.org iburst
- pool 2.debian.pool.ntp.org iburst
- pool 3.debian.pool.ntp.org iburst
+ pool ntp.nict.jp iburst

ntpサービスを再起動します。

$ sudo  sudo service ntp restart
$ sudo timedatectl set-timezone Asia/Tokyo

date コマンドで現在時刻があっていることを確認します。

まとめ

以上、自分が実際に行った Raspberry Pi の初期設定でした。

ここまで出来たら Raspberry Pi でやりたいことを初めて良いと思います。