Gradle で Amazon EC2 に公開鍵をアップロードしてみる
Amazon EC2 では インスタンス生成時 もしくは その前に Key Pair を生成して クライアントに秘密鍵をダウンロードします。
EC2 インスタンスには その秘密鍵を使って SSH でログインするのですが、
実は その行為に 今まで ずっと違和感を感じていました。
と言うのも...
秘密鍵は 生成した端末にそっとしておき、公開鍵をサーバーにアップロードするべきだと思っていたので、
たとえ HTTPS で暗号化通信していたとしても、インターネット経由でダウンロードするというのは、あまり健全な行為とは思えなかったからです。
ところが Amazon EC2 でも AWS API を使えば、あらかじめクライアント側で作成した Key Pair の公開鍵を EC2 上にアップロードできるという情報を JAWS-UG Nagoya勉強会 第1回 で得たので 早速試してみました。
もちろん 前回の続きで Gradle で...
しかも この API を使えば、全てのリージョンに 同じ公開鍵をアップロードできるので とっても便利です。
デフォルト名 (id_rsa) の秘密鍵を使うのであれば
ssh -i ~/.ssh/ec2-ap-southeast.pem ec2-user@ec2.public.dns.nameのように リージョン毎に別々の秘密鍵を指定しなくても
ssh ec2-user@ec2.public.dns.nameだけでよくなります。
と言うことで...
早速 Gradle を使って EC2 に公開鍵をアップロードしてみましょう。
もちろん、端末には あらかじめ Key Pair が生成されていることが前提です。
また、AWS のアクセスキーの設定については 前回のエントリーを参照してください。
用意する build.gradle はこんな感じ...
あとは
gradle -PkeyName=bluepapa32@HOME -PpublicKeyFile=$HOME/.ssh/id_rsa.pub ec2-import-keypairのように
- keyName
- publicKeyFile
実行したら、実際にアップロードされたか AWS Management Console で確認してみましょう。