[EC2]SSHの秘密鍵をAWSからダウンロードするのはおかしい

※当記事は2015年にQiitaに投稿した記事を再編集したものです

若い頃にSSHのキーペアはローカルで作って公開鍵だけサーバに転送するんだよって誰かに教わりました。
「秘密」鍵なので基本的には漏洩しないように余計な転送は避けるのがベターということです。

ローカルマシンでキーペアを作成する

キーペアの要件
サポートされているタイプ:RSA および ED25519。Amazon EC2 は DSA キーを受け付けません。
Windows インスタンスでは、ED25519 キーはサポートされていません。
サポートされる形式:
OpenSSH パブリックキー形式 (~/.ssh/authorized_keys 形式) EC2 Instance Connect API の使用中に SSH を使用して接続する場合は、SSH2 形式もサポートされます。
SSH プライベートキーファイル形式は PEM でなければなりません
(RSA のみ)Base64 でエンコードされた DER 形式
SSH パブリックキーファイル形式 [RFC4716] で指定
サポートされているキーの長さ 1024、2048、および 4096。EC2 Instance Connect API の使用中に SSH を使用して接続する場合は、長さ 2048 および 4096 がサポートされます。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws
$ KEYNAME=key.pem
$ ssh-keygen -t rsa -f ${KEYNAME}
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in key.pem.
Your public key has been saved in key.pem.pub.
The key fingerprint is:
29:d5:92:6b:e8:f7:43:87:14:2d:13:4a:d7:de:07:ba hoge@hogehoge.local
The key's randomart image is:
+--[ RSA 2048]----+
|        . o+     |
|       . =+ o .  |
|        = .= o . |
|       o +. o . .|
|      o S. . . . |
|     . o  o E    |
|      . .. .     |
|       . ..      |
|          ..     |
+-----------------+

AWSに公開鍵をインポートする

$ aws ec2 import-key-pair --key-name ${KEYNAME} --public-key-material file://${KEYNAME}.pub
{
    "KeyName": "key.pem",
    "KeyFingerprint": "b1:4c:6c:bf:de:fc:89:ce:6c:5a:bc:ae:0a:a9:da:95"
}

以上で公開鍵が登録できました。


この方法なら最初からキーペアにパスフレーズを設定することもできます。
セキュリティグループでGlobalからSSHを許可してるインスタンスにはパスフレーズ付きの鍵、VPC内でのみSSHを許可してるインスタンスにはパスフレーズなしの鍵、みたいな使い分けもいいですね。
その場合、VPC内でのみのインスタンスに設定する鍵はGlobalから許可してるインスタンスで作って登録するのがいいんでしょうかね。

コメント

タイトルとURLをコピーしました