問題
プログラミングスクールのチーム開発で、最初に自分が自動デプロイ担当になって、チームの中で自分しかcapistranoでの自動デプロイができなかった。
他のメンバーが自動デプロイしようとすると、
Net::SSH::AuthenticationFailed: Authentication failed for user ec2-user@xx.xxx.xxx.xxx
というエラーが出てしまう。
この問題を今日チームで解決できたので、備忘録を書いておこうと思う。
解決方法
- 自動デプロイできるメンバーがpemファイルを他のチームメンバーに共有
- pemファイルを受け取ったチームメンバーが、pemファイルを~/.sshディレクトリに配置する
1. pemファイルをチームメンバーと共有する
このやり方がわからなくて、チームmtgでもみんなで頭を抱えた。
「pemファイルの共有ってどうやるんだ?」
メンバーのうちの1人がこの記事を見つけてくれた。
https://pc-karuma.net/mac-finder-show-all-files/
最初、pemファイルは、チームのEC2インスタンスを作る時にAWSを操作した自分の「ダウンロード」フォルダに入ってるのかと思ったが、実際はpemファイル隠しファイルに配置されていて見れなくなっていた。
この記事には隠しファイルを表示させるコマンドが書いてあります。
https://pc-karuma.net/mac-finder-show-all-files/
隠しファイルを表示させるコマンド
$ defaults write com.apple.finder AppleShowAllFiles TRUE
設定を反映させるために「Finder」プロセスを終了させる必要があるらしい
$ killall Finder
この2つの操作で隠しファイルにあったpemファイルを見れるようにしてから、メールにpemファイルを添付してメンバーに送った。
pemファイルとは?
pemファイルはいつどの段階で作ったかというと、AWSのEC2インスタンスを作成した時に、「キーペアをダウンロードする」という工程があったと思うが、その時ダウンロードしたファイルこそがpemファイルだ。
キーペアはEC2インスタンスにSSHでログインする際に必要となる「秘密鍵」のこと。
2. 各チームメンバーが、pemファイルを、~/.sshディレクトリに配置する
メールを受け取ったメンバーは送られてきたpemファイルを~/.sshディレクトリに配置した。
その状態で次の自動デプロイのコマンドを実行したら問題なく自動デプロイできた。
# アプリケーションのディレクトリで実行する
$ bundle exec cap production deploy
参考記事
MacのFinderで隠しファイル・隠しフォルダを表示する方法
https://pc-karuma.net/mac-finder-show-all-files/