茶太郎の日記

クラウドやコンテナ辺り中心に技術をやっていきます

AWSで秘密鍵・公開鍵を複数環境で利用する

AWSを使い始めて、EC2でインスタンスを立ち上げることができたけど、
この先何しようか?とか、もっとうまく活用したい、という方向けに
知ってること、調べたことなどのTipsをアウトプットしていきたいと思います。

秘密鍵・公開鍵を複数環境で利用する

新しい環境でEC2を作成する際にAWS側にキーペアがない場合は、
AWS側でキーペアを作成し、秘密鍵をダウンロードしてそれを使ってsshするかと思います。

しかしこのキーペアが利用できる範囲はap-northeast-1などのリージョンに限られます。
複数のリージョンを使い分けたい場合や、サービス等によっては複数のアカウントの環境もある場合、
(サービス数)×(利用リージョン数)
ものキーペアを発行することになり、ログインするときにどの鍵を使うかの管理が煩雑になりそうです。

そうならないためにはAWS側にキーペアの作成に作成させるのではなく、
キーペアのインポートを利用すると1つのキーペアを複数環境に配置することが可能です。

GUI(マネジメントコンソール)の場合

EC2サービスの画面にある ネットワーク & セキュリティ > キーペアのメニューを開きます。

f:id:chataro00:20180331151016p:plain:w100

するとキーペアの作成の他にキーペアのインポートというメニューがあります。

f:id:chataro00:20180331151716p:plain:w200

そちらをクリックすると以下のような画面が出てきます。

f:id:chataro00:20180331151918p:plain:w300

キーペア名はAWS上で表示される名前なので任意の名前を決めてください。
インポート方法としては2種類あり、

  • パブリックキー(公開鍵)をファイルとしてアップする方法
  • パブリックキー(公開鍵)の内容をテキストボックスにコピペする方法

があります。

環境にもよるかもしれませんが、エクスプローラーで公開鍵のファイルを選ぶのは面倒なので、私は後者がオススメです。
また、間違っても秘密鍵のほうをアップロードしないようにしましょう。
(多分エラーが出てアップロードされないだけで危険はないかと思いますが)

AWS CLIの場合

AWS CLIからであればもっと簡単に実施できます。
AWS CLIがインストール済の前提ですが、そちらも後日記事にしたいと思います。

ユーザーのデフォルトの鍵を使ってhogehogeというキーペア名で作る場合は以下のようになります。

$ aws ec2 import-key-pair --key-name hogehoge --public-key-material "`cat ~/.ssh/id_rsa.pub`"

コマンドが成功していれば以下のような出力が出ます。

{
    "KeyName": "hogehoge",
    "KeyFingerprint": "(フィンガープリント)"
}

あとは実際に作成されたキーペアを使ったEC2インスタンスにログインできれば成功です!