はじめに
AWSでの開発中、EC2インスタンスへSSH接続して作業することは多いですが、EC2がプライベートサブネットに配置されている場合、直接のSSH接続はできません。
これまで、この課題を解決するためには、いくつかの方法がありました。
- 踏み台サーバー(SSH接続専用のEC2)を立てて経由する
- NATゲートウェイを経由する
- VPCエンドポイントを経由する
しかし、これらの方法はどれも固定費用が発生します。特にNATゲートウェイは月額6,000円程度の費用がかかることもあり、コストが課題でした。さらに、踏み台サーバーは、セキュリティグループやIAMポリシーなど、正しい設定を自分で行う必要があります。
そこで、本記事ではInstance Connect Endpointというサービスを使って、これらの課題を解決する方法を紹介します。このサービスを利用すれば、固定費用をかけることなく、セキュアにプライベートサブネットのEC2インスタンスへSSH接続が可能です。
Instance Connectとは?
Instance Connectは、AWS CLIやSSHクライアントを使って、EC2インスタンスへ安全に接続できるようにするサービスです。このサービスは、IAMポリシーを使ってアクセス制御を行うため、SSHキーファイルをインスタンスにアップロードする必要がありません。
以前から存在していたサービスですが、Instance Connect Endpointの登場により、プライベートサブネット内のEC2インスタンスにもこの機能が使えるようになりました。
Instance Connect Endpointの設定手順
実際にInstance Connect Endpointを使用して、コンソール画面からプライベートサブネット内のEC2に接続してみます。
構成図
設定に必要な要素
1.EC2 Instance Connect Endpoint用のセキュリティグループの作成
2.EC2 Instance Connect Endpointの作成
3.EC2に割り振っているセキュリティグループの設定
4.EC2にEC2 Instance Connectのインストール
5.IAMユーザのロール設定
この流れに沿って、設定を行っていきます。
EC2 Instance Connect Endpoint用のセキュリティグループの作成
EC2 Instance Connect Endpoint Serviceを経由してローカル端末からSSHする仕組みになっているため、EC2 Instance Connect Endpointに割り振るセキュリティグループのインバウンドグループには、
また、Instance Connect EndpointからEC2にSSH接続する必要があるため、アウトバウンドルールに
- タイプ:SSH
-
送信先:EC2に割り振っているセキュリティグループを設定
を指定する必要があります。
EC2 Instance Connect Endpointの作成
EC2 Instance Connect Endpoint を作成し、EC2に接続するための入り口を作成していきましょう。
以下の手順で作成を行います。
VPC➡インスタンス接続エンドポイント➡エンドポイントを作成
- タイプ:EC2インスタンス接続エンドポイント
- VPC:接続先のVPCを設定
- サブネット:EC2を格納しているプライベートサブネットを設定
- セキュリティグループ:先ほど作成したEndpoint用のセキュリティグループを設定
EC2に割り振っているセキュリティグループの設定
EndpointからSSH接続する必要があるため、EC2に割り振るセキュリティグループのインバウンドグループには、
EC2にEC2 Instance Connectのインストール
EC2 Instance Connectを利用してSSH接続するためには、インスタンス側にEC2 Instance Connectというパッケージがインストールされている必要があります。
Amazon Linux2やAmazon Linux 2023、Ubuntu 16.04以降などの主要なAWS公式AMIを使用している場合、このパッケージはデフォルトでインストール済みなので、追加の作業は必要ありません。
もし、独自のAMIや、他のLinuxディストリビューション(RHEL、CentOSなど)を使用している場合は、手動でパッケージをインストールする必要があります。インストール方法はOSによって異なりますが、一般的なコマンドは以下の通りです。
- Amazon Linux / RHEL / CentOS の場合
sudo yum install -y ec2-instance-connect
- Ubuntu / Debian の場合
sudo apt-get update
sudo apt-get install -y ec2-instance-connect
他のOSを使用している場合でも、お使いのOSに合わせたパッケージマネージャを使用してインストールを行ってください。
IAMユーザのロール設定
EC2 Instance Connect Endpoint経由でSSH接続を行うには、接続を行うIAMユーザーに特定のIAMポリシーを付与する必要があります。これにより、SSHキーを管理する手間を省き、誰がどのインスタンスにアクセスできるかをIAMで一元管理できます。
ここでは、AWSが提供している管理ポリシーを利用して設定を行います。
ポリシーのアタッチ
IAMコンソールのユーザーから該当のユーザーを選択し、アクセス許可の追加でEC2InstanceConnect を選択してください。
これで、IAMユーザーがInstance Connect Endpoint経由でEC2に接続するための権限設定は完了です。
接続
コンソール画面からプライベートサブネット内のEC2に接続してみましょう。
EC2➡EC2の詳細画面➡接続➡プライベートIPを使用して接続
を選択し、接続してみましょう。

まとめ
今回はコンソール画面上からプライベートサブネット内のEC2にSSH接続してみました。
他の接続方法は固定費やセキュリティ関連の設定など考える要素が多いですが、AWSのサービスを使用することで楽にかつセキュアにEC2に接続することができました。
他にいい接続方法等もあれば、紹介していただけたらありがたいです!
ここまでご覧いただきありがとうございした。





