AWSのEC2では通常AWS側で生成した暗号鍵を使ってSSH接続すると思うけど、今回ローカルPCで作成した自前の暗号鍵を使う必要があったので、その手順のメモ。

流れとしては下記3ステップ。

  1. ローカルでRSAのキーペアを作成する
  2. EC2にパブリックキーをインストールする
  3. 個別のEC2インスタンスにキーをアタッチする

以上。とても簡単。

以下、手順(MacのターミナルとAWSの管理コンソールでやります)。

手順1. ローカルで暗号鍵を作成する

SSH鍵を管理するディレクトリに移動

cd ~/.ssh

RSA暗号鍵を生成する

ssh-keygen -t rsa -f id_rsa_ec2

ssh-keygenは暗号鍵作成コマンドで、-fオプションの引数でファイル名を任意で設定できる。

デフォルトの鍵ファイル名はid_rsaになるので、複数管理したい場合は名前をつけておくのがいい(上記の例ではid_rsa_ec2id_rsa_ec2.pubというキーペアが生成される)

上記コマンドの実行結果がこちら。

MacBook:.ssh ryokonishi$ ssh-keygen -t rsa -f id_rsa_ec2
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):  (パスフレーズを設定) 
Enter same passphrase again: (確認用パスフレーズを入力)
Your identification has been saved in id_rsa_ec2.
Your public key has been saved in id_rsa_ec2.pub.
The key fingerprint is:
SHA256:5NE5bn6/B2GUvGMh7M1IZjR /MZKxfetU Ec55diUgo [email protected]
The key's randomart image is:
 ---[RSA 3072]---- 
|           oo. . |
|         . o*o=. |
|        oE =.Bo==|
|       o o..=.@=O|
|        S oo =.*X|
|         o  o.o=.|
|          . .  . |
|           . . ..|
|              oo |
 ----[SHA256]----- 

これで .ssh 配下にid_rsa_ec2id_rsa_ec2.pubというキーペアが生成されている。

手順2. EC2に登録

AWSにパブリックキーを登録するので、AWS管理画面のEC2のページに移動する。

EC2 > キーペア(左サイドバーから) > アクション > キーペアをインポート

scr2-1

「名前」には任意のキーペア 名を入力。
「キーペアファイル」にはpublicキーの中身をコピー&ペーストする。
その後「キーペアをインポート」をクリックして完了する。

この時点では個別のインスタンスにアタッチされていない点に注意。

手順3. EC2インスタンス作成時に選択できるようになっている

試しに新規EC2インスタンスを作成してみると、起動直前のページで、先ほどインポートしたキーペアが選択できるようになっているはず。

scr3-1

基本的にはEC2インスタンス作成時にアタッチしておくことになる。

既存のEC2インスタンスにパブリックキーをアタッチするには?

インスタンス内部でパブリックキーを追記する方法がある。

EC2インスタンス内の.ssh/authorized_keysファイルに、任意のパブリックキーを追記することで、対応したプライベートキーを使用してEC2インスタンスへSSH接続が可能になる。

これはつまり、既に作成されたEC2インスタンスに、コンソールもしくはCLIのみを使ってパブリックキーを追加できないということ。すでに発行されたキーペアの力を借りて、追加のパブリックキーを登録することだけが可能みたい。

以上、いろいろ調べながらやったので、結構時間かかってしまった。