質問: 鍵ファイルの名前をみて挙動が変わるケースがあるんでしょうか **失敗する例:** ``` ssh xxx -i ~/.ssh/id_rsa Authentication failed. ``` **成功する例:** ``` cp ~/.ssh/id_rsa ~/.ssh/id_rsa_test ssh xxx -i ~/.ssh/id_rsa_test ``` ターゲットサーバーは1台固定で繋がるサーバーが変わるということもないし短時間で鍵が入れ替わることもないです Authentication failed. がでているということは 22 ポートで通信自体はできてると思うのでネットワーク的な問題でもなさそうですし、known_hosts を消したりして何度やっても再現します 名前を変えれば動いてるので特に困っているとかではないんですが あまりに気持ち悪いので原因がわかるなら今後のために知りたいです
回答: 秘密鍵ファイルと公開鍵ファイルの対応が取れていない可能性が考えられます。 ssh接続時に秘密鍵ファイルとして`~/.ssh/id_rsa`を使う場合、公開鍵ファイル`~/.ssh/id_rsa.pub`も使われます。 秘密鍵ファイルのみコピーした結果、正しくない公開鍵ファイル`~/.ssh/id_rsa_test.pub`が無い状態になった為、認証が行えているのでしょう。 以下のコマンドで`~/.ssh/id_rsa.pub`を生成し直してみてください。 ``` ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub ``` 何が起きているか OpenSSHのsshの公開鍵認証は、以下の手順で行われます。(C:クライアント, S:サーバ) 1. C: この公開鍵は使える? 2. S: 使えるよ 3. C: この公開鍵で認証するね。認証用のデータはこれ 4. S: 認証成功したよ 1.で提示する公開鍵は公開鍵ファイル(`~/.ssh/id_rsa.pub`)を読んで送るので、これが秘密鍵ファイル(`~/.ssh/id_rsa`)に対応した正しい公開鍵で無い場合は 1. C: この公開鍵(`~/.ssh/id_rsa.pub`)は使える? 2. S: 使えないよ となり認証が行えなくなります。 公開鍵ファイルが無い場合は、1, 2 を飛ばして 1. C: この公開鍵で認証するよ。認証用のデータはこれ 2. S: 認証成功したよ となり認証が行えます。この時の公開鍵は秘密鍵ファイルから取り出した物が使われます。