Raspberry Piのssh接続を公開鍵認証化

スポンサーリンク
コンピューター

Raspberry Piはデフォルトではパスワード認証でログインします。そこを公開鍵で接続できるようにします。

今回使う機器は以下になります。

  • Raspberry Pi 3
  • Windows 10 Home

PCとRaspberry Piは同ネットワーク上に接続してください。

スポンサーリンク

鍵ペア(公開鍵と秘密鍵)ファイルの作成

Raspberry Piに接続するPC上(windows10)で鍵ペアのファイルを作成します。

ssh-keygen -t rsa

Enter file in which to save the key (C: ¥Users¥username/.ssh/id_rsa):#鍵の生成場所
Enter passphrase (empty for no passphrase):#パスワードの設定

コマンドのパラメータとして、”-t rsa”を指定してますが、これは鍵の種類を”RSA鍵”というものに指定することになります。

鍵の生成場所を聞かれますが、こだわりがなければデフォルトのままで大丈夫です。

設定するパスワードを入力すると、指定したフォルダにid_rsa(公開鍵)とid_rsa.pub(秘密鍵)が生成されます。(パスワードはなくても大丈夫です。)

公開鍵ファイルをRaspberry Piに送信し保存

Windows PCで作成した公開鍵ファイルをRaspberry Piに送信します。

‘id_rsa.pub’の方が公開鍵になります。間違えても秘密鍵を送らないでください。

PC側でscpコマンドを利用してRaspberry Piに公開鍵を送信します。

cd [公開鍵の場所 (デフォルトではC:\Users\[ユーザ名]/.ssh/id_rsa)]
scp id_rsa.pub [ユーザー名]@[RaspberryPiのIPアドレス]:~/

このコマンドで聞かれるパスワードはRaspberry Piにログインするためのパスワードになります。

scpコマンドに関してはこちらの記事を参考にしてください。

scpコマンド - Qiita
scpコマンド リモートマシンとローカルマシン、あるいはリモートマシン同士でファイルをコピーする際に使用するLinuxのコマンド。 通信にはsshを使用する。sshコマンドと同じ認証でデータ転送の通信を暗号化する。 sshを使...

公開鍵のパーミッションを変更

Raspberry Pi側のホームディレクトリ直下に.sshフォルダを作成します。

mkdir .ssh

公開鍵ファイルは通常”authorized_keys”というファイルに追記していきます。

先ほど送った”id_rsa.pub"を”authorized_keys"という名前に変更しつつ".ssh"に移動します。

mv id_rsa.pub .ssh/authorized_keys

“.ssh”と”authorized_kyes”のパーミッションを変更します。

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

600は-rw------で管理者のみ読み取り書き込みが可能で、700はxrw------で管理者の実行読み取り書き込みが可能です。

公開鍵認証で接続

最後にsshd_configを修正して、ssh接続を有効にします。

sudo nano /etc/ssh/sshd_config

以下の行のコメントアウトを削除して公開鍵認証を有効化し、パスワード認証を無効化します。

AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
---------------------
PasswordAuthentication no

これで公開鍵認証での接続が可能になります。

PC側から以下のコマンドで、公開鍵認証でssh接続を確認します。

ssh [ユーザ名]@[RaspberryPiのIP] -i [秘密鍵のパス] 

※秘密鍵のパスは、ファイル名まで記載します
(デフォルトでは「C:\Users\[ユーザ名]\.ssh\id_rsa」)

公開鍵認証のパスワードが要求されるので入力します。

各種ssh設定の変更

sshのセキュリティ向上のため、Raspberry Pi側の”sshd_config”のファイルを編集します。

フィルは以下のコマンドで編集します。

sudo nano /etc/ssh/sshd_config

接続ポート番号を変更

Port 22 → Port nnnnn

(自由に利用できる番号として、公式には 49152 – 65535 が規定されている)

rootログインを無効化

PermitRootLogin prohibit-password→ PermitRootLogin no

パスワード認証を無効化

PasswordAuthentication yes → PasswordAuthentication no

認証設定の保存

このままではRaspberry Piの秘密鍵を".ssh"下に置いていない場合、毎回”-i“オプションでkeyfileを指定する必要があります。

それは面倒なので、configに設定を追記します。

PC側の”.ssh“フォルダ下に、以下の内容の"config"ファイルを作成します。

Host [ホスト名](接続時に使う任意の名前)
     HostName [Raspberry PiのIPアドレス]
     User [Raspberry Piのユーザ名]
     Port [sshのポート番号]
     IdentityFile [秘密鍵ファイルのパス]

これで以下のコマンドでssh接続できるようになります。

ssh [ホスト名]

公開鍵認証のパスワードが求められるので、入力し接続されます。

コメント

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