fu3ak1's tech days

何事もシンプルに。主にAWS関連の記事を書いています

Session Manager を使用したEC2へのコマンド接続 CLI編

前回の記事では、ブラウザを使用してEC2へ接続するところを紹介しました。 でもSSH接続するなら、コマンドベース(CLI)でやりたいですよね?ということでその方法を紹介します。AWS CLIを使用します。

事前準備

EC2の作成

こちらは前回の記事のとおりです。 IAMロールが付与された、Systems Managerに接続できるEC2を作成しましょう。

IAMユーザーおよびアクセスキーの作成

AWS CLIでアクセスするため、アクセスキーが必要になります。 ここで注意すべきポイントは、最低限の権限を付与したIAMユーザーとアクセスキーを作成するというところです。 マネジメントコンソールにアクセスしている場合、Adminなど強い権限でアクセスする方が多いと思いますが、ここではマネジメントコンソールにアクセスするIAMユーザーとは別のIAMユーザーを作成します。 ※これはAWSさん公式の見解ではなく、私個人の推奨です。

f:id:fu3ak1:20200605230157p:plain

実際に作成していきましょう。まずはIAMポリシーを作成します。

f:id:fu3ak1:20200605230518p:plain

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」とします。

f:id:fu3ak1:20200605230726p:plain

その後、作成したポリシーしたIAMグループを作成し、

f:id:fu3ak1:20210603171952p:plain

そのグループに所属するIAMユーザーを作成します。本来は個人が特定できるユーザー名が良いでしょう。 アクセスの種類はCLIを使用するため、「プログラムによるアクセス」を選択します。

f:id:fu3ak1:20200605231102p:plain

f:id:fu3ak1:20200605231234p:plain

f:id:fu3ak1:20200605231302p:plain

作成後、アクセスキー/シークレットアクセスキーが生成されるので、メモしておきます。

f:id:fu3ak1:20200605231451p:plain

AWS CLI とSession Manager pluginのインストール

接続元クライアント端末側の準備です。私はWindowsを使用しておりますので、Windowsの前提で記載します。 OSが異なる場合は公式ページを参考にインストールをお願いします。

docs.aws.amazon.com

docs.aws.amazon.com

まずはCLI(今回はV2)をインストールします。とても簡単です。 こちらのリンクからmsiファイルをダウンロードして実行するだけです。 インストーラの言われるがままNextをクリックしていけばOKです。

aws --version というコマンドを実行し、以下のように表示されればOKです。(Windows Terminalを使用しています)

f:id:fu3ak1:20200605232533p:plain

続いてSession Manager pluginをインストールします。 こちらのリンクからexeファイルをダウンロードして実行します。

実行後、InstallをポチっとすればOKです。 f:id:fu3ak1:20200605233446p:plain

インストール完了後、session-manager-pluginというコマンドを実行して以下の通り表示されればOKです。

f:id:fu3ak1:20200605233036p:plain

アクセスキー設定

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を確認しておきます。(本記事では情報保護のためモザイク処理しています)

f:id:fu3ak1:20200605234914p:plain

クライアント端末で以下の通りコマンド実行します。

aws ssm start-session --target i-xxxxxx(接続するEC2のインスタンスID)

するとどうでしょう、以下のようにサーバに接続ができました!(素晴らしい)

f:id:fu3ak1:20200606000145p:plain

前回のおさらいになりますが、クライアント端末から見ると、Systems Managerにhttps接続しているので、プロキシがある場合でも全く問題ありません。ありがたいですね。

f:id:fu3ak1:20200605235439p:plain

まとめ

いかがでしたでしょうか?準備作業が少々多いですが、一度準備できてしまえば、インスタンスIDを指定してすぐ接続できるので、おススメです。 注意点は前回と同様ですが、CLIになるのでアクセスキーの取扱いには注意したほうが良いでしょう。

それではまた