capistranoでec2インスタンスにgithubで管理しているリポジトリの内容をデプロイしたかったときに起きたエラーの話です。
本番環境のEC2インスタンスがgithubと接続できるためにssh-keygen -t rsa
で、
~/.ssh
ディレクトリにid_rsa
とid_rsa.pub
を作成しました。
本番環境のEC2インスタンスで生成したid_rsa.pubをgithubに登録しようと思ったのですが、
すでにテスト環境のEC2インスタンスのid_rsa.pubをgithubに登録していたので、
テスト環境のEC2インスタンスのid_rsaを本番環境のEC2インスタンスにコピーして代用することにしました。
しかし、それで本番環境のECインスタンスにデプロイしようとしても、
githubの通信の部分でpermission denied
になってしまいました。
00:00 git:check 01 git ls-remote --heads git@github.com:basicinc/mkst.git 01 Permission denied (publickey). 01 fatal: Could not read from remote repository. 01 01 Please make sure you have the correct access rights 01 and the repository exists.
原因はわからなかったのですが、試行錯誤の中で、
本番環境のEC2インスタンスで生成したid_rsa.pubを削除するとgithubと通信できるようになりました。
結果的に、
違うEC2インスタンスで生成されたid_rsaとid_rsa.pubが本番環境のECインスタンスにあったせいで通信できなかったのですが、
なぜ通信できなかったのかしっくりきていません。
公開鍵暗号方式は、「公開鍵で暗号化されたものを秘密鍵を使って復号化する」と思っていたのですが、
公開鍵で暗号化されたものを復号化するとき のどこかの処理で、 秘密鍵と公開鍵を利用しているということでしょうか?
近しい現象は以下のリンクのように思うのですが、
リンク先にある「おそらく公開鍵の計算をサボるために、公開鍵がすでに存在したら読み込むといった感じで使っているのではないかと思います。」の「計算」の意味がわかっていません。(http://blog.yuryu.jp/2014/01/ssh-auth-fails-with-different-public-key.html)
動きはしたのですが、理由がわからなかったので質問いたしました!
回答よろしくお願いいたしますm(_ _)m
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。