体はドクペで出来ている

インフラ、Goの割合が多い技術ブログ

AWS CodeCommitでSSH認証するための手順

始めに

最近社内でCodeCommitを使う機会があったのですが、SSH認証の手順について何度か聞かれたので手順を残します。

環境は Windows Subsystem for Linux (Ubuntu) が前提ですがLinux, Macであれば基本的に同じ操作でできると思います。

手順

ssh-keygenにより鍵ペアが作成されていることを前提とします。無い場合はググると記事が大量に出てくるのでお好みのやり方で生成して下さい。なお本件に限ったことではありませんが秘密鍵ファイルのパーミッション400 に設定しておかないとエラーになります。

IAMへの公開鍵登録

まずは下の画像のようにIAMでAWS側に公開鍵(通常は id_rsa.pub ファイル)を登録しSSH Key IDを控えます。末尾のホスト名は有っても無くてもどちらでも大丈夫です。

f:id:ryo-yamaoka:20180817152836p:plain
Uploadボタンを押す

f:id:ryo-yamaoka:20180817152839p:plain
公開鍵 (id_rsa.pub) の内容を張り付ける

f:id:ryo-yamaoka:20180817152842p:plain
SSH Key IDを控える

SSHの設定

そして ~/.ssh/config ファイルに次の書式を追記します。もし無ければ新規作成して下さい。 Host の * はリージョン名が入りますが通常はこのように全リージョンが対象で問題無いと思います。 User は先に控えたSSH Key IDを指定し IdentityFile は登録した公開鍵とペアになる秘密鍵(通常は id_rsa ファイル)の場所を指定します。

$ cat ~/.ssh/config
Host git-codecommit.*.amazonaws.com
  User APKAJRUAYFVEAW444ZVA
  IdentityFile ~/.ssh/id_rsa

ここまで入力したら ssh -T git-codecommit.ap-northeast-1.amazonaws.com コマンドを叩いて動作確認してみて下さい。下記のように表示されれば認証OKなので git clone 等ができるようになっているはずです。

$ ssh -T git-codecommit.ap-northeast-1.amazonaws.com
You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit. Interactive shells are not supported.Connection to git-codecommit.ap-northeast-1.amazonaws.com closed by remote host.