ラズパイへのログインを公開鍵認証方式にして、よりセキュアなログイン方法にした話。

セキュリティ
この記事は約10分で読めます。

これからラズパイを使って色々なIoT関連記事を書いていこうと思っているのですが
ラズパイへのログイン方法を、セキュアなログイン方法である公開鍵認証方式に変えておくことにしました。
本記事の設定完了後には、秘密鍵を持たないWindowsからパスワードログインできないことと
秘密鍵を持つMacから公開鍵認証によるログインができることを確認することが目標です。

Windowsからパスワードログインできることを確認する

以下の手順はWindows上での操作となります。

まずはWindowsから、パスワードを使ってラズパイにログインできることを確認していきます。
以下のようにコマンド入力し、sshでラズパイにログインしてみます。

  1. sshでラズパイにログイン (環境によってIPアドレスは適宜変更してください)
  2. 初めてログインする場合は、本当にログインするか尋ねられるので「yes」を入力
  3. パスワードを入力 (入力しても文字列は表示されません)
>ssh pi@192.168.10.34
>yes
>

以下のように表示されたらログイン出来ていることを
確認できたかと思います。

Last login: Fri May 6 17:38:21 2022
pi@raspberrypi:~$

Macで公開鍵/秘密鍵のペアを作成する

以下の手順はMac上での操作となります。

続いてMacで公開鍵/秘密鍵のペアを作成します。
まずターミナルを起動し、以下のようにコマンド入力します。

  1. 公開鍵/秘密鍵のペアの生成
  2. 鍵の保存場所の入力
  3. パスフレーズの入力
  4. パスフレーズの入力 (2回目)

※2. 何も入力せずにエンターを押下し、「/Users/ユーザ名/.ssh/id_rsa」へ保存してOKです
※3. パスフレーズは設定してしまうとログインする度にパスワード入力を求められるようになり、セキュリティの強度は増しますが多少面倒なため、パスフレーズを設定せずにエンターを押下してもOKです

% ssh-keygen -t rsa
Enter file in which to save the key (/Users/ユーザ名/.ssh/id_rsa):   
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

鍵の生成に成功すると以下のような結果が出力されます。

Your identification has been saved in /Users/ユーザ名/.ssh/id_rsa
Your public key has been saved in /Users/ユーザ名/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:qlosUuzIPNmPIgwuqeS+8Fr2abhH6jqYWSXcdP5Z27Y ユーザ名@MacBook-Pro.local
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|    . .          |
|   . =           |
|  . o o   .      |
|   o.  .So o     |
|o.++.. .o . o    |
|BX*+* .    . .   |
|%Bo*+=      E    |
|OXO++.           |
+----[SHA256]-----+

これで、「/Users/ユーザ名/.ssh/id_rsa.pub」というディレクトリに以下の2種類の鍵が生成されたことになります。

  • id_rsa (秘密鍵)
  • id_rsa.pub (公開鍵)

ラズパイに公開鍵を配置し、ログイン設定を公開鍵認証方式に変更する

前の章で生成した公開鍵を、ラズパイに配置していきます。
まずは以下のコマンドをMacのターミナル上で入力し、鍵が保存されているかを確認します。

  1. 鍵の保存場所の確認
% ls -la .ssh

以下のように、2種類の鍵が保存されていると思います。

  • id_rsa (秘密鍵)
  • id_rsa.pub (公開鍵)
drwxr-xr-x  11 ユーザ名  staff   352  6  2 23:07 .
drwxr-xr-x+ 35 ユーザ名  staff  1120  6  2 23:00 ..
-rw-------   1 ユーザ名  staff   493 12  9 23:36 config
-rw-------   1 ユーザ名  staff  2675  6  2 23:07 id_rsa
-rw-r--r--   1 ユーザ名  staff   586  6  2 23:07 id_rsa.pub
rw-------   1 ユーザ名  staff  2762 12  9 23:37 known_hosts

「id_rsa.pub」が公開鍵であるため、これをラズパイに送っていきます。
以下のコマンドを入力すると、公開鍵をラズパイのホームディレクトリに送ることが出来ます。

  1. scpコマンドを使用して公開鍵の送付
  2. パスワードを入力 (入力しても文字列は表示されません)
% scp .ssh/id_rsa.pub pi@192.168.10.34
pi@192.168.10.34's password: 

  1. 以下のように表示されたら、送信成功です。
id_rsa.pub          100%  586   107.5KB/s   00:00

続いてラズパイにsshでログインし、公開鍵を設定していきます。

  1. sshでラズパイにログイン
% ssh pi@192.168.10.34

以下の手順は(ラズパイ端末上で実行される)Mac上での操作となります。

