Rassberry Pi Connectが使用できなくなった場合に、ssh接続ができないと復旧できないのでsshを常時有効化させることにする。
sshはセキュリティ的に問題が有るので、公開鍵認証にする。
| ステップ | 実行する場所 | 何をするか |
| 1. 鍵を作る | 操作する端末 WindowsPC |
自分専用の「鍵のペア」を生成する |
| 2. 公開鍵を渡す |
操作する端末 WindowsPC |
生成した「公開鍵」だけをサーバーに送る |
| 3. ssh接続を 鍵のみにする |
操作されるPC | パスワードでのログインを禁止する |
1. 鍵を作る
WindowsのPowershellから実施
ssh-keygen -t ed2551
C:\Users\現在のユーザー名\.ssh 配下に以下のファイルが作成される。
id_ed25519
id_ed25519.pub
作成する際に、Enter passphrase (empty for no passphrase): となり、パスフレーズを設定可能だが省略しても良い。
id_ed25519.pubの記述は作成した鍵名、現在はEd25519固定と考えて良い。
| アルゴリズム | 推奨度 | 特徴 |
| Ed25519 | 最高 | 現在最強。 高セキュリティかつ計算が速い。鍵の文字列が短く扱いやすい。 |
| ECDSA | 高い | 電子政府などで使われる標準規格。Ed25519が使えない古い環境での代用。 |
| RSA | 普通 | 最も古く、互換性が高い。安全性を保つには鍵を長く(3072bit以上)する必要があり、動作が重い。 |
鍵の説明
| ファイル名 | 種類 | 役割 | 扱い |
id_ed25519.pub |
公開鍵 | サーバーに渡す「南京錠」 |
誰に見せても、 どこに置いてもOK |
id_ed25519 |
秘密鍵 | 自分が持つ「本物の鍵」 | 絶対他人に見せない。 自分のPCに隠す |
2:公開鍵を渡す
操作するPC(Windows powershell)から「公開鍵」をサーバーへ送る。
引き続き、操作するPCで以下のコマンドを入力。
cd C:\Users\ユーザー名\.ssh\
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh RaspberryPiのユーザー名@RaspberryPiのIPアドレスもしくはホスト名 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
* Linuxの場合ssh-copy-idコマンドで実施、例:ssh-copy-id RaspberryPiのユーザー名@サーバーのIPアドレスorホスト名
結果: サーバー側の特定の場所(~/.ssh/authorized_keys)に、公開鍵が自動的に書き込まれる。
RaspberryPiから確認
nano ~/.ssh/authorized_keys
内容例(id_ed25519.pubの内容と同じ、id_ed25519.pubはテキストエディタ等で開ける)
ssh-ed25519 鍵のコード ユーザー名@Windowsのホスト名
ユーザー名@Windowsのホスト名が判別しにくい場合は、編集可能。
SSHの仕組みでは、「2つ目の半角スペース」より後ろはすべてコメントとして扱われる。
【正しい書き方の例】
Plaintext
ssh-ed25519 AAAAC3...(略)...5J89 2026年3月18日 メインPC 自宅用
確認: この時点でpowershellから
ssh ユーザー名@RaspberryPiのIPアドレスもしくはホスト名
で、パスワードなしでログインできれば成功。
パスワード未入力で、PowershellのプロンプトがRaspberryPiのプロンプトに変わってコマンド入力できる。
TeraTermで接続
通常通り接続して、ユーザー名を入力する
「SSH認証」画面が表示されたら、サーバーの「ユーザー名」のみを入力。
認証方式を切り替える
デフォルトでは「パスワードを使う」にチェックが入っているが「RSA/DSA/ECDSA/ED25519鍵を使う」 に変更。
秘密鍵を選択する
「秘密鍵(K):」という項目の横にある 「...」ボタン を押します。
ファイルを探して開く
ファイル選択画面が開くので、PowerShellで作成した秘密鍵を選択します。
場所: C:\Users\(ユーザー名)\.ssh\
ファイル名: id_ed25519 (※末尾に .pub が付いていない方)
ログイン実行
「OK」を押せばログインできる。


ただし、通常では毎回同じ操作が必要なので手間が増えるので専用のショートカットを作成する。
適当な場所にTeraTermのショートカットを作成。
プロパティのリンク先に追記する。
現在
"C:\Program Files\teraterm5\ttermpro.exe"
に追記
/user=RaspberryPiのユーザー名 /auth=publickey /keyfile=C:\Users\Windowsのユーザー名\.ssh\id_ed25519
最終例
"C:\Program Files\teraterm5\ttermpro.exe" /user=RaspberryPiのユーザー名 /auth=publickey /keyfile=C:\Users\Windowsのユーザー名\.ssh\id_ed25519

起動して、ホスト名を確認して”OK”クリックでパスワード無しで接続できる。

3. 操作されるPCのssh接続許可を鍵のみにする
操作される側(今回はRaspberryPi)
RaspberryPiの設定ファイル /etc/ssh/sshd_config を編集。
sudo nano /etc/ssh/sshd_config
#PasswordAuthentication yes
を書き換える。
PasswordAuthentication no
設定を反映させる。
sudo systemctl restart ssh
TeraTermでパスワードログインして確認、一度弾かれた後に”認証方式”が秘密鍵に切り替わって、ブレインパスワードがグレーアウトして選択できなくなったので無効化されていることが判る。

操作側を複数端末登録する場合
RaspberryPiを他の端末でもssh接続で使えるように、いくつでも追加は可能だがRaspberryPi側の設定を鍵のみに設定後は手順が異なる。
パスワード認証を禁止した後に、別のPC(PC B)からもアクセスしたくなった場合。
方法1:既にログインできるPC(PC A)から追記する(推奨)
既に鍵が登録されている PC A から、サーバーの authorized_keys を編集します。
PC B で鍵を作成し、公開鍵(.pub)の中身をコピーする。
PC A からサーバーに SSH ログインする。
サーバー上でファイルを編集し、末尾に PC B の公開鍵(公開鍵.pubの内容)を貼り付けて保存する。
nano ~/.ssh/authorized_keys
方法2:一時的にパスワード認証を許可する
PC A からサーバーの設定(sshd_config)を一時的に PasswordAuthentication yes に戻す。
sudo systemctl restart ssh で反映。
PC B から 上記のコピー操作(2:公開鍵を渡す)を実行する(パスワードで書き込み)。
終わったら再び no に戻してロックする。
~/.ssh/authorized_keysを見れば、複数端末の登録状況を確認できる。
中身は平文なので、必要ならコピーして現状メモとしてどこかで管理しても良い。
方法1の方が簡単、どうしても出来ない状況なら方法2で実施かな(・・?
1台目から、方法1で追加できるなら一番手っ取り早いかも?Kona Linux Pi 4.0(trixie)再セットアップ時に確認してみたいφ(..)メモメモ
