LoginSignup
1
0

More than 3 years have passed since last update.

GithubとCapistranoへのキー設定

Last updated at Posted at 2021-02-15

Capistranoでデプロイするためのキー設定を行います。ここではgithubのリポジトリへDeployKeyを設定しない方法を紹介しています。デプロイ先のサーバー台数が増えてきた場合はサーバー個別にキー設定をするのは面倒なので、この方法が良いと思います。

この記事で使用しているCapistranoのバージョンは3.15.0です。

1. 自分のマシンのssh鍵を作成する

下記のコマンドを実行します。

$ ssh-keygen -t rsa

パスフレーズはセットしません。
これにより、~/.sshにid_rsaとid_rsa.pubが作られます。
id_rsaが秘密鍵、id_rsa.pubが公開鍵です。

2. 自分のマシンの「公開鍵」をgithubに登録する

作成したid_rsa.pubをgithubに登録し、ローカルからgithubへsshでアクセスできるようにします。設定方法は下記のgithubのドキュメントを参考にしてください。

3. githubにセットした公開鍵に対する秘密鍵を指定する

下記のコマンドを実行して、ssh-agentを起動し、秘密鍵のパスを指定します。

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_rsa

毎回入力するのは面倒なので、.zshrcや.bash_profileに登録しておくと便利です。

4. ローカルからデプロイ先へのアクセス設定をする

Capistranoにローカルからデプロイ先のアクセスするための設定を行います。

AWS EC2を利用する場合はAWSが発行したpemを使ってアクセスしますが、そのケースは下記のように設定します。もしすでにデプロイ先に自分のマシンの公開鍵をセットするなどして、アクセスできる場合はこの設定は不要です。

config/deploy/production.rb
set :ssh_options, {
  auth_methods: [ 'publickey' ],
  keys:         [ '~/.ssh/aws.pem' ],
}

上記はpemを~/.sshに配置したことを想定しています。それ以外の場所に設置した場合はそれにあわせて書き換えてください。

5. 確認

下記のようになれば成功です。

$ bundle exec cap production deploy:check
00:00 git:wrapper
      01 mkdir -p /tmp
    ✔ 01 ec2-user@xx.xxx.xx.xx 0.087s
      Uploading /tmp/git-ssh-a01f19cecd7277afb347.sh 100.0%
      02 chmod 700 /tmp/git-ssh-a01f19cecd7277afb347.sh
    ✔ 02 ec2-user@xx.xxx.xx.xx 0.082s
00:00 git:check
      01 git ls-remote git@github.com:username/sampleapp.git HEAD
      01 3c12f893e9804130cba2621d2920555fc7d2a4c3   HEAD
    ✔ 01 ec2-user@xx.xxx.xx.xx 2.070s
00:02 deploy:check:directories
      01 mkdir -p /var/rails/sampleapp/shared /var/rails/sampleapp/releases
    ✔ 01 ec2-user@xx.xxx.xx.xx 0.038s
00:02 deploy:check:linked_dirs
      01 mkdir -p /var/rails/sampleapp/shared/log /var/rails/sampleapp/shared/tmp/pids /var/rails/sampleapp/shared/tmp/cache /var/rails/sampleapp/shared/tmp/sockets /var/rails/sampleapp/shared/public/system /var/rails/sampleapp/shared/…
    ✔ 01 ec2-user@xx.xxx.xx.xx 0.115s
00:02 deploy:check:make_linked_dirs
      01 mkdir -p /var/rails/sampleapp/shared/config
    ✔ 01 ec2-user@xx.xxx.xx.xx 0.079s

6. 備考

forward_agentオプションについて

これに関するの記事を見ると、forward_agent: trueを設定しているものを見かけますが、今回試してみたところ、この設定はあってもなくても関係なくデプロイができました。Capistranoのバージョンにもよるのかもしれませんが、今回使用している3.15.0では不要であったため、記載していません。

公式ドキュメント

Github(SSH関連)
https://docs.github.com/ja/github/authenticating-to-github/connecting-to-github-with-ssh

Capistrano(認証関連)
https://capistranorb.com/documentation/getting-started/authentication-and-authorisation/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0