備忘録

Windows,Linux,Mac,AWS,VMware,ネットワークなどの検証

Raspberry Pi 4 にて、公開鍵認証方式でSSH接続する

ラズパイにWindows PCから公開鍵認証方式でSSH接続してみます。

 

参考:Raspberry Piに公開鍵認証を使ってssh接続する

 

使用機種:Raspberry Pi 4 Model B 4GB

※パスワード認証にてSSH接続はできている前提です。

 

はじめに、Windows PCからラズパイにSSHで接続します。私はTeraTermを使用します。

 

まず、保存先として、/home/pi/.ssh/ ディレクトリを作成しておきます。

pi@raspberrypi:~ $ mkdir /home/pi/.ssh

 

続いて公開鍵と秘密鍵のキーペアを作成します。
pi@raspberrypi:~ $ sudo ssh-keygen -t rsa

 

作成した公開鍵ファイルの保存名は、/home/pi/.ssh/id_rsa とします。
 ※公開鍵: /home/pi/.ssh/id_rsa.pub
 ※秘密鍵: /home/pi/.ssh/id_rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /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:(複雑な文字列) root@raspberrypi
The key's randomart image is:
+---[RSA 3072]---+
|       .=   o...|
|       . + . ..+|
|        o    ..+|
|       . o .... |
|        S +.+.o |
|       = * *o++.|
|      . . +.*o +|
|         = ooo=.|
|        . o ..E |
+----[SHA256]----+

 

作成された秘密鍵を、Windows PCに転送しますが、秘密鍵はrootユーザーのみが扱えるため、piユーザーでは権限がありません。
一時的に/home/pi/.ssh/id_rsa の権限を変更します(あとで元に戻します!)

pi@raspberrypi:~ $ cd ~/.ssh
pi@raspberrypi:~/.ssh $ ls -l
total 8
-rw------- 1 root root 2602 Mar 19 01:52 id_rsa
-rw-r--r-- 1 root root  570 Mar 19 01:52 id_rsa.pub


pi@raspberrypi:~/.ssh $ sudo chmod o+r id_rsa
pi@raspberrypi:~/.ssh $ ls -l
total 8
-rw----r-- 1 root root 2602 Mar 19 01:52 id_rsa
-rw-r--r-- 1 root root  570 Mar 19 01:52 id_rsa.pub


Teratermの「ファイル > SSH SCP」から、受信したいファイルのパスと保存先を入力して、秘密鍵ファイルid_rsa と公開鍵ファイルid_rsa.pub を転送します。

f:id:tksfj17:20220319121545j:plain

f:id:tksfj17:20220319121603j:plain

 

無事にファイルを転送できたら、id_rsaの権限を元に戻します。
pi@raspberrypi:~/.ssh $ sudo chmod o-r id_rsa
pi@raspberrypi:~/.ssh $ ls -l
total 8
-rw------- 1 root root 2602 Mar 19 01:52 id_rsa
-rw-r--r-- 1 root root  570 Mar 19 01:52 id_rsa.pub

 

ラズパイにある公開鍵ファイル id_rsa.pub の内容を、.sshフォルダの authorized_keysファイルに書き出します。

pi@raspberrypi:~/.ssh $ cat id_rsa.pub >> authorized_keys

pi@raspberrypi:~/.ssh $ cd ..

pi@raspberrypi:~ $ chmod 700 .ssh

pi@raspberrypi:~ $ chmod 600 .ssh/authorized_keys

 

ラズパイ側の鍵ファイルは不要なので、公開鍵、秘密鍵とも削除しておきます。

pi@raspberrypi ~ $ sudo rm id_rsa.pub
pi@raspberrypi ~ $ sudo rm id_rsa

 

ラズパイのSSHサーバにて公開鍵認証を使用するよう設定を変更します。
設定ファイルは、/etc/ssh/sshd_config です。

pi@raspberrypi ~ $ sudo nano /etc/ssh/sshd_config 

 

SSHの既定の待ち受けポート番号は22番ポートですが、セキュリティ向上のため変更します。
ここでは28987番にしてみます。

 

以下、sshd_config ファイルの下記の記載を変更します。
#Port 22
Port 28987

 

rootログインを禁止します。
#PermitRootLogin prohibit-password
PermitRootLogin no

 

公開鍵ファイル認証を有効にします。
RSAAuthentication    yes
PubkeyAuthentication yes
AuthorizedKeysFile   %h/.ssh/authorized_keys

 

パスワード認証を無効にします。
#PasswordAuthentication yes
PasswordAuthentication no

 

空パスワードを無効にします。
#PermitEmptyPasswords no
PermitEmptyPasswords no

 

SSHサーバーを再起動します。
pi@raspberrypi:~ $ sudo /etc/init.d/ssh restart
Restarting ssh (via systemctl): ssh.service.

 

これで、TeraTermから公開鍵を使用して接続できるようになりました。

f:id:tksfj17:20220319121808j:plain

f:id:tksfj17:20220319121815j:plain