タイトル: SSH2秘密鍵の読み込みに失敗しました
SEOタイトル: SSH2 秘密鍵の読み込みに失敗しました の原因と対処
| この記事の要点 |
|---|
|
エラー内容
| SSH2秘密鍵の読み込みに失敗しました |
WinSCP・Tera Term などの日本語化されたSSHクライアントで、秘密鍵ファイルを指定して接続しようとした際に表示されるエラーです。鍵自体が読み込めない/フォーマットが合わない/パスフレーズが違う、のいずれかが原因です。
発生条件と原因
- パスフレーズの誤り — 鍵生成時に設定したパスフレーズと違う文字列を入力している(最頻出)
- 鍵フォーマットの不一致 — WinSCP/PuTTYは
.ppk形式を要求するが、OpenSSH形式のid_rsaを直接指定している - 鍵ファイル自体が壊れている — 改行コードが書き換わった、ファイル末尾が欠落しているなど
- 権限の問題 — 鍵ファイルが他ユーザー所有や読み取り権限不足で開けない
- パスに日本語や空白が含まれる — 一部のクライアントで鍵ファイルのパスに日本語があると読み込みに失敗する
対処法
1. パスフレーズを再確認
まずは入力したパスフレーズが正しいかを確認します。大文字/小文字、半角/全角、不要な空白が混入していないかをチェックします。CapsLockとIMEは特に注意。
2. 鍵フォーマットを確認・変換する
WinSCPやPuTTYは .ppk 形式の鍵を扱います。OpenSSH形式の鍵を持っている場合は PuTTYgen で変換します。
| PuTTYgen → Load → 既存のid_rsaを選択 → Save private key → .ppkで保存 |
逆に、Linux側に持ち込むなら OpenSSH形式に変換します。
| $ ssh-keygen -p -m PEM -f id_rsa |
3. 鍵ファイルが壊れていないか確認
テキストエディタで開き、-----BEGIN ... PRIVATE KEY----- から -----END ... PRIVATE KEY----- までが揃っているか、改行コードが正しいかを確認します。Windowsでメモ帳を使うと改行コードが書き換わるため、可能なら VSCode などで開きます。
4. ファイル権限の確認(Linux/Mac)
| $ chmod 600 ~/.ssh/id_rsa |
OpenSSHでは秘密鍵が他ユーザーから読める権限になっていると拒否されます。
5. パスから日本語や空白を除く
鍵ファイルを C:\keys\id_rsa.ppk のような英数字のみのパスに配置し直すと解消することがあります。
注意点
- 鍵を再生成する前に、サーバー側の
~/.ssh/authorized_keysに対応する公開鍵が登録されているかを必ず確認する - パスフレーズを忘れた場合、秘密鍵そのものから復旧する手段はない。鍵を作り直してサーバーの
authorized_keysを更新する - サーバー側のSSHログ (
/var/log/auth.logや/var/log/secure) を見れば、拒否理由が確認できる場合がある