以前よりも格段にセットアップしやすくなったのでメモ。macOS母艦、Raspberry Pi Zero W前提。
公式からOSイメージ(RASPBIAN STRETCH LITE)をダウンロードして解凍してSDカードに書き込む。
// SDカードの場所を確認
$ diskutil list
// SDをアンマウント
$ sudo diskutil umount /dev/disk2s1
// OSイメージを書き込み
$ sudo dd bs=1m if=OSイメージのパス of=/dev/disk2
参考: Raspberry PiにRaspbianをインストールする for Mac OSX - Qiita
SSH接続をデフォルトで有効にするためSDカードのルートディレクリにssh
という空のファイルを作成。
$ touch /Volumes/boot/ssh
続けてルートディレクトリにWifi接続情報をwpa_supplicant.conf
に記述する。ルートディレクトリに配置すると、起動時に/etc/wpa_supplicant/wpa_supplicant.conf
を更新する。Raspberry Piの対応している周波数に注意。(Zero Wは2.4GHzのみ)
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid=\"ssid\"
psk=\"password\"
}
参考: Raspberry Piの無線LANをmicroSDで設定する - Qiita
2018/11/02追記:この項目のやり方ではMacのターミナル上の日本語入力・表示がややこしくなるので、ターミナルの起動時のロケール環境変数チェックはそのままでMac側で/etc/ssh/ssh_config/
に記述されているSendEnv LANG LC_*
をコメントアウトするほうがベターだった。(追記終わり)
macOSのターミナルにはローカルで使用している言語の環境変数をSSH接続先のLinuxでも維持してくれるというお節介機能があるので日本語が文字化けする可能性があるのでチェックを外しておく。
Terminal > Preference > Profiles > Advanced > Set locale environment variables on startupのチェックを外す。
参考: MacからSSHしたLinuxで日本語が文字化けする際に確認したいTerminalの設定
microSDカードをRaspberry Piに挿して電源につなぐ。いつのまにかAvahiが標準で使えるっぽいのでMacならIPアドレスを調べなくても簡単に接続できる。初期パスワードはraspberry
。
$ ssh pi@raspberrypi.local
パッケージ管理のアップデートとvimをインストールしておく。
$pi@raspberrypi:~ $ sudo apt-get update
$pi@raspberrypi:~ $ sudo apt-get upgrade
$pi@raspberrypi:~ $ sudo apt-get vim
ひとまずpiとrootのパスワードを変更。
$pi@raspberrypi:~ $ passwd
$pi@raspberrypi:~ $ sudo passwd root
macOSに戻り、SSHの公開鍵をraspberry piに転送する。ssh-copy-idを使うと楽。
$ ssh-copy-id pi@$raspberrypi.local
再びRaspberry piへ。公開鍵認証でログインできるので/etc/ssh/sshd.config
を編集してパスワードログインとrootログインを禁止する。(コメントアウトして書かれているので外して値を変えるなり。)
PasswordAuthentication no
PermitRootLogin no
よりセキュアにするならpiユーザーを削除したり、portを変えるとか適当に。sshd設定を変えたらrestartを忘れずに。
$pi@raspberrypi:~ $ sudo /etc/init.d/sshd restart
Zeroconfによる接続だとホスト名が衝突しそうなのでホスト名をユニークなものに変更しておきます。/etc/hostname
を変更する。
これでssh ユーザー名@設定したホスト名.localで接続できる。
さらに接続を簡略化するならmacOSの~/.ssh/config
に記述する。ここに接続名と引数を書いておけばssh 任意の接続名
だけで接続できるようになるので便利。
Host 任意の接続名
HostName ラズパイのホスト名.local
port 22
User ユーザー名
Protocol 2
IdentityFile ~/.ssh/id_rsa