Session Manager を使用したEC2へのコマンド接続 CLI編
前回の記事では、ブラウザを使用してEC2へ接続するところを紹介しました。 でもSSH接続するなら、コマンドベース(CLI)でやりたいですよね?ということでその方法を紹介します。AWS CLIを使用します。
事前準備
EC2の作成
こちらは前回の記事のとおりです。 IAMロールが付与された、Systems Managerに接続できるEC2を作成しましょう。
IAMユーザーおよびアクセスキーの作成
AWS CLIでアクセスするため、アクセスキーが必要になります。 ここで注意すべきポイントは、最低限の権限を付与したIAMユーザーとアクセスキーを作成するというところです。 マネジメントコンソールにアクセスしている場合、Adminなど強い権限でアクセスする方が多いと思いますが、ここではマネジメントコンソールにアクセスするIAMユーザーとは別のIAMユーザーを作成します。 ※これはAWSさん公式の見解ではなく、私個人の推奨です。
実際に作成していきましょう。まずはIAMポリシーを作成します。
JSONでポリシーを以下の通り記載します。SessionManager実行に必要な4つのアクションを許可(Allow)しています。 なお、今回は記載しませんが、Condition句を合わせて使用することにより、IP制限やMFA強制といった制御も可能です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SessionManager", "Effect": "Allow", "Action": [ "ssm:ResumeSession", "ssm:DescribeSessions", "ssm:TerminateSession", "ssm:StartSession" ], "Resource": "*" } ] }
任意の名前を付けてPolicyを作成します。ここでは「SSMUserPolicy」とします。
その後、作成したポリシーしたIAMグループを作成し、
そのグループに所属するIAMユーザーを作成します。本来は個人が特定できるユーザー名が良いでしょう。 アクセスの種類はCLIを使用するため、「プログラムによるアクセス」を選択します。
作成後、アクセスキー/シークレットアクセスキーが生成されるので、メモしておきます。
AWS CLI とSession Manager pluginのインストール
接続元クライアント端末側の準備です。私はWindowsを使用しておりますので、Windowsの前提で記載します。 OSが異なる場合は公式ページを参考にインストールをお願いします。
まずはCLI(今回はV2)をインストールします。とても簡単です。 こちらのリンクからmsiファイルをダウンロードして実行するだけです。 インストーラの言われるがままNextをクリックしていけばOKです。
aws --version
というコマンドを実行し、以下のように表示されればOKです。(Windows Terminalを使用しています)
続いてSession Manager pluginをインストールします。 こちらのリンクからexeファイルをダウンロードして実行します。
実行後、InstallをポチっとすればOKです。
インストール完了後、session-manager-plugin
というコマンドを実行して以下の通り表示されればOKです。
アクセスキー設定
aws configure
を実行して、先ほどメモしたアクセスキー/シークレットアクセスキーを設定しておきます。
PS C:\Users\fumia> aws configure AWS Access Key ID []: ※アクセスキー入力※ AWS Secret Access Key []: ※シークレットアクセスキー入力※ Default region name []: ap-northeast-1 ※東京リージョンの場合はap-northeast-1でOK Default output format [None]:
プロキシ設定 ※プロキシ利用時のみ
プロキシな世界に住まれている方は、大事なやつですね。忘れずにやっておきます。
set HTTP_PROXY=http://userid:password@proxy.examle.com:8080 set HTTPS_PROXY=http://userid:password@proxy.examle.com:8080
EC2への接続
長くなりましたがやっと準備完了です。 接続したいEC2のインスタンスIDを確認しておきます。(本記事では情報保護のためモザイク処理しています)
クライアント端末で以下の通りコマンド実行します。
aws ssm start-session --target i-xxxxxx(接続するEC2のインスタンスID)
するとどうでしょう、以下のようにサーバに接続ができました!(素晴らしい)
前回のおさらいになりますが、クライアント端末から見ると、Systems Managerにhttps接続しているので、プロキシがある場合でも全く問題ありません。ありがたいですね。
まとめ
いかがでしたでしょうか?準備作業が少々多いですが、一度準備できてしまえば、インスタンスIDを指定してすぐ接続できるので、おススメです。 注意点は前回と同様ですが、CLIになるのでアクセスキーの取扱いには注意したほうが良いでしょう。
それではまた