10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Systems Manager の Session Manager の上に SSH を通して安全にプライベートサブネットの EC2 へインターネットから接続する

Last updated at Posted at 2025-10-09

NAT Gateway もないプライベートサブネットの EC2 に、Session Manager を使って閉域性を保ちながら、インターネットから EC2 へ SSH で接続してみます。

Session Manager を閉域で使う手順

  1. プライベートサブネットに ssm, ssmmessages, ec2messages サービスへの VPC エンドポイントを作成
  2. Session Manager を使うのに必要な権限を持つ IAM ロールを作成し、EC2 へアタッチする
  3. aws ssm コマンドが許可されているクレデンシャルを取得する(IAM Identity Center で認証するなど)
  4. プライベートサブネットの EC2 が VPC エンドポイント経由で Session Manager に接続しにいくので、インターネット側からも適切なクレデンシャルがあれば Session Manager に接続できるので、Session Manager 経由で EC2 への接続が確立する
  5. EC2 へ SSH する際に ProxyCommand として aws ssm start-session を渡すと、Session Manager の上に SSH トンネルが張れる
  6. あとは煮るなり焼くなり

概要図は以下のとおりです。

AWSNetwork3.drawio.png

VPC エンドポイントの作成

Session Manager を使うのに必要なエンドポイントは以下の 3 つ 2 つです。東京リージョンを例とします。

  • com.amazonaws.ap-northeast-1.ssm
  • com.amazonaws.ap-northeast-1.ssmmessages
  • com.amazonaws.ap-northeast-1.ec2messages

スクリーンショット 2025-10-09 8.51.24.png

watany さんから、VPC エンドポイントは 2 つで行けるとコメントいただきました。早速 ec2messages の VPC エンドポイントを削除してから Session Manager で接続したところ、問題なく接続できましたので、一部修正しました。watany さんありがとうございました!

IAM ロールの作成

IAM ロールに手っ取り早く AWS マネージドポリシーの AmazonSSMManagedInstanceCore を許可ポリシーに設定したものを作成し、EC2 へアタッチします。

スクリーンショット 2025-10-09 8.55.13.png

EC2 が VPC エンドポイント経由で Session Manager に接続できるようになると、マネジメントコンソールでは以下のような表示となります。

スクリーンショット 2025-10-09 8.57.33.png

SSH の ProxyCommand に Session Manager の start-session を設定

今度はインターネット側のクライアントの設定になります。AWS CLI がインストールされていることが前提です。

EC2 に SSH する前に Session Manager へアクセス権限のあるクレデンシャルを取得しておきます。

クレデンシャルの取得ができたら、SSH コマンドに以下を渡します。こちらも東京リージョンを例にしています。

ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p' --region ap-northeast-1 --profile プロファイル名"

私は上記を ~/.ssh/config に書くようにしています。

これで Session Manager の上に SSH を通してプライベートサブネットの EC2 に接続できるようになりました。

スクリーンショット 2025-10-08 11.21.14.png

注意点

この方法はクレデンシャルの取得方法を IAM Identity Center 認証など安全なものにすればセキュアにプライベートサブネットの EC2 インスタンスをリモート操作できます。

ただし、環境によっては外部からアクセスできないよう Session Manager 自体を SCP などで制限している場合があり、この場合はこの方法が使えないので注意しましょう。

EC2 Instance Connect Endpoint について

ホワバ先輩から、EC2 Instance Connect Endpoint についてコメントいただきました(ありがとうございます!)

こちらも同じくインターネット経由で安全にプライベートサブネットの EC2 にアクセス出来て、踏み台ホストが要らないかつエンドポイント利用料もかからないというメリットが大きいサービスになっています。

EC2 Instance Connect エンドポイントの使用に追加コストはかかりません。

Session Manager と EC2 Instance Connect ではエンドポイントへのアクセス制限の方法が異なるなど、要件に合わせて選択すると良さそうです。

自分みたいに個人の検証環境ユースだと、EC2 Instance Connect の方がメリットが大きそうです。

SSM エンドポイントは 3 つも要らなかったんや!

10
4
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
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?