windowsからRaspberry Pi 5に公開鍵認証で安全・快適にSSH接続する手順

当ページのリンクには広告が含まれています。

SSH接続は、ラズパイ5を使って効率よく開発を進める上で欠かせない機能です。公開鍵認証を利用すれば安全・快適に接続できますが、最初は導入の仕方が分かりにくいかもしれません。

そこで本記事では、windowsパソコンからRaspberry Pi 5(ラズパイ5)へ公開鍵認証を使ってSSH接続する手順をまとめてみました。初心者の方でも迷わないように、仕組みから設定手順までステップ別に分かりやすく解説していきます。

目次

公開鍵認証とは?

公開鍵認証とは、パスワードの代わりに「」を使って本人確認をする仕組みです。

大まかな流れとしては以下のようになります。

最初に自分のPCで秘密鍵と公開鍵のペアを生成し、サーバーの方には公開鍵のみを登録しておきます。

その後、PCからサーバーに接続を要求するとチャレンジというクイズが送られてきます。

チャレンジは、秘密鍵を使わないと絶対に解けない問題になっています。

秘密鍵を使ってチャレンジの答えを返すと、サーバーはその答えを登録済みの公開鍵で検証。合っていれば「本人」と判断し、ログインを許可します。

このように、一度設定すればパスワード入力無しで本人の認証ができるので、より安全かつ快適にログインができます。

公開鍵認証でSSH接続する手順

ここでは、公開鍵認証を使ってSSH接続する手順を次の4つのステップに分けて説明していきます。

公開鍵認証でSSH接続するステップ
  • 準備
    →ラズパイ5側でSSHを有効化
  • 鍵の作成
    →windows側で鍵のペア作成
  • 鍵の登録
    →公開鍵をラズパイ5に登録
  • 仕上げ(セキュリティ対策)
    →パスワードログインの無効化

1. ラズパイ5でSSH機能を有効にする

ラズパイ5は、デフォルトではSSHがオフになっています。最初の準備として、SSHを有効にして使えるようにします。デスクトップとコマンドのどちらからでも設定できます。

デスクトップ画面から設定(GUI)

メニュー(イチゴマーク)から [設定] > [Control Centre] を開き、 [インターフェイス] タブをクリック。
SSH の項目を「有効」に切り替えます。

最後に [閉じる] を押します。

コマンドで設定(CUI)

ターミナルから、以下のコマンドを実行します。

sudo raspi-config

設定画面が立ち上がるので、Interface Options を選択。

I1 SSH を選択。

「Would you like the SSH server to be enabled?」で 「はい」 を選択。

「Finish」を押して終了します。

2. Windows側で「鍵」を作成する

次に、Windows側で鍵のペア(秘密鍵と公開鍵)を生成します。今のWindowsには鍵を作るコマンド(ssh-keygen)が標準搭載されていますので、これを使います。

Windowsのターミナル(PowerShell または コマンドプロンプト)を開き、以下のコマンドを入力します。

ssh-keygen -t ed25519

ed25519」は、鍵を生成するための暗号方式です。高速で安全であることから、SSHの鍵の生成には「ed25519」を使うことが強く推奨されています。

上のコマンドを実行すると保存場所を聞かれるので、指定がなければEnter。続いて、パスフレーズを聞かれます。パスフレーズは鍵自体に付けるパスワードで、使わないなら空欄のままEnter

特に指定なければ、Enter×2回でOK

これで、C:\Users\ユーザー名\.ssh\ フォルダの中に、以下の2つのファイルが生成されます。

生成されたファイル
  • id_ed25519秘密鍵:絶対に人に見せない!)
  • id_ed25519.pub公開鍵:これをラズパイに渡す)

拡張子が.pubの方が公開鍵(public key)です。次のステップで、この公開鍵をラズパイ5に登録します。

なお、手元のwindows PC側で鍵を生成するのは、秘密鍵を移動させる必要がないためです。鍵の生成自体はラズパイでも可能ですが、ネットワーク経由で秘密鍵を手元のPCにダウンロードしたりすれば盗聴される恐れがあります。そういったリスクを避けるために、自分の手元で鍵を作り公開鍵だけを相手に渡すのが安全な流れとなります。もっとも、自宅内で完結しているならあまり関係ないかもしれませんが。

3. 公開鍵をラズパイに登録する

作成した公開鍵をラズパイ5に登録します。ここはちょっと複雑なので、さらに3つのステップに分けて実行します。

3-1. ラズパイ5に鍵用のフォルダを作成

ラズパイ5の中に公開鍵の置き場所を作ります。Windowsターミナルで以下を実行してください。

ssh ユーザー名@IPアドレス "mkdir -p ~/.ssh"
  • 「ユーザー名」はラズパイ5のユーザー名、「IPアドレス」 はラズパイ5のIPアドレスに置き換えてください 。以下のコマンドでも同様です。
  • ~/.ssh“の中にある斜め線はスラッシュ(/)です。

