セッションマネージャーを使ってEC2にブラウザからアクセスする(インターネットに接続できるインスタンスの場合)
AWSのEC2で、SSH用にポートを開けなくてもEC2インスタンスにアクセスできると聞いたので試してみます。
できたらうれしいこと
※踏み台サーバとは、インターネットからアクセスできるサーバにログインし、そこから他のサーバに接続する、といった使い方をするサーバのこと。
前提条件&やること
- EC2インスタンスに、SSMAgentをインストールする。
(今回はインストール済みのAmazon Linuxを使用します) - IAMポリシーを作成して、EC2インスタンスに割り当てる →これをします
- EC2インスタンスはインターネットに接続しているか、VPCエンドポイントに接続できること
(今回はインターネットに接続できる環境で試します)
参照:ステップ 1: Session Manager の前提条件を満たす
IAMロールの作成
AWS管理ポリシー「AmazonSSMManagedInstanceCore」を含むIAMロールを作成して、EC2インスタンスにアタッチします。
IAM > ロール > ロールを作成 を開きます。
信頼されたエンティティタイプ:AWSのサービス
ユースケース:EC2 を選択して「次へ」
「許可ポリシー」の検索窓に「AmazonSSM」まで入力して検索。
「AmazonSSMManagedInstanceCore」にチェックを入れて「次へ」
「ロール名」に、ここでは「AmazonSSMManagedInstanceCore-IAMrole」と設定。
「ロールを作成」
ロールが作成されました。
EC2の画面を開きます。
接続したいEC2インスタンスを選択し、 アクション > セキュリティ > IAMロールを変更 を選択。
IAMロール 欄に、先ほど作成したロール「AmazonSSMManagedInstanceCore-IAMrole」を選択。
「保存」を押します。
接続したいインスタンスを選択して「接続」ボタンを押します。
「セッションマネージャー」タブを選択して「接続」ボタンを押します。
※設定はあっているのにエラーが出た場合、IAMロールをインスタンスにアタッチしてから、10分以上待つ必要があるようです。
EC2のコンソールにつながります。
このとき、ユーザーはssm-user としてログインしているので、
sh-4.2$ sudo su ec2-user
として、使い慣れたec2-userユーザーでログインしなおしてもよいでしょう。
また、接続できるようになると「AWS Systems Manager」の 「フリートマネージャー」にも表示されます。
※「さらば踏み台サーバ。Session Managerを使ってEC2に直接SSHする」
この、ノードアクション > Connect > ターミナルセッションを開始する からもEC2インスタンスに接続できます。
以上です。