プライベートネットワーク環境に、配置されたAWS EC2(Linux)に、
パブリックなグローバルIPアドレスなしに、リモート接続する方法が、
それがSession Managerです!
AWSはどんどん便利になりますよね。(進化が早い)
レジュメ
環境・前提条件
- 2021/7時点のAWSで、
- Amazon Linux2
で作成された記事です。
セッションマネージャーでLinuxに接続する手順
こんな感じで、
AWSコンソールのブラウザからプライベートネットワークにあるLinuxにコンソール接続
できるようになります。
Session Manager を設定する - AWS Systems Manager
1,AWS EC2 Linux にSSMエージェントのインストール
Amazon Linuxの場合、デフォルトでSSMエージェントがインストールされています。
これはAmazon Linuxを利用するメリットですね!
※ Amazon Linux以外のRedhat等にはデフォルトではSSMエージェントがインストールされていません。
EC2 インスタンスに SSM エージェントを手動でインストールする (Linux 用) - AWS Systems Manager
2,AWS EC2 LinuxにIAMロール(AmazonSSMManagedInstanceCore)を割り当てる
インスタンス一覧から、接続したいLinux EC2を選び、「アクション」-「セキュリティ」-「IAMロール変更」で
EC2にAmazonSSMManagedInstanceCoreロールを割り当てたかったのですが、AmazonSSMManagedInstanceCoreが見当たらなかったので、代わりのロール
AmazonEC2RoleforSSM
を割り当てます。
新ポリシー AmazonSSMManagedInstanceCore がサポートされました | DevelopersIO
3,プライベートネットワークにNatゲートウェイもしくはVPCエンドポイント用意
AWS EC2 LinuxはSSMと通信出来ないとならないため、以下のどちらかを用意する必要があります。
- AWS EC2 LinuxがNatゲートウェイ等でインターネットアクセス出来るようにするか、
- SSMエンドポイントを作成する。
SSMへ接続するためのエンドポイントは以下です。
- com.amazonaws.ap-northeast-1.ssm
- com.amazonaws.ap-northeast-1.ssmmessages
- com.amazonaws.ap-northeast-1.ec2messages
セッションマネージャーでAWS EC2 Linuxにコンソール接続
インスタンス一覧から、接続したいLinux インスタンスを選択し、
「接続」ボタンを押します。
「インスタンスに接続」で「セッションマネージャー」タブを選び
「接続」ボタンを押します。
これでAWSコンソールからセッションマネージャー経由で、AWS EC2 Linuxにコンソール接続できました。
いつのまにか、AWS EC2 Linux内にssm-userも作成されていました。
セッションマネージャーでAWS EC2 Linuxに接続で興味深いのは、ターミナルにログインしているユーザーがいないことですね!