本記事では、AWSマネジメントコンソールからEC2 Instance Connectを使用して、Amazon Linux 2に接続する手順を紹介します。
EC2 Instance Connectのサービス概要についても説明しますね。
本記事の内容
- EC2 Instance Connectのサービス概要
- EC2 Instance Connectの接続方法
もくじ
EC2 Instance Connectとは
EC2 Instance Connectは、AWSマネジメントコンソールなどからEC2にSSH接続できるサービスです。
主なサービス概要は以下のとおり。
- 接続時にIAMの権限を使用する
- 1回限り(60秒間のみ有効)のSSH公開鍵がInstance Metadataに格納され、それを使用してセキュアに対象のEC2にSSH接続できる
- SSHキーペアの管理が不要
- 接続先EC2にパブリックIPv4アドレスが必要(NATなどを使用しない場合)
- 接続先EC2でサポートされているOSはAmazon Linux 2(全バージョン)とUbuntu 16.04以降
- 接続履歴がCloudTrailに記録される
- EC2 Instance Connect自体は無料
【公式】EC2 Instance Connect を使用した Linux インスタンスへの接続
EC2 Instance Connectを使用するための準備
本記事では、AWSマネジメントコンソールからEC2 Instance Connectを使用して、Amazon Linux 2に接続します。
クライアントPCにEC2 Instance Connect CLI (mssh) をインストールすれば、クライアントPCから直接SSHで接続できますが、今回はふれません。
EC2作成
まずはEC2 (Amazon Linux 2)を構築します。
この際、必ずパブリックサブネットに配置してパブリックIPアドレスを付与しましょう。(NATなどを使用した環境については今回ふれません)
EC2作成方法については、こちらの記事をご覧ください。↓
-
【AWS】EC2でAmazon Linux 2を構築しSSH接続してみよう
続きを見る
IAMユーザーの権限設定
AWSマネジメントコンソールにログインしているIAMユーザーにEC2InstanceConnect
ポリシーを設定します。
AdministratorAccess
かPowerUserAccess
が付与されているIAMユーザーであれば、上記ポリシーの設定は不要です。
接続先のEC2に「ec2-instance-connect」パッケージをインストール
EC2 Instance Connectを使用してEC2に接続するためには、接続先EC2にec2-instance-connect
パッケージをインストールする必要があります。
Amazon Linux 2のVersion 2.0.20190618以降ではデフォルトでインストール済みです。
以下コマンドでパッケージがインストールされていることを確認できます。
$ yum list installed | grep ec2-instance-connect
ec2-instance-connect.noarch 1.1-15.amzn2 installed
Version 2.0.20190618より前のAmazon Linux 2を使用している場合は、以下コマンドでインストールします。
$ sudo yum install -y ec2-instance-connect
セキュリティグループの設定
接続先EC2のセキュリティグループで、インバウンドルールに以下を設定します。
- タイプ:SSH
- ソース:3.112.23.0/29
「3.112.23.0/29」は東京リージョンでEC2 Instance Connectを使う場合に、トラフィックの許可が必要なIPレンジです。(2022/3/18時点)
このIPレンジは、AWS社が公開しているAWSの各サービス向けに発行されたパブリックIPレンジで確認できます。(参考:【公式】AWS IP アドレスの範囲)
ちなみに、以下のcurl
コマンドからもこのIPレンジを取得可能です。取得結果の整形にjq
コマンドを使用するので、未インストールの場合はjq
をインストールします。
$ yum list installed jq || sudo yum install -y jq
$ curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | \
jq '.prefixes[] | select(.region == "ap-northeast-1" and .service == "EC2_INSTANCE_CONNECT")'
出力結果
{
"ip_prefix": "3.112.23.0/29",
"region": "ap-northeast-1",
"service": "EC2_INSTANCE_CONNECT",
"network_border_group": "ap-northeast-1"
}
EC2 Instance Connectで対象EC2に接続する
それでは、EC2 Instance Connectで対象のEC2接続してみましょう。
EC2 Instance Connectで接続
AWSマネジメントコンソールのEC2画面を開きます。対象EC2をチェックして「接続」をクリックします。
「EC2 Instance Connect」をクリックします。「ユーザー名」については、もし対象EC2でec2-userを削除して別のログイン用ユーザーを作成している場合は、そのユーザー名を入力します。
最後に「接続」をクリックします。
ブラウザ上にターミナル画面が表示されます。
EC2 Instance Connectを使用した感想
SSHクライアントと同じように問題なくコマンド操作ができます。
ただし、AWSマネジメントコンソールから接続した場合は、クライアントPCからのコピペは使えません。
EC2 Instance Connectの画面内であればコピペ可能です。以下の通り文字列を選択してコピー、右クリックでペーストできます。
注意点として、コピーした文字列に改行があるなしに関わらず、ペースト時の確認ダイアログは表示されません。コピペは慎重に操作する必要があります。
AWSマネジメントコンソールからEC2に接続する別の方法として「セッションマネージャー」が有名ですね。
こちらはクライアントPCからコピペが可能です。
EC2をコマンド操作する際にコピペができないと、作業効率が悪くなるだけではなく作業ミスにも繋がります。今後のサービスアップデートで、クライアントPCからコピペが可能になると良いですね。
CloudTrailに記録された接続履歴を確認する
EC2 Instance ConnectでEC2に接続を開始した履歴は、CloudTrailに記録されます。
履歴の確認手順は以下のとおり。
- CloudTrailのナビゲーションペインから [イベント履歴] をクリック
- [イベントソース] に [ec2-instance-connect.amazonaws.com] を入力して検索する
【公式】AWS CloudTrail を使用して、EC2 Instance Connect 経由で接続するユーザーを監査する
なお、EC2 Instance Connectで対象EC2に接続したあとの、OSで操作したコマンド履歴はCloudWatch LogsやS3には保存できません。
EC2 Instance Connectの使い方:まとめ
EC2 Instance Connectは、AWSマネジメントコンソールなどから手軽にAmazon Linux 2に接続できるのは素晴らしいですね。SSHキーペアの管理が不要という点も魅力的です。
なお、現時点でコマンド操作においてはセッションマネージャーのほうが使い勝手が良いと感じました。
当記事が参考になれば幸いです。