複数AWSアカウントのCodeCommitからgit cloneする際のssh設定についての覚書

More than 1 year has passed since last update.

複数のAWSアカウントのCodeCommitからgit cloneでコードを取ってくる必要があった。

その時にssh接続設定をどのように書けば良いか困ったため、調べたことの覚書。


CodeCommitへのssh接続設定

これは公式ドキュメントにある通り。


  1. ローカルで公開鍵、秘密鍵を生成

  2. AWSのIAMユーザに生成した公開鍵を登録

  3. ~/.ssh/configに以下のように設定


~/.ssh/config

Host git-codecommit.ap-northeast-1.amazonaws.com

User ***********   #IAMユーザの認証情報ページにある、手順2で登録した公開鍵に対応するSSHキーID
IdentityFile ~/.ssh/id_rsa   #手順1で生成した秘密鍵


gitclone

git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test_app


こう書くことで、Hostで指定したAWSのリージョンのCodeCommitからgit cloneする際に上記ssh設定が利用される。

AWSアカウントが一つだけの場合はこの書き方で問題なし。


複数のAWSアカウントへのssh設定

困るのは複数のAWSアカウントのCodeCommitを利用する場合。

AWSアカウントが違うということはssh認証に使うUser(SSHキーID)も違うことになるので、上記の書き方だと一つのアカウント以外にはssh認証で弾かれてしまう(※登録する公開鍵が違えば、IdentityFileも異なる)

そんな時どうするかと言うと、下記のように書くと良いらしい。


~/.ssh/config

# 1つ目のAWSアカウントに対するssh設定

Host aws1
HostName git-codecommit.ap-northeast-1.amazonaws.com
User *********** #IAMユーザの認証情報ページにある、手順2で登録した公開鍵に対応するSSHキーID
IdentityFile ~/.ssh/id_rsa #手順1で生成した秘密鍵

# 2つ目のAWSアカウントに対するssh設定
Host aws2
HostName git-codecommit.ap-northeast-1.amazonaws.com
User *********** #IAMユーザの認証情報ページにある、手順2で登録した公開鍵に対応するSSHキーID
IdentityFile ~/.ssh/id_rsa #手順1で生成した秘密鍵



1つ目のAWSアカウントからgit_clone

# こう書く所を

# git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test_app

# このように書く
git clone ssh://aws1/v1/repos/app


つまり~/.ssh/configのssh設定に任意のHost名を付けた上で、git cloneする際にHost部分を置き換えれば良いということらしい。


終わりに

という訳で、複数AWSアカウントのCodeCommitからgit cloneする際のアカウントの使い分け方でした。

git cloneする度にHost部分を書き換えるのがちょっと面倒なので、他にもっと良い方法がないか知りたいところ。