AWS

【AWS】Amazon Linux 2にEC2 Instance Connectで接続してみた

【AWS】Amazon Linux 2にEC2 Instance Connectで接続してみた
エンジニア
EC2 Instance Connectを使用してみたいです。サービスの概要や使い方を教えてください。

本記事では、AWSマネジメントコンソールからEC2 Instance Connectを使用して、Amazon Linux 2に接続する手順を紹介します。

EC2 Instance Connectのサービス概要についても説明しますね。

 

本記事の内容

  • 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接続してみよう
【AWS】EC2でAmazon Linux 2を構築しSSH接続してみよう

続きを見る

 

IAMユーザーの権限設定

AWSマネジメントコンソールにログインしているIAMユーザーにEC2InstanceConnectポリシーを設定します。

AdministratorAccessPowerUserAccessが付与されている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で接続1

 

「EC2 Instance Connect」をクリックします。「ユーザー名」については、もし対象EC2でec2-userを削除して別のログイン用ユーザーを作成している場合は、そのユーザー名を入力します。

最後に「接続」をクリックします。

EC2 Instance Connectで接続2

 

ブラウザ上にターミナル画面が表示されます。

EC2 Instance Connectで接続3

 

EC2 Instance Connectを使用した感想

SSHクライアントと同じように問題なくコマンド操作ができます。

ただし、AWSマネジメントコンソールから接続した場合は、クライアントPCからのコピペは使えません。

EC2 Instance Connectの画面内であればコピペ可能です。以下の通り文字列を選択してコピー、右クリックでペーストできます。

EC2 Instance Connectのコピペ

 

注意点として、コピーした文字列に改行があるなしに関わらず、ペースト時の確認ダイアログは表示されません。コピペは慎重に操作する必要があります。

AWSマネジメントコンソールからEC2に接続する別の方法として「セッションマネージャー」が有名ですね。
こちらはクライアントPCからコピペが可能です。

 

EC2をコマンド操作する際にコピペができないと、作業効率が悪くなるだけではなく作業ミスにも繋がります。今後のサービスアップデートで、クライアントPCからコピペが可能になると良いですね。

 

CloudTrailに記録された接続履歴を確認する

EC2 Instance ConnectでEC2に接続を開始した履歴は、CloudTrailに記録されます。

履歴の確認手順は以下のとおり。

  1. CloudTrailのナビゲーションペインから [イベント履歴] をクリック
  2. [イベントソース] に [ec2-instance-connect.amazonaws.com] を入力して検索する

EC2 Instance ConnectのCloudTrail履歴

【公式】AWS CloudTrail を使用して、EC2 Instance Connect 経由で接続するユーザーを監査する

 

なお、EC2 Instance Connectで対象EC2に接続したあとの、OSで操作したコマンド履歴はCloudWatch LogsやS3には保存できません。

 

EC2 Instance Connectの使い方:まとめ

EC2 Instance Connectは、AWSマネジメントコンソールなどから手軽にAmazon Linux 2に接続できるのは素晴らしいですね。SSHキーペアの管理が不要という点も魅力的です。

なお、現時点でコマンド操作においてはセッションマネージャーのほうが使い勝手が良いと感じました。

 

当記事が参考になれば幸いです。

-AWS

© 2022 ふにノート