Raspberry Piにssh公開鍵認証で接続する
数ヶ月前に購入したラズパイで色々遊びたいと思ったので、まずはラズパイにssh公開鍵認証で接続できるようにしたいと思います。
デフォルトではパスワード認証になっているので設定ファイルを編集します。
環境
ローカルPC
- macOS Monterey
- v12.6.3
ラズパイ
- Raspberry Pi 4 Model B
- こいつです↓
ローカルPCでの作業
鍵ペアの作成
まずローカルPCでは公開鍵と秘密鍵のペアを作成します。今回はラズパイ用のディレクトリを作成し、そこに鍵ペアを格納します。
ホームディレクトリ配下に raspberrypi
ディレクトリを作成
mkdir ~/.ssh/raspberrypi
確認
ls ~/.ssh
raspberrypiが表示されていたらOK。 次に、ssh-keygenコマンドで鍵ペアの作成します。
ssh-keygen -t rsa
Enter file in which to save the key
で鍵ペアを格納したい場所を指定します。私は以下のように指定しました。
/Users/[ユーザ名]/.ssh/raspberrypi/id_rsa
鍵ペアが作成されたことを確認します。
ls ~/.ssh/raspberrypi
id_rsa id_rsa.pub
公開鍵をラズパイに送る
scpコマンドを使って公開鍵を送信します。
書式
scp [鍵ファイル] [ラズパイユーザ]@[ラズパイIPアドレス or ホスト名]:[ディレクトリ]
scp ~/.ssh/raspberrypi/id_rsa.pub pi@raspberrypi:~/.ssh
ラズパイでの作業
転送された公開鍵ファイルのファイル名変更
先ほどのSCPコマンドでローカルのPCの公開鍵は ~/.sshディレクトリにid_rsa.pubというファイル名で格納されています。そのファイル名を authorized_keys
に変更します。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 元のid_rsa.pubは削除 rm ~/.ssh/id_rsa.pub
ファイル名を変更しなくても設定ファイルのAuthorizedKeysFile項目でファイル名を指定できます
ファイルの権限編集
管理者のみが閲覧、書き込みできるようにauthorized_keysファイルの権限を編集します。
chmod 600 ~/.ssh/authorized_keys # 権限確認 ls -l ~/.ssh -rw------- 1 [ユーザ] [グループ] 500 1
sshの設定
/etc/ssh/sshd_config
を編集して以下の条件を満たすようにします。
- パスワード認証を禁止する
- rootログインを禁止する
- 公開鍵認証を許可する
# エディタ起動 sudo vi /etc/ssh/sshd_config # /etc/ssh/sshd_config編集 # rootログインの禁止 PermitRootLogin no # 公開鍵認証の許可 PubkeyAuthentication yes # パスワード認証の禁止 PasswordAuthentication no
sshの再起動
systemctl restart ssh
ラズパイに接続
ssh pi@raspberrypi
ローカルPCの~/.ssh/configを設定することでより短く柔軟に接続することができるので設定しておいた方が便利かと思います。
これでラズパイへのssh公開鍵認証による接続が終わりました!これからは、ラズパイで内部向けDNSやWebサーバを構築してみたり、外部から接続できるようにしてみたりと色々遊んでいきたいと思います。🙌