どうも、まるです。
今回は、TeraTermなどのSSH接続によるRaspberry Pi遠隔操作のセキュリティレベルを上げるために、パスワード方式から秘密鍵と公開鍵を使った、「RSA暗号(SHA-256)」といった認証方式に接続方法を変更、制限していきます。
RSA暗号とは・・・素因数分解の難しさを利用した暗号アルゴリズム。
SHA-256とは・・・入力されたデータをもとにして作った適当な値を返してくれる、ハッシュ関数の一つ。
です。すごいざっくり。(詳しくはリンク先参照)
では早速、手順をお見せしていきましょう。
以下のコマンドで秘密鍵と公開鍵を生成します。
ssh-keygen -t rsa
Enter file in which to save the key (/home/oyabin/.ssh/id_rsa):
と表示されるので、一度Enter
。ファイルの保存場所を聞かれていますが、
既定位置で今回は大丈夫です。変えたい場合はお好みで入力してください。
次に、Enter passphrase (empty for no passphrase):
ときかれます。
これは、パスフレーズを設定した場合にそのフレーズを知らない人を弾いてくれるようになる機能です。よりセキュリティレベルが強固になるので設定しておきましょう。
(メモをしておくなど、忘れないようにしましょう!)
このように表示されたらRSA暗号キーの生成に成功です。
秘密鍵(id_rsa)と公開鍵(id_rsa.pub)の2つのファイルが、/home/newpiuser/.ssh
に作成されています。
次に、この生成された公開鍵(Public Key)を既定の位置に置きます。
初期設定だと~/.ssh/authorized_keys
ディレクトリに置くことでうまく機能しますが、
権限設定がまだ出来ていないので同時にそちらも行います。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys rm id_rsa.pub chmod 600 ~/.ssh/authorized_keys
一行目でコピーし、二行目で元ファイルの削除、三行目で権限の付与を行っています。
ここまで行うと次はTeraterm を起動し、ユーザーとしてSSH接続を行います。
(既にlog inしているならそのままでOK)
「ファイル>SSH SCP…」より、先ほど生成した秘密鍵を遠隔操作元のPCにダウンロードします。下段のFrom:に該当ファイルのパス、To:に保存先のディレクトリを選択します、今回のファイルパスは、.ssh/id_rsa
です。
Receiveを押すと、秘密鍵ファイルが正常にダウンロードされます。
一度TeraTermの接続を解除し、再接続を行います。
この時に、今までは「ブレインパスワードを使う」を選択していましたが、
「RSA/DSA/ECDSA/ED25519鍵を使う」に変更します。
そして、先ほどの保存先のパスを読み込んでダウンロードしたid_rsa(秘密鍵)ファイルを選択します。
最後に、パスフレーズに先ほど設定したPass Phraseを入力します。
※ここで以前のユーザーPWを入力してしまうと、以下のようなエラーになり接続できないので注意してください。
正しいパスフレーズを入力すると、、
はい、無事接続できるようになりました。
最後に、今までのブレインパスワードによる認証方法をRaspberry Pi側で無効化しておきましょう。
そうすることで、総当たり攻撃(ブルートフォースアタック)のようなサイバー攻撃から身を守ることが出来ます。
sudo nano /etc/ssh/sshd_config
と叩き、
#PasswordAuthentication yes
というコメントアウトされている行を探し、その下に
PasswordAuthentication no
と追記します。
最後にラズベリーパイを再起動することで、設定が適用されます。
これで、RSA暗号方式によるSSH認証の設定が完了しました!
お疲れ様です٩(๑❛ᴗ❛๑)