2021年9月20日月曜日

鍵を利用してパスワード無しで(Raspberry Piに)sshログイン


背景

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の存在を確認します。
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 件のコメント :