概要
SSHの公開鍵認証を使ってパスワード無しでログインしようとしたとき、公開鍵も暗号鍵も正しく配置してかつ権限も間違ってないのにログインできなくてハマったのでメモ。知ってる人は当たり前じゃん?って内容なのかもしれませんが色々調べたのでメモ。
事象
結論を言うと接続元から接続先にSSHする際、接続元に暗号鍵 id_rsa
と id_rsa.pub
が配置されていて、id_rsa.pub
のキーが id_rsa
と異なっていると接続に失敗する。
ssh -i .ssh/id_rsa hogehoge@hogehoge.com -vvv
で確認
id_rsaのみ
debug1: Next authentication method: publickey debug1: Trying private key: .ssh/id_rsa debug3: sign_and_send_pubkey: RSA XXXXXXXX debug3: send packet: type 50 debug2: we sent a publickey packet, wait for reply debug3: receive packet: type 52 debug1: Authentication succeeded (publickey).
id_rsaとid_rsa.pub(同じキー)
debug1: Next authentication method: publickey debug1: Offering public key: RSA SXXXXXXXX .ssh/id_rsa debug3: send_pubkey_test debug3: send packet: type 50 debug2: we sent a publickey packet, wait for reply debug3: receive packet: type 60 debug1: Server accepts key: pkalg rsa-sha2-512 blen 279 debug2: input_userauth_pk_ok: fp XXXXXXXX debug3: sign_and_send_pubkey: RSA XXXXXXXX debug3: send packet: type 50 debug3: receive packet: type 52 debug1: Authentication succeeded (publickey).
## id_rsaとid_rsa.pub(異なるキー)
debug1: Next authentication method: publickey debug1: Offering public key: RSA XXXXXXXX .ssh/id_rsa debug3: send_pubkey_test debug3: send packet: type 50 debug2: we sent a publickey packet, wait for reply debug3: receive packet: type 51 debug1: Authentications that can continue: publickey debug2: we did not send a packet, disable method debug1: No more authentication methods to try.
原因
なんで接続元の公開鍵がsshで使われてるんだと思って色々調べてみたけど、正式なドキュメントは見当たらず。一番それっぽい回答が 公開鍵に対して正しい暗号鍵が使われているか確認している
ってのだけど、そうだとしたら秘密鍵が違ってる旨のメッセージがほしい。その他にも公開鍵の計算で利用しているってのもあった。もしも正しい理由をご存知の方いましたらご教示ください。
感想
変なところでハマったけど暗号鍵ファイルの管理をちゃんとしてないと発生しそうな事象なので勉強になった。