2022年4月ごろからRaspberry Pi OSをキーボード,ディスプレイなしでセットアップする方法が変わったっぽい.日本語だと古い情報しかなかったので書いた記事.
具体的には起動時に自動的にユーザを作成し,SSHサーバを立ち上げる方法を解説する.このうち自動的にユーザを作成する部分が変わった.
ユーザ作成の公式情報元は以下.
前提
- Raspberry Pi OS
- Raspberry Pi Imagerを使わない
- 使う場合はGUIで設定できるらしいので解説するまでもないと思う
- 有線LANで接続する
- (ほかにLinuxマシンがある)
- なくてもできるのだが,ない場合はパスワードハッシュの生成が面倒なので,素直にRaspberry Pi Imagerを使った方が良いと思われる
手順
イメージファイルダウンロード
以下のリンクからインストールしたいバージョンのOSイメージをダウンロードする.
ダウンロードしたファイルは圧縮されているので解凍しておく.Windowsなら7-Zipで解凍できた.
イメージファイル書き込み
解凍したイメージファイルをSDカードに書き込む.Windowsなら例えばWin32 Disk Imagerが有名.
起動時に自動でユーザを作成する
書き込みが終わるとSDカードの中身が見えるようになる.二つのパーティションが存在するが,その内FAT32の方のルートディレクトリを開く.というか,もう一方はext4でWindowsやMac OSでは非対応なので開こうと思っても開けない.中身は以下のような感じ.
このディレクトリ直下にuserconf.txt
という名前のテキストファイルを作成する.Windowsなら右クリックから「新規作成」→「テキスト ドキュメント」と選び,ファイル名はuserconf.txt
にする.
作成したファイルをダブルクリックしてメモ帳で開き,中身をusername:encrypted-password
という一行にして保存する.ただし,username
の部分を作成したい任意のユーザ名,encrypted-password
の部分を以下で説明するハッシュ化したパスワードにする.
ハッシュ化したパスワードは別のLinuxマシンがあるならコンソールから
$ echo 'mypassword' | openssl passwd -6 -stdin
で出力できる.ただしmypassword
の部分を任意のパスワードにする.
別のLinuxマシンがないなら例えばこのサイトの「SHA512-CRYPT」の出力欄から先頭「{SHA512-CRYPT}」の文字を削除した部分として得ることもできる.が,他人にパスワードを知らせることになるので推奨はできない.ローカルで生成することも当然できるのだが,わりと面倒になるのでここでは解説しない./etc/shadow
のパスワードハッシュの仕組みについて調べればいけるが,それならRaspberry Pi Imagerを使った方がいい気がする.
例えばユーザ名をtest
,パスワードをpassword
にするならuserconf.txt
の中身の一例は
test:$6$tgP0Jx6tNRffDjk3$sv/3zx64GZ0tjwuBtPzyuMkD9XpVStNY7ivO4rWKFRa18WXxIAMrc/9voF16qCw.BuJ3RvuTUchHnVnx8zHPh1
となる.ただし,ハッシュ化したパスワードの部分は同じパスワードを使っても同じ文字列になるとは限らないので一致はしない.
起動時にSSHサーバを有効にする
userconf.txt
を作成したのと同じディレクトリにssh
というファイル名の空のファイルを作成する.Windowsなら同じように右クリックから「新規作成」→「テキスト ドキュメント」と選び,ファイル名をssh
(末尾の.txt
は削除)とする.この時拡張子が変わったと警告がでるが,「はい」を選んで続行する.ssh
ファイルの方の中身は空で良いので以上.
起動・SSH接続
SDカードをRaspberry Piに挿してLANケーブルをつなぎ,電源を入れる.作成したファイルに従って初期設定が行われるので数分待った後,別のマシンからホスト名raspberrypi.local
でSSH接続する.ユーザ名とパスワードは設定したものを用いる.
raspberrypi.local
で接続できない場合もある(私はできなかった.).その場合はIPアドレスを自分で調べる必要がある.私はDHCPサーバのリース記録から調べた.
あとがき
もともとはユーザ名pi
,パスワードraspberry
の固定で初期化されていたのが,必ず個々に決めさせるようになった形だ.初期値をそのまま使ってしまう人が一定数いて,セキュリティ的な問題が多かったから変えたようだ.一部の国では法律でインターネットに接続する機器にデフォルトの認証情報を持たせるのを禁止しているところもあるらしい(最上部の公式情報のリンクより).