概要
マウス、キーボードなしでMacOSからラズパイにssh接続する環境構築を目指します。
【動作環境】
ホストOS/macOS
端末/Raspberry Pi Zero WH
OS/Raspbian Buster Lite
ホスト側
-
ホスト側にSDカードを差し込みます。
-
SDカードに書き込むOSをダウンロード
今回DLするのはraspbianのRaspbian Buster Lite イメージは以下のリンクからDL
https://www.raspberrypi.org/downloads/ -
イメージの書き込み
$diskutil list
$diskutil unmountDisk /dev/disk2
$sudo dd bs=1m if=2019-09-26-raspbian-buster-lite.img of=/dev/rdisk2
unmountDiskする場所は必ず$diskutil listで表示されたラズパイの箇所を指定してください。
if=にはイメージファイルのパスを設定。
画面に何も表示されませんが以下で進行状況が確認できます。
ctr + t
4.wifi接続設定
/Volumes/bootのディレクトリ配下に空のsshファイルを作成。
$cd /Volumes/boot
$touch ./ssh
wifiの接続設定
$vi ./wpa_supplicant.conf
wpa_supplicant.confの中身
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="XXXXXXXX"
psk="XXXXXXXXX"
}
wpa_supplicant.confファイルには使用しているwifiルーターの設定を書き込みます。
ssidにはwifiのSSID名、
pskにはwifiのパスワードを設定します。
5.ラズパイにSSHログイン
$ssh pi@raspberrypi.local
password raspberry
ホスト名はraspberrypi.localで接続できます。
yesを押した後にはパスワードを訊かれますが初期パスワードはraspberryになります。
エラーが出る場合は、以前にラズパイにssh接続してフィンガープリントが残っているので削除しましょう。
$ssh-keygen -R raspberrypi.local
ラズパイ側
いよいよラズパイ側にやってきました。
ここからはラズパイ側でいろいろと設定していきましょう。
主に最低限のセキュリティを設定していきます。
1.ユーザーの作成
ユーザー名はyukarinとします。
$sudo adduser yukarin
password XXXXXX
yukarinをpiと同等のグループに追加します。
$groups pi
pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio
上のグループをyukarinに付与します。
sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio yukarin
確認
$groups yukarin
pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio
2.公開鍵と秘密鍵の設定
【ホスト側】
ホスト側で公開鍵と秘密鍵の作成をします。
$ssh-keygen -t id_rsa_raspberry
Enterは3回押しても構いません。id_rsa_raspberryの箇所は好きな名前を設定。
$ls -la ~/.ssh
1843 10 12 23:34 id_rsa_raspberry
413 10 12 23:34 id_rsa_raspberry.pub
id_rsa_raspberryが秘密鍵、
id_rsa_raspberry.pubが公開鍵となります。
id_rsa_raspberry.pubの内容を控え、ラズパイ側に登録していきます。
【ラズパイ側の設定】
ラズパイ側に再びssh接続
$ssh yukarin@raspberrypi.local
mkdir ~/.ssh
vi ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ホームディレクトリに.sshというファルダを作成し、
authorized_keysファイルに先ほどホスト側で控えたキーをコピペ。
~/.sshは700
authorized_keys600のパーミッションに設定します。
ラズパイ側に公開鍵を設定できたので、ホスト側で鍵を使って接続できるか確認します。
この確認は絶対に行うようにしてください。
$exit;
ホスト側に戻ってきました。秘密鍵を使ってssh接続してみます。
【ホスト側】
$ssh -i ~/.ssh/id_rsa_raspberry -p 22 yukarin@raspberrypi.local
-iの引数に秘密鍵のパス、sshの-pの引数は22
yukarin@raspberrypi:~ $
秘密鍵を使ってsshできましたね!!
3.sshd_configの設定
セキュリティを高めるため、sshd_configに設定を書き込んでいきます。
まずはバックアップをとります。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.back
$sudo vi /etc/ssh/sshd_config
sshd_configに追記
PermitRootLogin no ## rootのログインを禁止
PasswordAuthentication no ## password指定でのログインを禁止
PermitEmptyPasswords no ## passwordなしでのログインを禁止
PubkeyAuthentication yes ## 公開鍵でのログイン
注意して欲しいのが
PasswordAuthentication noの設定。
鍵を準備するまえにこの設定を行うと、ssh接続で入れなくなってしまうので
必ず鍵認証が確認できてからnoにしてください。前述で鍵認証できるか確認したのはそのためです。
sshd_configの設定を反映させるため再起動
$sudo /etc/init.d/ssh restart
最後にラズパイの最低限の設定をしていきます。
【パッケージ管理の更新】
$sudo apt-get update -y
$sudo apt-get upgrade -y
$sudo apt-get dist-upgrade -y
【タイムゾーン】
$sudo timedatectl set-timezone Asia/Tokyo
$exit;
【ロケールの変更】
sudo raspi-config nonint do_change_locale ja_JP.UTF-8
$exit;