皆様、お世話になっております。鈴木と申します。
今回はAWS CloudFormationを使用してキーペアを作成していきたいと思います。
1.目次
2.要件
- CloudFormationでのキーペアの作成
3.キーペアについて
AWSキーペアは、Amazon EC2インスタンスへの安全なアクセスを提供するために使用される公開鍵暗号方式の一種です。キーペアは公開鍵と秘密鍵の2つの部分で構成されており、これらを使ってEC2インスタンスへの認証を行います。
秘密鍵と公開鍵について
鍵の種類 | 説明 | 保管場所 |
---|---|---|
秘密鍵 | 公開鍵で暗号化されたデータを復号するために使用 | 安全な場所(ユーザー側) |
公開鍵 | データを暗号化するために使用され、自由に配布可能 | EC2インスタンス側 |
4.構成図
- CloudFormationを使用してキーペア(公開鍵、秘密鍵)を作成します。
- Systems Managerに保存されている秘密鍵を取得
- EC2にキーペア(公開鍵)をアタッチ
今回はSSMでのHTTPSでの接続となるため使用することはないが、万が一SSH接続する際にはこれで接続が可能になる。
5.ソースコードおよび詳細
5-1.ソースコード
YAMLにて記載しております。
AWSTemplateFormatVersion: "2010-09-09"
Description: "EC2 instance with new key pair"
Resources:
NewKeyPair:
Type: 'AWS::EC2::KeyPair'
Properties:
KeyName: naoki-kp-ec2
Tags:
- Key: Name
Value: naoki-kp-ec2
5-2.ソースコード詳細
今回はRSA(キーペアのタイプ)で作成になりますが、デフォルトでRSAタイプになるため下記には記述しておりません。
使用するオプション | 設定値 | 説明 |
---|---|---|
Type | AWS::EC2::KeyPair | キーペアを作成するためのリソース定義 |
KeyName | naoki-kp-ec2 | EC2インスタンスプロファイルにロールをアタッチ |
Tags | Key: Name Value: naoki-kp-ec2 |
キーと値を追加 |
6.結果
6-1.公開鍵
AWS CloudFormationで実行することでEC2のキーペアのコンソール画面にて作成を確認できました。
これでEC2にキーペアをアタッチすることが可能になります。
6-2.秘密鍵
通常はインスタンス作成時に秘密鍵をダウンロードして自身の端末に保存して管理しますが、CloudFormationを使用する場合、Systems Managerのパラメータストアに保存されます。
下記のように秘密鍵の値が表示されていることも確認できました。
(セキュリティ上隠しておりますが,,,)
6-3.秘密鍵の取得
実際にSSHで使用する際は、秘密鍵の内容をテキストファイルに貼り付け、拡張子を.pemにして保存することで利用可能です。
またこの場合は権限を変えたほうがセキュリティ的に良いです。
例で名前がprivate_key.pemの場合は所有者のみの読み取りにしたほうが良いので400に設定します。
chmod 400 private_key.pem
CLI等でも利用できる方法はあると思いますが、わかりやすく手動でローカルに保存する方法の説明になります。
6-4.EC2へのアタッチとテスト
今回テストでEC2へSSH接続をしてみたいと思います。
通常通りEC2を立ち上げ、キーペアを設定します。
続いてSSH接続ツール(今回はTera Term)を開きます。
ホスト名をEC2のパブリックIPアドレスを指定します。
続いてユーザー名と秘密鍵を指定する必要があります。
ユーザー名はデフォルトがec2-userなので今回はこのままにして、秘密鍵を指定します。
以下で接続を確認できました。
7.感想
今回の構成ではSSMを使用する方法を採用していますが、キーペアを使用する方法についても改めて理解できました。以前はCloudFormationではキーペアを作成できなかったとされていましたが、現在ではキーペアを作成できることが分かり、さらに秘密鍵の保存先が通常の方法とは異なることも学べたのが良かったです。