tnkzw.sake

HomeSeriesTagsAbout

2024年にRaspberryPiをセットアップする

Series
ラズパイNAS構築

引き出しに眠っていた Raspberry Pi 3 Model B がありました。
同時に、使われていない HDD が余っています。

3 連休に出会ってしまった奇跡の余り物で NAS を構築してみたい。
その前段のラズパイセットアップが昔とだいぶ変わっていたので、手順をまとめます。

OS をインストールする

ラズパイといえば、公式サイトから Raspbian イメージを落としてきて、microSD に焼いて...

そんなイメージで止まっていましたが、今はRaspberry Pi Imagerなるツールが公式から出ているようです。
https://www.raspberrypi.com/software/https://www.raspberrypi.com/software/

これは microSD のフォーマットから OS の焼き込みまで、すべてを行ってくれるアプリケーションです。
わざわざでかいファイルを個人で落としてきて管理する必要がなくなります。便利です。

Homebrew で配布されていたので、こちらを利用しました。

brew install --cask raspberry-pi-imager

というか、OS の名前も Raspbian から Raspberry Pi OS に変わってるんですね...いつの間に

昔のファイルがあれば退避する

ラズパイいじいじして遊んでいた頃のファイルが残っていました。
電気つけようとしてたり、CO2 濃度測って GoogleSpreadSheet に送ったり。

その辺のスクリプト無くしたなーと思ってたので、見つけて嬉しいですね。
OS を書き換える前に Mac に退避します。

次のコマンドを使いました。

rsync -av -e ssh [user]@[host]:./src/ path/to/target

具体イメージは次のとおり。実行は Mac からです。

rsync -av -e ssh [email protected]:/home/pi/co2_checker.py Download

ラズパイのモデル名を知る

昔買ったので、自分のマシンのモデルを忘れていました。
幸い昔セットアップした状態で動いたので、ラズパイのコンソールで次のコマンドを実行します。

more /proc/device-tree/model

OS を選ぶ

OS は主に 3 種類あるようです。

  • Raspberry Pi OS
    • GUI 付きの最小構成っぽい。デフォルトはこれで良いと思う
    • ただし、今回の NAS 構築で利用を予定しているOpenMediaVaultの都合上、Lite を選択する
  • Raspberry Pi OS Lite
    • CUI のみの軽量版。
  • Raspberry Pi OS Full
    • GUI 版にプログラミングの学習環境やらなんやら入ってる版。

厳密にはもっとありましたけど、大雑把にこの 3 つが違うのは知っておくと良いでしょう。

セキュリティ対応

Qiita にちょうどよくまとまっている記事をみつけたので、こちらを参考に設定します。

ラズパイでやらなければいけない4つのセキュリティ対策!

実は先ほどの OS 書き込みツールの設定でpiユーザーを最初から作らないような設定が可能でしたので、序盤のユーザー云々はなしで良さそうでした。

公開鍵方式でのログインに限定する

ラズパイで SSH をオンにするとパスワードでログインする方式がデフォルトで動きます。
当然ですが、これはホスト名、ユーザー名、パスワードの文字列を知るだけでアクセス可能になることを意味します。

これを防ぐために公開鍵方式の認証だけを有効にします。

キーの作成

RSA のキーペアを作成します。Mac のターミナルで以下を実行。

ssh-keygen -t rsa

キーペアの名前は適当でいいです。パスフレーズはある方が高セキュリティです。キーの所持+文字列の 2 段構えになるからですね。

公開鍵の登録

先ほどの昔のファイル退避に使ったコマンドを逆転して、公開鍵をラズパイに送りましょう。

SSH アクセスで用いるラズパイ上のユーザーホームに.sshディレクトリを作成します。

mkdir .ssh

ここではpiユーザーだったとして、Mac から次のコマンドで公開鍵を送信します。

rsync -av -e ssh ~/.ssh/id_rsa.pub [email protected]:/home/pi/.ssh

ラズパイはアクセスのリクエストが来ると、~/.ssh/authorized_keysから対応する公開鍵を探すようです。
したがって、ラズパイのターミナルを操作し、送信された公開鍵を書き込みます。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

書き込めたらid_rsa.pubは削除して大丈夫です。

rm ~/.ssh/id_rsa.pub

このディレクトリはラズパイ上の他のユーザーにアクセスや編集されないようにパーミッションを変更しておきましょう。

# .sshは自分だけが書き込み、読み取り、実行可能
chmod 700 ~/.ssh
# authorized_keysは読み取りと書き込みで良いので600
chmod 600 ~/.ssh/authorized_keys

ラズパイのコンフィグ書き換え

/etc/ssh/sshd_configを書き換えて、次の変更を行います。

  • 公開鍵方式によるログインを有効化する
  • パスワードのよる SSH ログインを禁止する
  • ポートを変更する
sudo vi /etc/ssh/sshd_config

#がついているものはコメント状態になっています。デフォルト値が書いてあるようですね。
ファイルの上部からの方が見やすいので、順に紹介します。
まずは Port を変更しましょう。値は他と被らなければなんでもいいです。

/etc/ssh/sshd_config
- #Port 22
+ Port XXXXX

やらなくても一緒ですが、authorized_keysを読みに行くというのを明示しましょう。

/etc/ssh/sshd_config
- #AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
+ AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

最後にパスワードのよるログインは無効にしましょう。公開鍵方式のみを許容します。

/etc/ssh/sshd_config
- #PasswordAuthentication yes
+ PasswordAuthentication no

以上が終わったら保存して、ssh サービスを再起度します。

sudo /etc/init.d/ssh restart

以上で公開鍵方式のみでアクセスを許可するようになりました。

(おまけ)Mac 側の対応

Mac からラズパイにアクセスする際は、通常以下のようなコマンドを入力します。

ssh -p XXXXX -i ~/.ssh/id_rsa [email protected]

これは先ほど指定したポート番号と作成した秘密鍵を指定して、アクセスを行うコマンドですが、毎回打つのは鬱陶しいです。
ということで、簡単にアクセスできるように Mac 側の~/.ssh/configファイルを作成して次のような記述を追加します。

~/.ssh/config
Host paspi
  HostName raspberrypi.local
  User pi
  port XXXXX
  IdentityFile ~/.ssh/id_rsa

これを記述しておくと、次のコマンドで SSH 接続可能になります。

ssh raspi

まとめ

ラズパイのハードの進化は X 等々で見かけていましたが、ソフト周りも以前より充実していて驚きました。
SSH 接続周りはラズパイとりあえず触ってみたい!という気持ちの人にはとりあえずのお作法に見えたりしますよね(過去の自分がそうでした)

ちなみに OS の選択をミスって入れ直すなどした際に、同じホスト名にすると SSH 接続のエラーが出ることがあります。
前回接続時にラズパイ側から発行された公開鍵を保存していたものと、OS 入れ直し後のキーの値が違うからだそうです。

Mac 側では.ssh/known_hosts内にこの情報を記録しています。エディタで編集してもいいですが、次のコマンドでもリセットできます。(当然ですが、ホスト名の部分はご自身が接続に利用したものにしてください)

ssh-keygen -R raspberrypi.local

これは次の Qiita 記事を参照しました。ありがとうございます。
https://qiita.com/hnw/items/0eeee62ce403b8d6a23chttps://qiita.com/hnw/items/0eeee62ce403b8d6a23c