143
144

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry Piの無線LANをmicroSDで設定する

Last updated at Posted at 2017-07-29

Raspberry Pi 3 Model BやPi Zero Wには無線LAN(WiFi)が内蔵されましたが、何らかの方法でSSIDとパスフレーズを設定しないと無線での通信はできません。
以前に書いたRaspberry Pi Zero Wの無線LANをディスプレイやキーボードなしで設定する(有線LAN利用)という記事ではRaspberry Pi Zero WにUSBで一時的に有線LANポートを設けるするやり方で、ディスプレイやキーボードを使わずにSSIDとパスフレーズを設定する方法を紹介しましたが、こちらの記事のコメントでmicroSDにあらかじめファイルを作成しておくことで、無線LANの設定ができるというご指摘をいただき、その方法を検証してみましたので紹介したいと思います。

(2017/10/01追記)
ブラウザ上でSSIDとパスフレーズを入力するだけで簡単にwpa_supplicant.confを作成できるツールを作成しました。
Raspberry Piの無線LANをmicroSDで簡単に設定するためのツールを作った

動作環境

  • Raspberry Pi Zero W
    • Raspbian Jessie Lite 2017-07-05
      • イメージをMicroSDに書き込んだ後、MicroSDのルートディレクトリにsshという名前で空のファイルを作成
    • Raspbian Stretch Lite 2017-08-16
      • イメージをMicroSDに書き込んだ後、MicroSDのルートディレクトリにsshという名前で空のファイルを作成

設定

SSH接続を利用するにはイメージをmicroSDに書き込んだ後、microSDのルートディレクトリにsshという名前で空のファイルを作成しておく必要があります。
スクリーンショット 2017-07-29 10.42.47.png
macOSであれば、touchコマンドを用いてtouch /Volumes/boot/sshといった要領で空のファイルsshを作成できます。

また、Raspberry Piの内蔵WiFiでは2.4GHz帯のみ利用できます。ルーターのデフォルトの設定では、2.4GHz帯のSSIDにはgやGといった文字が含まれていることが多いです。

設定ファイルの作成

wpa_supplicant.confというファイルをmicroSDのルートディレクトリに作成していきます。
このファイルをmicroSDのルートディレクトリに作成すると、Raspberry Pi起動時に自動でRaspbian上の/etc/wpa_supplicant/wpa_supplicant.confを上書きするようになっています(microSDのルートディレクトリに作成したファイルは削除されます)。

平文のWPAパスフレーズを保存する場合

SSIDがtest, パスフレーズがabcd1234の場合、以下のようなファイルをmicroSDのルートディレクトリに作成します(macOSの場合、/Volumes/boot/wpa_supplicant.conf)

wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
	ssid="test"
	psk="abcd1234"
}

パスフレーズが設定されていない場合は、Life with IT - Raspberry Pi 3でパスフレーズなしのWi-Fiアクセスポイントに接続する設定(Raspbian Jessie Lite)を見て設定してください(自己責任でお願いします)

256bitのハッシュ化されたキーを保存する場合

平文のWPAパスフレーズをmicroSD上に保存することに抵抗がある方は、パスフレーズの代わりに、SSIDとパスフレーズの組をハッシュ化した256bitのキーを保存することもできます。
Raspbian上でwpa_passphraseコマンドを実行することで、256bitのキーを取得することもできますが、今回はJavaScriptで256bitのキーを取得する方法を2通り紹介します。

ブラウザで256bitのキーを取得する場合

WPA key calculation: From passphrase to hexのページにアクセスし、Network SSIDとWPA passphraseを入力し、Calculateボタンをクリックします。

スクリーンショット 2017-07-29 10.42.47.png

899f089ca767f38265424c83ce83193ab145571c0a71e1aca4487d615c411f34のような256bitのキーが表示されるので、これを元に以下のようなファイルをmicroSDのルートディレクトリに作成します(macOSの場合、/Volumes/boot/wpa_supplicant.conf)

wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
	ssid="test"
	psk=899f089ca767f38265424c83ce83193ab145571c0a71e1aca4487d615c411f34
}

Node.jsで256bitのキーを取得する場合

Node.js標準モジュールのCryptoを利用して、256bitのキーを取得することもできます。

SSIDがtest, パスフレーズがabcd1234の場合、以下のスクリプトを実行することで256bitのキーを取得できます。

const crypto = require('crypto');
const key = crypto.pbkdf2Sync('abcd1234', 'test', 4096, 32, 'sha1');
console.log(key.toString('hex'));

ターミナル上で実行できる形式はこちら

node -e "console.log(require('crypto').pbkdf2Sync('abcd1234','test',4096,32,'sha1').toString('hex'))"
スクリーンショット 2017-08-01 3.41.11.png

ブラウザで256bitのキーを取得する場合と同様に、wpa_supplicant.confをmicroSDのルートディレクトリに作成してください。

wpa_passphraseコマンドで計算したキーの値と比較

WPA key calculation: From passphrase to hexのページで計算したキーの値、Node.jsで計算したキーの値共に、wpa_passphraseコマンドで計算したキーの値と同じものになっていました。
スクリーンショット 2017-07-29 10.42.07.png

SSH接続

Windowsの場合は、Raspberry PiとMac or Windows PCを有線で直接繋いでさくっとSSH接続するなどを参照してください。

macOSでZeroconf(Bonjour)を利用する場合は、以下の方法でSSH接続をすることができます。

Raspberry PiにRaspbianが入っているMicroSDを入れて、電源を入れます。OSが起動するまで1分ほど待ちます。

macOS
$ ssh pi@raspberrypi.local

パスワードを聞かれるので、 raspberryと入力してreturnキーを押します。

macOS
pi@raspberrypi.local's password: 

繋がるはずです。

Raspbian
pi@raspberrypi:~ $

うまく繋がらない場合は、以前接続した際の設定が残っている可能性があるので、known_hostsの設定削除を行ってください。

macOS
$ ssh-keygen -R raspberrypi.local
143
144
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
143
144

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?