モニターなし(ヘッドレス)で初回起動から無線でラズパイにSSH接続する - Naohiro2g/Raspberry-Pi-Projects GitHub Wiki
デフォルトで無効化されているSSHを有効化、WiFi接続情報をあらかじめマイクロSDカードに設定しておくと、初回起動から快適接続。
マイクロSDカードの準備
- マイクロSDカードをPC/Mac/Linuxにマウント。
- SSH接続有効化: マイクロSDカードの/bootにssh(あるいはssh.txt)ファイルを作る。中身は空っぽ。Macなら、
touch /Volumes/boot/ssh
で。 - WiFi接続情報設定: wpa_supplicant.confを作成して、マイクロSDカードのルートに置く。中身は後述。
- ラズパイにマイクロSDカードを戻して起動!
wpa_supplicant.confの中身:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="SSID001"
psk="pass0001"
}
network={ } のブロックは、ラズパイでwpa_passphraseコマンドを使うとパスフレーズを暗号化できる。平文の、暗号化されていないpsk行は削除しておく。
$ wpa_passphrase SSID001 pass0001
network={
ssid="SSID001"
#psk="pass0001"
psk=b53b3997a56751fa63529e7a4fa624bc999f4516aa9192fb1e4161de727c8f40
}
ラズパイを持ち歩いて使う、スマホのテザリングなどでも使う、など、SSIDが複数ある場合、それぞれのnetworkブロックを列記しておくと、ラズパイ起動時に自動的に接続される。電波強度順、上から順、などで自動接続を試みるようだが、priority=10, priority=20などと書いておくと数字の大きいSSIDが優先される。ステルスSSIDの場合は、scan_ssid=1と記述。disabled=1は自動接続をしない設定だが、動作は要検証。メニューバーから選択すると切り替えて接続できたが、後述のwpa_cliコマンドでは接続できなかった。
macOSのように接続が無くなったときの自動接続は、できない。監視サービスを走らせておけば可能。ヘッドレスでの作業時は自動接続があると助かる場面がある。
ネットワークの切り替え方法
# まず、設定済のネットワークのリスト、現在の接続先を表示。
$ wpa_cli -i wlan0 list_networks
network id / ssid / bssid / flags
0 SSID_1 any [CURRENT]
1 SSID_2 any
2 iPhone any [DISABLED]
# 接続を切り替える
$ wpa_cli -i wlan0 select_network 2
OK