事象
Capistranoでのデプロイ時、CircleCI仮想環境からEC2へのSSH接続に失敗する
Net::SSH::AuthenticationFailed: Authentication failed for user *****@*************
前提
CircleCIの導入については以下の記事を参考にさせていただいたので、
記事の内容通りに実施してSSHが失敗したという前提で進めていきます。
CircleCI + Capistrano + AWS(EC2) + Railsで自動デプロイしてみた
結論
CircleCIに設定していた環境変数(PRODUCTION_SSH_KEY)が誤っておりました。
.circleci/config.yml内の記述-add_ssh_keys:によって、
CircleCIのコンテナ上に作成される秘密鍵の名称は「id_rsa_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX」であるため、
CircleCIに設定する環境変数は、「id_rsa_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX」が正解でした。
筆者はここで約2日悩まされることになりました。笑
※「XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX」の部分はfingerprintsの:なし文字列
詳細
筆者は以下のようにCircleCIに環境変数(PRODUCTION_SSH_KEY)を設定しておりました。
「~/.ssh/hoge_rsa_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX」
※hoge_rsaはローカルからEC2へSSH接続するための秘密鍵
原因調査のために、CircleCIコンテナにSSH接続。
※CircleCIコンテナへのSSH接続については公式ドキュメント「SSH を使用したデバッグ」をご参照ください
!!!!!!!!!!!!!!!!!!!!!!!!
id_rsa_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
だと、、、
「hoge_rsa_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX」じゃない、、、
まさか、、、
というわけでCircleCIの環境変数(PRODUCTION_SSH_KEY)に
「id_rsa_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX」を設定し直したところ、
無事にCircleCI仮想環境からEC2へのSSH接続およびCapistranoでの自動デプロイに成功しました。🎉