0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】プライベートサブネット内のEC2に固定費ゼロでSSH接続したい!

Posted at

はじめに

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に接続してみます。

構成図

今回構築する環境の構成図は以下の通りです。
instance-connect.png

設定に必要な要素

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に割り振るセキュリティグループのインバウンドグループには、

  • タイプ:SSH
  • ソース:マイIP
    を指定する必要があります。
    image.png

また、Instance Connect EndpointからEC2にSSH接続する必要があるため、アウトバウンドルールに

  • タイプ:SSH
  • 送信先:EC2に割り振っているセキュリティグループを設定
    を指定する必要があります。

エンドぽウントセキュリティグループアウトバウンドルール.jpg

EC2 Instance Connect Endpointの作成

EC2 Instance Connect Endpoint を作成し、EC2に接続するための入り口を作成していきましょう。
以下の手順で作成を行います。

VPC➡インスタンス接続エンドポイント➡エンドポイントを作成

  • タイプ:EC2インスタンス接続エンドポイント
  • VPC:接続先のVPCを設定
  • サブネット:EC2を格納しているプライベートサブネットを設定
  • セキュリティグループ:先ほど作成したEndpoint用のセキュリティグループを設定

EC2に割り振っているセキュリティグループの設定

EndpointからSSH接続する必要があるため、EC2に割り振るセキュリティグループのインバウンドグループには、

  • タイプ:SSH
  • ソース:先ほど作成したEndpoint用のセキュリティグループを設定
    を指定する必要があります。
    EC2セキュリティグループインバウンドルール.jpg

EC2にEC2 Instance Connectのインストール

EC2 Instance Connectを利用してSSH接続するためには、インスタンス側にEC2 Instance Connectというパッケージがインストールされている必要があります。

Amazon Linux2Amazon Linux 2023Ubuntu 16.04以降などの主要なAWS公式AMIを使用している場合、このパッケージはデフォルトでインストール済みなので、追加の作業は必要ありません。

もし、独自のAMIや、他のLinuxディストリビューション(RHELCentOSなど)を使用している場合は、手動でパッケージをインストールする必要があります。インストール方法は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に接続するための権限設定は完了です。

image.png

接続

コンソール画面からプライベートサブネット内のEC2に接続してみましょう。
EC2➡EC2の詳細画面➡接続➡プライベートIPを使用して接続
を選択し、接続してみましょう。
image.png

接続し、コンソール画面が表示されたら、接続完了です!
image.png

まとめ

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

他にいい接続方法等もあれば、紹介していただけたらありがたいです!
ここまでご覧いただきありがとうございした。

参考

公式ドキュメント:AWS EC2 Instance Connect を使用して Linux インスタンスに接続する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?