1
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?

Amazon EC2インスタンスにSession Managerを使用して接続する手順

Posted at

当記事の概要

当記事では、AWSのAmazon EC2インスタンス(Linuxを想定)に、Session Managerを使用して接続する手順を示します(よく手順を忘れるので備忘録的にまとめます)。

Session Managerで接続するための条件

EC2インスタンスにSession Managerで接続するためには以下の条件を満たしている必要があります。

  • SSM Agentがインストールされていること(Amazon Linux 2ではプリインストールされているので対応不要)
  • EC2インスタンスに、AWS管理ポリシー AmazonSSMManagedInstanceCore を含むIAMロールをアタッチする
  • SSMエンドポイントへのアクセスが可能

以下、上記の条件を満たすための設定手順を記載します。

SSM Agentのインストール

SSM Agentのインストール手順はOSによって異なるため、以下リンク先の手順に沿って実施します。

Linux 用 EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする

IAMロールのアタッチ

まず、AWS管理ポリシー AmazonSSMManagedInstanceCore を含むIAMロールを作成します(なお、以下ではAmazonSSMManagedInstanceCoreのみ含むIAMロールを作成しますが、既存のIAMロールにAmazonSSMManagedInstanceCoreを追加してもOKです)。

AWSマネジメントコンソールで、IAMを開き、画面左側メニューの「ロール」を選択します。
画面右側の「ロールの作成」ボタンをクリックします。

2024-07-01 at 00.02.08@2x.png

「AWSのサービス」を選択し、「サービスまたはユースケース」では「EC2」、「EC2 Role for AWS System Manager」を選択し、「次へ」ボタンをクリックします。

2024-07-01 at 00.03.50@2x.png

AmazonSSMManagedInstanceCoreがあることを確認し、「次へ」ボタンをクリックします。

2024-07-01 at 00.07.05@2x.png

「ロール名」に任意の名前を設定し、「ロールを作成」ボタンをクリックします。

2024-07-01 at 00.08.09@2x.png

次に、作成したIAMロールをEC2インスタンスにアタッチします。対象のEC2インスタンスの概要画面に遷移し、「アクション」→「セキュリティ」→「IAMロールを変更」を選択します。

2024-07-01 at 00.43.11@2x.png

作成したIAMロールを選択し、「IAMロールの更新」ボタンをクリックします。

2024-07-01 at 00.44.52@2x.png

なお、他の条件が全てクリアできている状態で、最後にIAMロールの設定を実施した場合、IAMロール設定直後はSession Managerでの接続ができません。しばらく待つ必要があるためご注意ください。

SSMエンドポイントへのアクセスを可能とする

EC2インスタンスがインターネットアクセスが可能な場合

セキュリティグループのアウトバウンドルールで、以下へのHTTPS(443)のアクセスを許可します。region はEC2インスタンスのリージョンを設定します。東京リージョンは「ap-northeast-1」、大阪リージョンは「ap-northeast-3」です。

  • ssm.region.amazonaws.com
  • ssmmessages.region.amazonaws.com
  • ec2messages.region.amazonaws.com

東京リージョンの場合には以下になります。

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

EC2インスタンスがインターネットアクセス不可の場合

以下を参考に設定を実施します。

インターネットにアクセスしなくても、 VPC エンドポイントを作成して、Systems Manager でプライベート EC2 インスタンスを管理するにはどうすればよいですか?

VPCエンドポイントを作成するのですが、その前に必要なセキュリティグループを作成します。
インバウンドルールで以下を許容するルールを作成します。

  • タイプ:HTTPS(443)
  • ソース:対象VPCのCIDR(VPCによって異なる)

2024-07-01 at 01.27.27@2x.png

次に、下記3つのVPCエンドポイントを作成します。

  • com.amazonaws.region.ssm
  • com.amazonaws.region.ec2messages
  • com.amazonaws.region.ssmmessages
  • com.amazonaws.region.s3

東京リージョンの場合には以下になります。

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

VPCエンドポイントは、AWSマネジメントコンソールの「VPC」サービスで、画面左側メニューの「エンドポイント」を選択し、「エンドポイントを作成」ボタンをクリックします。

2024-07-01 at 15.08.35@2x.png

エンドポイントの設定画面で、「名前タグ」に任意の名前を入力し、「サービスカテゴリ」は「AWSのサービス」を選択します。

2024-07-01 at 15.26.00@2x.png

「VPC」には対象のVPC、「サブネット」はエンドポイントを作成するアベイラビリティーゾーン、サブネットを選択します。

2024-07-01 at 15.26.55@2x.png

「セキュリティグループ」では先ほど作成したセキュリティグループを選択します。「ポリシー」はデフォルトのままでOKです。その後、画面下部の「エンドポイントを作成」ボタンをクリックします。

2024-07-01 at 15.30.31@2x.png

上記の手順を、以下3つのエンドポイントに対して実施します。

  • com.amazonaws.region.ssm
  • com.amazonaws.region.ec2messages
  • com.amazonaws.region.ssmmessages

4つ目の「com.amazonaws.region.s3」については、エンドポイントのタイプとして「Gateway」、「Interface」が選択可能ですが、「Gateway」を選択します。「Gateway」の場合、ルートテーブルの選択が必要です。(「Interface」を選択しても有料になるだけで問題はないと思います)

2024-07-01 at 15.49.50@2x.png

AWSマネジメントコンソールからの接続

対象のEC2インスタンスの概要ページで「接続」ボタンをクリックします。

2024-07-01 at 15.58.28@2x.png

「セッションマネージャー」タブを選択します。特に何もエラーが表示されていなければ接続可能な状態になっています。「接続」ボタンをクリックします。

2024-07-01 at 15.59.23@2x.png

AWSマネジメントコンソールからのアクセスができました。

2024-07-01 at 16.00.39@2x.png

ターミナルからの接続(AWS CLI)

ターミナルからSession Managerを使用してEC2インスタンスに接続するには、「AWS CLI」、および、「AWS CLIのSession Managerプラグイン」が必要です。

以下のガイドに沿って、2つをインストールしてください。

インストール後、AWSの認証情報を設定します。以下の記事を参照ください。

【AWS】aws cliの設定方法

設定後、以下のコマンドを実行すると、ターミナルからEC2インスタンスに接続できます。

aws ssm start-session --target <EC2インスタンスのインスタンスID>

ターミナルからの接続(ssh)

Session Managerでは、ターミナルからsshを使用して接続することも可能です。また、sshでの接続ができるようになると、scpやsftpも使用可能です。このとき、EC2側はsshのポートを開ける必要はありません

まずは通常のssh用の設定を実施します(秘密鍵・公開鍵の作成、サーバ側でのログインユーザの~/.ssh/authorized_keys への公開鍵の設定)。

ローカル端末側の ~/.ssh/config を以下の通り設定します(以下はMacの場合の設定です)。

host i-* mi-*
    ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"

上記のProxyCommandの設定により、Session Managerをプロキシとしてssh接続が可能となります。

あとは普通にsshログインを実行します。

ssh -i <秘密鍵のパス> <ユーザ名>@<EC2 インスタンスID>

~/.ssh/configIdentityAgent の設定を実施することで、1Passwordに保存された秘密鍵を使用することも可能です。

参考

1
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
1
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?