まず、ホームディレクトリに公開鍵が保存されていることを確認します。

  1. ホームディレクトリの確認
$ ls -la

以下のように、ホームディレクトリにMacで生成した
公開鍵が存在していることが確認出来ると思います。

drwxr-xr-x 25 pi   pi   4096  6月  2 23:13 .
drwxr-xr-x  3 root root 4096  5月 27  2020 ..
drwxr-xr-x  3 pi   pi   4096  2月 17  2021 Desktop
drwxr-xr-x  2 pi   pi   4096  5月 27  2020 Documents
drwxr-xr-x  3 pi   pi   4096  5月  6 08:03 Downloads
drwxr-xr-x  2 pi   pi   4096  5月 27  2020 Music
drwxr-xr-x  2 pi   pi   4096  5月 27  2020 Pictures
drwxr-xr-x  2 pi   pi   4096  5月 27  2020 Public
drwxr-xr-x  2 pi   pi   4096  5月 27  2020 Templates
drwxr-xr-x  2 pi   pi   4096  5月 27  2020 Videos
-rw-r--r--  1 pi   pi    586  6月  2 23:12 id_rsa.pub

確認できたら次は公開鍵の保存場所を作成し、
そこに作成するファイルに公開鍵の内容を転記します。

  1. 公開鍵格納場所の作成
  2. 1. で作成した場所にauthorized_keysを作成し、公開鍵の内容を転記する
  3. 公開鍵格納場所の権限変更
  4. authorized_keysの権限変更
  5. ホームディレクトリに存在している公開鍵の削除
$ mkdir .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
$ rm -f id_rsa.pub

これで、ラズパイへの公開鍵の配置は完了したため、sshサーバの設定ファイルの内容を書き換え設定変更します。

  1. sshサーバ設定ファイルのvi編集モードにする
$ sudo vi /etc/ssh/sshd_config

設定ファイルの書き換え内容としては、以下の3点です。

  1. rootログインの無効化
  2. RSA認証の有効化
  3. 公開鍵認証方式の有効化
  4. 公開鍵の配置場所設定
  5. パスワード認証方式の無効化

■設定変更前

# PermitRootLogin no
# RSAAuthentication no
# PubkeyAuthentication no
# AuthorizedKeysFile   %h/.ssh/authorized_keys
PasswordAuthentication yes

■設定変更後

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile   %h/.ssh/authorized_keys
PasswordAuthentication no

「#」でコメントアウトされているものはコメントアウトを削除しつつ、設定内容を変更していきます。
※環境によって↑に記載した内容と異なっていたり、存在しない設定もあると思うのでその際は記載のある設定のみを変更してログインを試してみてください

viエディタ上での編集方法について本筋から話がそれてしまうため、不明点があれば以下ページをご参考ください。シンプルで分かりやすかったです。

http://turbo.mech.iwate-u.ac.jp/Fel/unix/vi.html

最後に、設定したファイルをsshサーバに再読込させるため、以下のコマンドを実行します。

  1. sshサーバの再起動
% sudo /etc/init.d/ssh restart

Macから公開鍵認証方式でログイン出来ることを確認する

以下の手順はMac上での操作となります。

前の章までの設定が完了していれば、Macから秘密鍵を使用して公開鍵認証方式でログインができるはずです。
新規でターミナルを立ち上げてから、以下のコマンドを実行しログインを実行します。
※ラズパイの設定で使っていたターミナルを接続解除したり、☓閉じしてしまうと、ラズパイ設定が失敗していた場合に再接続出来なくなってしまうため、新規でターミナルを立ち上げたほうが良いです

  1. 公開鍵認証方式でのログイン実行
% ssh -i .ssh/id_rsa -p 22 pi@192.168.10.34

※公開鍵にパスフレーズを設定していた場合は、ここでパスフレーズの入力が求められます

以下のように表示されたら、公開鍵認証方式でのログインは成功です。

Linux raspberrypi 5.10.103-v7+ #1529 SMP Tue Mar 8 12:21:37 GMT 2022 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: Thu Jun  2 23:26:14 2022 from 192.168.10.14
pi@raspberrypi:~ $

Windowsからパスワードでログイン出来ないことを確認する

以下の手順はWindows上での操作となります。

  1. sshでラズパイにログイン (環境によってIPアドレスは適宜変更してください)
>ssh pi@192.168.10.34

設定が適切に完了していれば、以下スクショのようにアクセスが拒否されるかと思います。
「Permission denied (publickey).」というメッセージが、公開鍵認証方式のためアクセスを拒否しました…という意味合いになります。

ここまで確認できれば、無事に設定完了となります。お疲れさまでした。

コメント

タイトルとURLをコピーしました