[小ネタ]AWS CodeCommitのSSHキー登録~接続確認をサッと終わらせたいのでシェルを作った。
はじめに
こんにちは。大阪オフィスの林です。
みなさま、CodeCommitのSSHkey登録~接続確認とかってどうされてますか?(めちゃザックリな問いかけ(-_-;))
SSHのkey作成から始めると考えると、おおむね下記のステップを踏む必要があると思います。
鍵など一回作れば飛ばしてしまえる作業ももちろんありますが初回は上記に書いた作業が必要になります。
手間ですよね。僕は手間と感じたので自分用/自分備忘用ではありますがシェルを作成したので小ネタとして共有したいと思います。
なお、こちらにもCodeCommitのGitリポジトリへの接続方法はまとまっておりますので併せて参照ください。
事前準備
環境準備
シェルの中身
ちなみに、シェル化といってもエラー処理も入れてなければ分岐もないですし、変数定義してコマンドをまとめているだけなので大したものではないです。わざわざシェルにせず、コマンドをペタペタコピペして使ってもらっても大丈夫です。
#key Create ################################################### # #今回「test-ssh-key」という名前でSSHの鍵を作ります。環境に応じて下記の「test-ssh-key」の部分を変えてください。 #対象のIAMユーザーの名前を「codecommit-test-user」としています。環境に応じて下記の「codecommit-test-user」の部分を変えてください。 #awscliは環境に応じて「--profile」オプションなどを入れてください。 # ################################################### keyname=~/.ssh/test-ssh-key codecommituser=codecommit-test-user ssh-keygen -f $keyname aws iam upload-ssh-public-key --user-name $codecommituser --ssh-public-key-body "$(cat ${keyname}.pub)" keyid=`aws iam list-ssh-public-keys --user-name $codecommituser | jq -r '.SSHPublicKeys[].SSHPublicKeyId'` #SSH Connect ConfigFile Create ################################################### # #ssh接続用のConfigファイルを作成しています。 # ################################################### touch ~/.ssh/config echo "Host git-codecommit.*.amazonaws.com" >> ~/.ssh/config echo " User $keyid" >> ~/.ssh/config echo " IdentityFile $keyname" >> ~/.ssh/config chmod 600 ~/.ssh/config sleep 10s #SSH Connection Check ################################################### # #「git-codecommit.ap-northeast-1.amazonaws.com」に対して、作成した鍵でSSH接続できるか確認しています。 # ################################################### ssh git-codecommit.ap-northeast-1.amazonaws.com
やってみた
実際にシェルを叩いてみます。
※ユーザーや鍵はすべて削除済みなので今回はマスクせずに書きます。
sh ssh-reg.sh
パスフレーズの入力を求められるので任意のパスフレーズを入力します。
Generating public/private rsa key pair. Enter passphrase (empty for no passphrase):
もう一回同じパスフレーズを入力します。
Enter same passphrase again:
鍵が出来ます。
Your identification has been saved in /home/hayashimasaya/.ssh/test-ssh-key. Your public key has been saved in /home/hayashimasaya/.ssh/test-ssh-key.pub. The key fingerprint is: SHA256:mXuJWtjhVmGuHQfE3tc2txeyQF3sdIImS+Su/e65Dw0 hayashimasaya@HL00556 The key's randomart image is: +---[RSA 2048]----+ | oo ..o. | | o+.o..o.| | o*= oo.| | *o+...++| | S = E.o.=| | + X + + ..| | . X = . . .| | + . . o | | . o*o. | +----[SHA256]-----+
MFA有効にしている場合などはMFAのコードを求められるので入力します。
Enter MFA code for arn:aws:iam::xxxxxxxxxxxx:mfa/cm-hayashi.masaya:
MFAコード入力後、下記のような結果が表示されます。
{ "SSHPublicKey": { "UserName": "codecommit-test-user", "Status": "Active", "SSHPublicKeyBody": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQXz/nrvQ1h2BYg29B6CHp0gk1vwaOCk33hAuEmbdCwalaanmy4Ml0Gy8EQSEisPb2Eu3zPywMDJ6qpYnU3W2++v43vQGTxK5EaYFXIw58FHRS3MAndgGsdVOx7zQwIhcsjGMOKUNnnaedKcCubHAbGdAGR0TJ/40Qi4XeGGT7UT3II+Mgr3Ufs2Pp4GYVcA8HhST4p4xETP7egStaZN0bX+0U4z/wIDbOZwzaVuxHNvpXyfKUjYUT8ZhzsGlhu1RIp3kHAWaxUubhQXAEf7kcwIyB+XLb2/J4X+SjOk/HvQqVDv4QSb05f5vfg3ujI/7QgoiZ0NGKc5qP+l/PWnJx hayashimasaya@HL00556", "UploadDate": "2020-01-24T04:03:15Z", "Fingerprint": "ad:45:2f:e4:7b:03:b3:10:f7:00:fa:8d:4c:a5:8b:26", "SSHPublicKeyId": "APKAXIPMAVWMVZPOQ6NV" } }
初めに入力したパスフレーズを入力します。
Enter passphrase for key '/home/hayashimasaya/.ssh/test-ssh-key':
「You have successfully authenticated over SSH.」とメッセージが表示され接続できたことが確認できます。
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. Connection to git-codecommit.ap-northeast-1.amazonaws.com closed.
一応マネージメントコンソールから見てみても登録されていることが分かります。
確認のためcloneしてみる
gitコマンドでcloneしてみます。
#CodeCommitのリポジトリ名を「test-connect-repo」としています。環境に応じて下記の「test-connect-repo」の部分を変えてください。 #ローカルリポジトリの場所と名前を「~/local-my-repo」としています。環境に応じて下記の「~/local-my-repo」の部分を変えてください。 git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test-connect-repo ~/local-my-repo
初めに入力したパスフレーズを入力します。
Cloning into '/home/hayashimasaya/local-my-repo'... Enter passphrase for key '/home/hayashimasaya/.ssh/test-ssh-key':
問題なくcloneも出来てますね。
remote: Counting objects: 3, done. Receiving objects: 100% (3/3), 219 bytes | 73.00 KiB/s, done.
まとめ
シェル化自体がどの程度役に立つのか分かりませんが、自分自身の知識の整理や理解の深堀にもつながりましたので結果的に良かったかなと思っています。ここに書いた情報が何かしらの参考になれば幸いです!
以上、大阪オフィスの林がお送りしました!