実行後にパスワードを聞いてくるので、ユーザー名で指定したユーザーのパスワードを入力します。

3-2. 公開鍵をラズパイ5に転送する

windowsターミナルで以下のコマンドを実行し、Windowsで作った公開鍵(.pub)をラズパイ5のフォルダへ転送します。(これも実行後にパスワードが聞かれるので入力してください)

cd .ssh
scp id_ed25519.pub ユーザー名@IPアドレス:~/.ssh/authorized_keys

鍵のあるフォルダに移動してから、scp (Secure Copy)コマンドを実行します。scpはファイルを安全に転送するコマンドで、ここではWindows側の id_ed25519.pub を、ラズパイ側の authorized_keys という名前にリネームして保存しています。

もし別の鍵を既に使っている場合は、下に書いている「追記」の方を実行してください。このscpを使った転送コマンドは単にファイルを書き換えるので、前の鍵情報が消えてしまいます。

SSH(ラズパイ5側のプログラム)は、「authorized_keysというファイルの中に書いてある鍵ならログインを許可するよ」と予め決めています。なので、例えば、生成時のファイル名(id_ed25519.pub )のまま保存しておいても、ラズパイ5はそれをチェックしてくれません。必ず、authorized_keysという名前に変更しておきます。

【3-2の別バージョン】公開鍵を「authorized_keys」に追記

先ほどはscpコマンドを使ってリネームして保存する方法を紹介しましたが、実はもっと丁寧なやり方は「追記」です。

# Windowsの公開鍵の内容を、ラズパイのauthorized_keysに「追記」する
cat id_ed25519.pub | ssh ユーザー名@IPアドレス "cat >> ~/.ssh/authorized_keys"

このコマンドは、Windows側にある公開鍵の中身をパイプで渡す → sshでラズパイ5に接続 → 渡された内容をauthorized_keysの一番下の行に付け足し(>>)という流れで実行します。

上のscpコマンドによる転送と違ってファイルの一番下に追記するので安全です。複数のPCからアクセスするなど、鍵を複数使うような場合はこちらを使います。

3-3. フォルダとファイルの権限を整える(重要!)

ラズパイ5側で「この鍵は自分以外の人は触れないよ」という設定(パーミッション変更)をします。これを行わないと、セキュリティエラーで接続できないことがあります。

windowsターミナルから以下を実行します。

ssh ユーザー名@IPアドレス "chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys"
  • chmod 700: .sshフォルダを自分だけが読み書き実行できるようにします。
  • chmod 600: authorized_keysファイルを自分だけが読み書きできるようにします。

これは忘れずに実行しましょう。セキュリティの関係上、「誰でも書き換えられるようなガバガバな鍵リストは信用しない」というルールがあり、権限が正しくないと接続を拒否されます。

ここまで来れば、公開鍵認証でSSH接続できるようになります。試しに、Windowsから以下のコマンドで接続してみましょう。

ssh ユーザー名@IPアドレス

パスワードを聞かれずに(パスフレーズを設定した場合はその入力だけで)ログインできれば成功です!

4. パスワード認証を禁止する(仕上げ)

鍵でログインできるようになったら、最後の仕上げとして「パスワードでのログイン」を禁止することでセキュリティを強固にします。

この設定はラズパイ側でもできますが、せっかくsshが使えるようになったのでsshでラズパイ5にリモート接続してやってみましょう。windowsターミナルからsshでログインし、下のコマンドを入力します。

sudo nano /etc/ssh/sshd_config

ラズパイ5のssh設定ファイルが開くので、以下の項目を no に書き換えます(# があれば消す)。

  • PasswordAuthentication

書き換えたら保存(Ctrl+OEnter)し、閉じます(Ctrl+X)。その後、再起動(sudo reboot)します。

これで、ラズパイ5は、自分の鍵からしか入ることができない安全な環境になりました。

パスワード認証をオフにした後、Windows側の秘密鍵を失くすと自分もログインできなくなります。秘密鍵のバックアップ(USBメモリなどに保管)は忘れないようにしましょう。

IPアドレスの固定化もやっておく

SSH接続を安定して行うために、ラズパイ5のIPアドレスは固定化することをおすすめします。IPアドレスが変わると接続できなくなるからです。また、運用トラブルを避けるためにルーター側で設定するのがおすすめです。

その際、ルーターの「DHCP予約」機能を使うのが一般的です。私は、古いルーターを使っているためにこの機能を使えず、代わりにDHCP割り当て範囲を調整して固定化しました。こちらに記事を書いていますので、よければ参考にしてください。

まとめ

本記事では、Windowsからの接続方法に加え、公開鍵認証の導入とパスワードログインの無効化までを解説しました。公開鍵認証を利用することで、パスワードに依存しない強固なセキュリティを実現できます。

一度設定してしまえば、次回以降はパスワード入力なしで快適に接続できるのも大きなメリットです。安全性と利便性を両立した環境を整えて、ラズパイ活用の幅を広げていきましょう。

目次