sshでログインする際にローカルホストで使用する鍵は.ssh/id_rsaですが、この時このid_rsaと異なる鍵の公開鍵がid_rsa.pubとして置かれていると、そちらを参照してしまいログインできないという状況が発生しました。
再現手順は以下のとおり。
- ssh-keygen -t rsa -b 2048 で適当に鍵を作る
- mv .ssh/id_rsa .ssh/id_rsa2 としてバックアップ
- ssh-keygen -t rsa -b 2048 でもう一つ鍵を作る
- mv .ssh/id_rsa2 .ssh/id_rsa として秘密鍵を戻す
これで正しい秘密鍵を見ているはずなのに、ログインできなくなります。デバッグ出力には
debug1: Next authentication method: publickey debug1: Offering RSA public key: /home/yuryu/.ssh/id_rsa debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Trying private key: /home/yuryu/.ssh/id_dsa debug1: Trying private key: /home/yuryu/.ssh/id_ecdsa debug1: Next authentication method: password
と出力されています。この「Offering RSA public key」が、.pubを見ているという出力です。 もし.pubが存在しないと
debug1: Next authentication method: publickey debug1: Trying private key: /home/yuryu/.ssh/id_rsa debug1: read PEM private key done: type RSA
といったログ出力になります。
この公開鍵がなぜ使われているのかまでは調べていませんが、おそらく公開鍵の計算をサボるために、公開鍵がすでに存在したら読み込むといった感じで使っているのではないかと思います。
ぐぐってもパーミッションの設定を間違えているケースばかりで、このハマり方をしている人はいませんでした。無駄に2時間ぐらい悩みました...
まさに今このハマり方していて超助かりましたwww
返信削除同様でした・・他の公開鍵を別ディレクトリに移しておくしかないんですかね
返信削除