いつも使っている公開鍵 でアクセスできる Amazon EC2 インスタンスを立ち上げる方法について解説します。
いつも使っている公開鍵とは GitHub に登録しているものを想定しています。
また、 使用する AMI は ubuntu 18.04 のもの想定しています。
AWS コンソールのダッシュボードは 2020/05/22 に私がアクセスした時のものを想定しています。
EC2 インスタンスへのアクセスにいつもの公開鍵を使うようにすることで、AWS のダッシュボードで生成したキーペアを管理する手間を省くことができます。
GitHub に登録している公開鍵について
GitHub に登録している公開鍵は、 https://github.com/ユーザー名.keys
という URL で text/plain
でアクセスできます。複数の公開鍵を登録している人は複数行で出力されます。
$ curl https://github.com/kamataryo.keys
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAFd05sWXhWHfY2ciIkghahLY+YLJKvPuRYWUVm4buBrKvDhIgYV6pj5g/M5jTwSr7lS9nx7DV/B+fGh92dOmj/7HAGaByWXTsIHdBsQnCO0Qbu8xbzTbewIYsClfVf5XWagbIHQx02PQv9mlUsBlCaJxr0ZS8gudCRDgOPil/AdlSj4RQ==
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeivU3S06V2FFYU1a6ekotDU1jeB5F9F3Nd9XD5OSg6pSFSZVcEticSFqSadRmhvTzIKfFihLVlX3aGkEbuj9U705+TSViiSm5xz0R/00UxQMq/iY9by7r8W1oqgCkbupEdHo6ltfEAjFmrYiVKcAuWooIvKb+0DYJBUX9+xCDvaVHynifw586G/TnzBLkwpS93BcDNYYagu1u1Aaik5lXC1tSyzzKqpGaER5ZDVlMSSSa82at2mGIJsGXb/u4D7gPrmX3zgCSviCcCfyTIbk+m9nKg2FAi4uy2yJAvao4y+GpHQk+KIvcKS/os6z/KJi09CA7eTAtYyawffcijfR7
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCgz7nsId0wHKy5qL3CL9qVuiAoP7INZJ1QPvYzkhGLPhZF8DxPcmdb046kWQFYcLUixKDCVByXvv60UDBq56cNGcFxnKSkfSfyBoEXqLY4V4gMlq+gA21D0ddhK7/3kc+HHf8jaEU5wBs2K3oG9KiDnRvHvXvCjanzjDZYS6CrywLjkLKO+0KzS3NwLk2CTH+cDOoR4Vlo5q4PdlANU+XcwIYQzRC8ieiOq8zycH0m60bMCJ+5AY+xqzjrWcsKy/aAHym/Jlp1iyZEbBKV22MivTlb/hGSpaATmSJ0Hdv0D8dTLgRmoj4/nf1hjAEAjsmBPzG39ue6+dJnrV/6BBAH
起動テンプレートの作成
今回は Amazon EC2 の起動テンプレートという機能を使い、インスタンス起動時に GitHub から公開鍵を取得して登録します。
https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#CreateTemplate:
EC2のダッシュボードまたは上記のリンクから起動テンプレートの作成画面に移動して、必要な情報を埋めてください。必須の項目は 起動テンプレート名 のみです。

キーペア の項目は、起動テンプレートに含めないでください
という値を選んでおくと使い回しの秘密鍵を使わせないで済むのでセキュアですね。

ユーザーデータの設定
高度な設定 という見出しをクリックしてトグルを開くと、ユーザーデータという項目があります。EC2 の起動時に実行されるされるスクリプトをここに記述することができます。
GitHub から公開鍵を取得して認可済みの公開鍵として登録するスクリプトを記述します。

#!/bin/bash
mkdir -p /home/ubuntu/.ssh
# 以下の URL はあなたのGitHub のユーザー名に置き換えてください
curl https://github.com/ユーザー名.keys >> /home/ubuntu/.ssh/authorized_keys
chmod 700 /home/ubuntu/.ssh
chmod 600 /home/ubuntu/.ssh/authorized_keys
シェバン(#!/bin/bash
)がないと正しく実行されないので注意してください。
これでテンプレートの設定は終了です。
テンプレートから EC2 を起動する
テンプレートの起動画面 から作成したテンプレートを選択できます。

テンプレートからインスタンスを起動すると、いつもの公開鍵でSSH接続できるものが立ち上がるはずです。
# <IPアドレス>はEC2インスタンスのものに置き換えてください
$ ssh ubuntu@<IPアドレス>