背景
Rasiberry Pi OSを入れ直す度に鍵を利用したsshのログインの設定に戸惑っているので、備忘録を兼ねて記事に手順を残します。主にRaspberry Piで利用のために記事を書きましたが、鍵の作成や設定でRaspberry Piに依存するプログラムは利用していないため、一般的なサーバーへのログインにもこの記事の内容は利用可能です。
使ったもの
- SDカード
- Raspberry Pi Zero
Raspberry Pi OSが起動するRaspberry Piなら、どれでもこの記事の内容を適用できます。 - Raspberry Pi OS
2021.05.07 公開版を利用しました。
有線接続またはWiFi接続で通信網に接続して、パスワードでsshできる状態にしてください。
ssh接続可能なSDカードを作る手順は、以前書いた記事が参考になると思います。
WiFi経由でssh接続可能なRaspberry Pi OSのSDカードを外付けモニタを使わず作る - SSHでログインする元のPC
Ubuntu20.04をインストールしたPCを利用しました。
鍵を設定
まだ無ければPCでssh鍵のペア(公開鍵と秘密鍵)を作成
PCで下記のコマンドを実行して、公開鍵が存在するならそれを利用します。ここで紹介するコマンドはMac, Windows, LinuxいずれのOSでも実行可能だと思います。
cat ~/.ssh/id_rsa.pub
上記のコマンドでファイルが見つからない旨のエラーが発生するなら、下記のコマンドで鍵を作ります。
ssh-keygen
上記コマンド実行時にパスフレーズを求められますが、自分は空欄で作成することが多いです。
下記のコマンドで確認できる公開鍵をRaspberry Piに登録します。
cat ~/.ssh/id_rsa.pub
Raspberry Piのログインを許可するファイルにPCで作った公開鍵を追加
Raspberry Piの~/.ssh/authorized_keysにPCのid_rsa.pubを追加します。
下記のコマンドでauthorized_keysの存在を確認します。
無ければ下記のコマンドで作成します。
authorized_keysは自分だけが読み書き可能な権限への変更が必要なので、その変更も実施します。
authorized_keysができたら、それにPCのid_rsa.pubの内容を追記します。
下記のコマンドは、echoを利用した追記の例です。(viやnanoでauthorized_keysを開いて追記するのでも良いです。)
echoコマンドの実行例
authorized_keysに期待通りに鍵を追加できれば、次回のsshログインからパスワード無しでログインできるはずです。
/etc/ssh/sshd_configの
上記の変更は下記のsedコマンドで実施できます。
上記の変更後にsshかOSを再起動すると設定が反映されてパスワードを利用したログインができなくなります。
How to Setup Raspberry Pi SSH Keys for Authentication
How do I restart sshd on raspbian?
下記のコマンドでauthorized_keysの存在を確認します。
ls -la ~/.ssh/authorized_keys
無ければ下記のコマンドで作成します。
authorized_keysは自分だけが読み書き可能な権限への変更が必要なので、その変更も実施します。
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
authorized_keysができたら、それにPCのid_rsa.pubの内容を追記します。
下記のコマンドは、echoを利用した追記の例です。(viやnanoでauthorized_keysを開いて追記するのでも良いです。)
echo "PCのid_rsa.pubの内容" >> ~/.ssh/authorized_keys
echoコマンドの実行例
authorized_keysに期待通りに鍵を追加できれば、次回のsshログインからパスワード無しでログインできるはずです。
パスワードを利用したログインを無効化
公開鍵の利用によりパスワード無しでログインできるようになったら、パスワードを利用したログインを無効化しておくとセキュリティを強化できて良いです。/etc/ssh/sshd_configの
#PasswordAuthentication yesを
PasswordAuthentication noに書き換えると、パスワードではログインできなくなります。
上記の変更は下記のsedコマンドで実施できます。
sudo sed -i -e "s/#PasswordAuthentication yes/PasswordAuthentication no/g" /etc/ssh/sshd_config
上記の変更後にsshかOSを再起動すると設定が反映されてパスワードを利用したログインができなくなります。
sudo service ssh restart
まとめ
公開鍵を利用してsshログイン可能にし、パスワードを利用したログインを無効化することでセキュリティを強化できました。参考
Raspberry Piに公開鍵認証を使ってssh接続するHow to Setup Raspberry Pi SSH Keys for Authentication
How do I restart sshd on raspbian?
0 件のコメント :
コメントを投稿