鍵ペアが本当に合っているか不安になったら、最初に確認すべきこと
SSHで接続できないとき、多くの人はすぐにサーバー側の設定やパーミッションを疑いがちです。 しかし、実務で頻発するトラブルの多くは、もっと手前の段階に原因があります。
それが、 「この秘密鍵と公開鍵は、本当に同じペアなのか?」 という点です。
この記事では、ssh-keygen -lf を使って、SSH鍵のペアが正しいかどうかを即座に判定する方法を解説します。 この確認を最初に行うだけで、SSHトラブルの切り分け効率は大きく変わります。
なぜ鍵ペアの確認が必要なのか
id_rsa(秘密鍵)と id_rsa.pub(公開鍵)は、ファイル名が揃っているだけではペアである保証はありません。
実際の現場では、次のようなケースがよく起こります。
- 鍵をコピーしたつもりが、別の鍵を持ってきていた
- 再生成後、古い公開鍵を使い続けていた
- scp / rsync / Git 操作で鍵ファイルが混在した
- フォルダ移動や整理で対応関係が崩れた
見た目は正しくても、中身が一致していない鍵ペアは珍しくありません。 ここを確認せずに設定を疑い続けると、原因不明のまま時間を消費することになります。
ssh-keygen -lf が強力な理由
ssh-keygen -lf は、秘密鍵・公開鍵のどちらからでも fingerprint(指紋)を表示できるコマンドです。
重要なのは次の一点です。
- 正しい鍵ペアであれば
- 秘密鍵と公開鍵から計算される fingerprint は
- 必ず完全に一致する
つまり、fingerprint が一致すれば、その鍵ペア自体は正しいと断定できます。
確認手順(そのまま実行)
ssh-keygen -lf id_rsa
ssh-keygen -lf id_rsa.pub
出力例:
4096 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
比較するのは、SHA256 で始まる fingerprint 部分です。
結果の読み取り方
fingerprint が完全に一致する場合
- 秘密鍵と公開鍵は正しいペア
- SSH失敗の原因は鍵そのものではない
fingerprint が一致しない場合
- その鍵はペアではない
- 公開鍵を作り直すか、対応する秘密鍵を探す必要がある
この時点で、問題の切り分け範囲を一気に絞り込めます。
次に確認すべきポイント
鍵ペアが正しいと分かったら、次はサーバー側です。
- authorized_keys の配置場所
- 接続ユーザーの指定ミス
- .ssh / authorized_keys のパーミッション
- sshd_config の設定内容
「鍵は問題ない」と断定できてから確認する設定は、無駄な迷いがありません。
まとめ
SSH接続トラブル時は、設定を見る前に鍵ペアが本当に一致しているかを確認することが重要です。
ssh-keygen -lf による fingerprint 比較は、SSHトラブルシューティングにおける最短かつ確実な第一手になります。