ダイキのアプリ開発ナレッジ

アプリ開発のナレッジを掲載します

Windows標準機能でRaspberry Pi 4B に接続 - SSH編 - PowerShell で公開鍵認証設定

ラズパイのためにクライアント側に余計なソフトを入れたくないということで、
Windows標準機能でラズパイに接続する方法のメモを残しておきます

今回は PowerShell でラズパイに SSHする方法です

また、私の環境ではラズパイのパスワード認証を拒否する設定をしたいので、公開鍵認証の設定方法も書き残します

前提条件
クライアント側: windows 10
サーバー側: Raspbian Buster


手順概要

1. パスワード認証によるSSH接続

WindowsPowerShellを起動(起動に少し時間がかかる)
f:id:shinseidaiki:20200524225021p:plain

以下のコマンドでパスワード認証によるSSH接続を行う

ssh [ログインアカウント名]@[サーバIPアドレス] -p [ポート番号]
例)  ssh pi@raspberrypi -p 12345

※ ポート番号22の場合は省略可

※なお、ラズパイ側がパスワード認証拒否設定をしていると接続はできない
/etc/ssh/sshd_config の PasswordAuthentication no が記載されている場合は直接ラズパイをいじって、PasswordAuthentication no をコメントアウトする

初回接続時、接続を続行するか尋ねられるので、yes と入力する

その後、パスワードを入力すると、接続できる

SSHはこれで接続完了です。次は公開鍵認証の設定をしていきます

2. 公開鍵認証の設定

2.1. 秘密鍵・公開鍵の生成

クライアント側(Windows側)で鍵生成を行うため、ラズパイにログインしている場合は、exitなどでwindows側の操作に戻る

windows側で以下のコマンドを打つ

ssh-keygen

以下の入力項目を入力する

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\tatib/.ssh/id_rsa): [←任意の格納場所]
Enter passphrase (empty for no passphrase): [←5文字以上のパスフレーズ]
Enter same passphrase again: [←同じパスフレーズ]

※格納場所未入力の場合は C:\Users\tatib/.ssh/id_rsa に鍵が生成される
パスフレーズは鍵のパスワードであり、ユーザーパスワードとは別物であることに注意

エクスプローラーなどで、[上記格納場所]に、id_rsa と id_rsa.pub があることを確認
※ id_rsa秘密鍵なので厳重管理

2.2. 公開鍵をラズパイ側に登録

パスワード認証によりラズパイにログインする

ssh [ログインアカウント名]@[サーバIPアドレス] -p [ポート番号]

①ホームディレクトリに /.ssh ディレクトリを作成し、パーミッションを変更

以下はラズパイ側で公開鍵を初めて設定する場合にのみ実施
既に実施済みの場合は、②へ

cd ~/
mkdir .ssh
chmod 700 .ssh

※ ~/ はホームディレクトリという意味

②公開鍵認証ファイルに公開鍵の内容を追記

まずはラズパイ側のauthorized_keysファイルを開く

nano ~/.ssh/authorized_keys

次は、windowsGUI操作に戻り、2.1で生成した公開鍵(id_rsa.pub)をメモ帳などで開く

ものすごく長い文字列が表示されるので、それを Ctrl + C などで一度コピーする

次に、ラズパイ側で開いたauthorized_keysに上でコピーした文字列をペーストする
※ペーストは右クリックで可能

Ctrl + O で保存し、 Ctrl + X でauthorized_keysファイルを閉じる

これで、公開鍵が登録できました

2.3 ラズパイ側SSH設定

最後に/etc/ssh/sshd_configの設定をいじって、鍵認証を有効化します

sudo nano /etc/ssh/sshd_config

上記コマンドで開いた画面において以下を追記します

#鍵認証の有効化
PubkeyAuthentication yes

変更が終わったら、SSHを再起動

sudo service ssh restart


なお、公開鍵認証の確認が取れた後で、もう一度 /etc/ssh/sshd_config を開き、以下を追記することをお勧めします

#パスワード認証を無効化
PasswordAuthentication no

3. 公開鍵認証によるSSH接続

ssh [ログインアカウント名]@[サーバIPアドレス] -p [ポート番号] -i [秘密鍵格納場所]
例)  ssh pi@raspberrypi -p 12345 -i C:\Users\tatib/.ssh/id_rsa

パスフレーズを入力して接続できればOK