目的
Raspberry Piにssh接続はできるが、パスワード認証だと万が一外につながった時に踏み台にされたり燃やされたりと心配なので鍵認証に変更する
以下は全てMacからパスワード認証でSSH接続をして行った
鍵を生成する
ssh-keygenと打ち、保存場所とパスワードを入れることで生成される
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/pi/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/pi/.ssh/id_rsa. Your public key has been saved in /home/pi/.ssh/id_rsa.pub. The key fingerprint is: ******** +----[SHA256]-----+
鍵を保存する
適当な箇所に鍵を保存する
今回は、.ssh以下にrpiフォルダを作成した
$ mkdir .ssh/rpi $ mv id_rsa.pub .ssh/rpi/ $ mv id_rsa .ssh/rpi/
Macに秘密鍵(id_rsa)をコピーする
Macでもう一つターミナルを開く
scp 欲しいファイル ダウンロード先
$ scp pi@IPアドレス:~/.ssh/id_rsa ~/Desktop
SSH設定を変更する
ここで失敗するとSSH接続ができなくなるが、そうなった場合はRaspberry pi側本体側で操作して修正をする
sudo vim /etc/ssh/sshd_config
PermitRootLogin no PubkeyAuthentication yes RSAAuthentication yes AuthorizedKeysFile %h/.ssh/rpi/id_rsa.pub PasswordAuthentication no
上記を変更・追加をする
PermitRootLogin: ルートログインの禁止
PubkeyAuthentication: 公開鍵認証を許可
RSAAuthentication: RSA認証を許可
AuthorizedKeysFile: 公開鍵の保存場所指定
PasswordAuthentication: パスワードログインの禁止
余裕があればPasswordAuthenticationはyesのまま一回秘密鍵でのログインを実施した方が良い
設定に失敗していても、パスワードでのログインができるので
設定の有効化
$ sudo /etc/init.d/ssh restart [ ok ] Restarting ssh (via systemctl): ssh.service
問題がなければOKと出る
接続元での確認
macのターミナルを開き、秘密鍵を指定してログインをする。
秘密鍵生成時のパスワードを聞かれるので入力すると接続される
$ ssh -i ~/Desktop/id_rsa -p 22 pi@RpiのIPアドレス Enter passphrase for key '/Users/***/Desktop/id_rsa': Linux raspberrypi 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Jun 12 11:41:31 2020 from 192.168.1.2 pi@raspberrypi:~ $
また、パスワード認証形式で弾かれることも確かめておく
ssh pi@RPiのIPアドレス pi@****: Permission denied (publickey).
macのSSH configファイルに設定を書いておく
デスクトップにあるRaspberry pi向けsshの秘密鍵をmacの何処かに保存する(以下では~/.ssh/rpi/)
下記のようにconfigファイルに設定を書く
$ mv ~/Desktop/id_rsa ~/.ssh/rpi $ cat ~/.ssh/config Host rpi HostName 192.168.1.29 IdentityFile ~/.ssh/rpi/id_rsa User pi $ ssh-add ~/.ssh/rpi/id_rsa $ ssh rpi Linux raspberrypi 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Jun 12 12:52:06 2020 from 192.168.1.2 pi@raspberrypi:~ $
最後に
ポートスキャン対策でPort番号もデフォルトの22から他にした方が良いとされる。
しかし今回は、ローカルネットワークでの使用のみでルータで22番へのアクセスは禁止しているので変更はしない