Capistranoでデプロイしようとした時にSSH認証エラーが出ました
プログラミングスクールの課題で作成したアプリを修正してEC2へデプロイしようとしたら
以下のエラーが出たため解決法を記しておきます。
terminal
# プロジェクトのローカルディレクトリで自動デプロイを実行
$ bundle exec cap production deploy
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as ec2-user@ElasticIP: Authentication failed for user ec2-user@ElasticIP
Caused by:
Net::SSH::AuthenticationFailed: Authentication failed for user ec2-user@ElasticIP
Tasks: TOP => rbenv:validate
(See full trace by running task with --trace)
エラーの原因
再起動するとSSH鍵が消えてしまうみたいなので .sshディレクトリにて以下のコマンドでSSH鍵を登録し直します。
terminal
.ssh $ ssh-add ~/.ssh/hoge.pem
# 以下のように表示されたら
Identity added: /Users/komaki/.ssh/hoge.pem (/Users/komaki/.ssh/hoge.pem)
再度 "bundle exec cap production deploy" を実行
再起動した後でも保持させるには...
以下のコマンドを使用すると、キーチェーンストア(鍵の保管庫)に鍵を登録して再起動後も保持してくれます。
terminal
.ssh $ ssh-add -K ~/.ssh/hoge.pem