
はじめに
こんにちは。プロフェッショナルサービス本部の四方です。
私はインフラエンジニアとして、AWS IT基盤のシステム運用をメインに担当しています。
システム運用とは、具体的に以下のような業務を指します。
トラブルシューティング
システムログや実行プロセスを確認し、トラブルの原因を特定し修復します。パフォーマンスの監視と最適化
CPUやメモリなどのリソース使用状況を監視し、必要に応じてリソースを調整します。メンテナンス
ソフトウェアの設定変更やアップデートを行い、機能改善やセキュリティ対策を行います。
このような業務を行うために、運用者はシステムの稼働状況を素早く正確に把握できることが重要です。
システムへのターミナルログインはその第一歩であり、手法をあらかじめ確立しておく必要があります。
本記事では、AWSの代表的なコンピューティングリソースであるEC2のログイン手法について解説します。
EC2のログイン手法には以下に示すような、いくつかの選択肢があります。
- ローカルPC上から直接ログインする手法
- SSM Session Managerを利用したAWSコンソールでのログインする手法
- EC2 Instance Connectを利用したAWSコンソールでのログインする手法
それぞれセキュリティや利用費用、運用負荷などにおいて違いがあります。本記事ではそれらの観点を評価します。
1. 実現手法
AWSでのEC2ターミナルログイン手法としては、以下の3つが代表的です。
- ローカルPC上から直接ログイン
- SSM Session Managerを利用したAWSコンソールでのログイン
- EC2 Instance Connectを利用したAWSコンソールでのログイン
それぞれについて、以降で特徴を説明します。
1.1. ローカルPC上から直接ログイン
ローカルPC上にターミナルエミュレータをインストールし、そこからEC2へ接続する手法です。パブリックIPアドレスに対するSSH接続となり、キーペアの管理やポート開放などが必要です。そのため以降に説明する手法に比べると、運用管理が煩雑です。またパブリックIPに対するポート開放やキーペアの管理などは、セキュリティ上のリスクになりえます。さらにパブリックIPアドレスは利用費用も発生します。

1.2. SSM Session Managerを利用したAWSコンソールでのログイン
本手法はAWSコンソール上で完結するため、ローカルPC上のソフトウェアインストールが不要です。SSM Agentが、運用者の操作を取得する動きになります。またSSH接続では無いため、キーペアの管理が不要です。またエンドポイントと呼ばれる仮想デバイスを介在させることにより、プライベート接続を実現します。そのためセキュリティ上のリスクも低くメリットが多いですが、エンドポイントは稼働時間分の利用費用がかかります。なおEC2にSSM Agentがインストールされている必要がありますが、Amazon Linux 2以降であればプリインストールされています。

1.3. EC2 Instance Connectを利用したAWSコンソールでのログイン
AWSコンソール上で完結するのはSSM Session Managerと同じです。エンドポイントを介してプライベート接続を行う点も同じですが、本手法で使うエンドポイントは利用費用がかからないのがメリットです。本手法はSSH接続でありSSHの許可設定が必要になりますが、キーペアの管理は必要ありません。セキュリティ上のリスクも低く、利用費用の面からも優れた選択肢といえます。なおEC2にEC2 Instance Connectがインストールされている必要がありますが、Amazon Linux 2023であればプリインストールされています。

2. EC2 Instance Connectの導入手順
EC2 Instance Connectは優れた選択肢ですが、導入時の設定が若干必要です。ここでは、EC2 Instance Connectによるログインを導入する手順を説明します。
まずEC2 Instance Connectエンドポイントにアタッチするセキュリティグループを作成します。ポート22(SSH)のアウトバウンド許可を設定します。送信先は接続対象のEC2インスタンス用セキュリティグループを指定しておきます。

次にEC2 Instance Connectエンドポイントを作成します。VPCのエンドポイントのメニューから作成します。
タイプとして「EC2 インスタンス接続エンドポイント」を選択し、エンドポイントを作成するVPCや、上記で作成したセキュリティグループを指定します。

EC2インスタンス用セキュリティグループは、
- インバウンド許可:EC2 Instance Connectエンドポイント用セキュリティグループからのSSH許可
- アウトバウンド許可:EC2 Instance Connectエンドポイント用セキュリティグループへの任意のTCPを許可
を設定します。
以上の準備が完了すれば、コンソール上でEC2にログインできます。該当インスタンスを選択し、インスタンスに接続します。


以上のようにEC2 Instance Connectを活用すれば、追加費用をかけずにターミナルログインを実現することができます。
3. CLIを用いたログイン
上記のようにEC2のメニューから接続するのが通常ですが、接続にはAWS CLIを利用することもできます。
また、AWSにはブラウザベースで実行できるシェル環境であるCloudShellが存在します。CloudShellにはデフォルトでAWS CLIがインストールされており、以下のようなコマンドでCLIベースで接続を行うことができます。これを利用すると、ターミナルログのロギングも実現できます。(ロギングについては次回投稿で紹介します)
aws ec2-instance-connect ssh \ --instance-id <instance-id> \ --connection-type eice
おわりに
今回の記事では、EC2へのターミナルログイン手法について詳しく解説しました。
ローカルPC上から直接ログイン
利用費用がかかり、セキュリティリスクがある。運用も煩雑。SSM Session Managerを利用したAWSコンソールでのログイン
利用費用はかかるが、セキュリティリスクは低減する。運用は簡便。EC2 Instance Connectを利用したAWSコンソールでのログイン
利用費用はかからず、セキュリティリスクも低減する。運用も簡便。
これらを比較した結果、コスト・利便性・セキュリティのバランスに優れた「EC2 Instance Connect」が、多くのケースで最も導入しやすい利点を持っています。そのため、私も普段の業務では主にこの手法を活用しています。
一方、「SSM Session Manager」にも利点はあり、それはLinuxだけでなくWindows Serverにも対応したクロスプラットフォームな接続環境を提供できることです。OSを限定しないアクセス環境が必要であればSSM Session Managerを使う必要があります。
本記事が、読者の方の日々の業務に役立つことを願っています。
最後までお読みいただき、ありがとうございました。