今回のゴール
前回は、コンソールからSSM経由でEC2に接続しましたが、今回はAWS CLIからSSMを使用してEC2に接続します。
接続する方法は下記の2パターンを試します。
- CLIからSSM経由で接続
- SSMのポートフォワーディングを利用してSSHでEC2に接続
前回はコンソールからの接続は下記を参照ください。
下準備
AWS CLIとSession Manage Pluginをインストールします。
【AWS CLI】
AWS CLI のインストール、更新、およびアンインストール
【Session Manage Plugin】
(オプション) AWS CLI 用の Session Manager plugin をインストールする
今回はSSMのポートフォワーディング利用したSSHでの接続も行いますので、下記の設定も行いました。
ステップ 8: (オプション) を通じて SSH 接続を有効にする
設定は割愛しますが、AWSのユーザーやポリシーは適切なものが設定されている事とします。
また、今回はwindows10からEC2へ接続する事とします。
EC2(Linux)の操作
AWS CLIからのSSM
AWS CLIを利用してSSM経由でLinuxのEC2を操作します。
この方法でEC2に接続すると、コマンドの履歴をS3やCloudWatchLogsに保存する事ができます。(要設定)
SSMを利用してログインするので、EC2へのログインはssm-userとなります。
PowerShellを起動して下記コマンドを実行します。
IAMユーザー名とEC2インスタンスIDを指定します。
aws ssm --profile username start-session --target i-xxxxx
今回はMFAを設定しているので、MFAのコードを入力します。
インスタンスに接続できました
Enter MFA code for arn:aws:iam::000000000:mfa/xxxxx:
Starting session with SessionId: botocore-session-xxxxx-yyyyy
sh-4.2$
SSMのポートフォワーディング利用したSSH
EC2へのログインはec2-userで可能です。
この方法はSSHはもちろんSCPも使用できます。
※SSMはSSHで暗号化された通信をトンネリングするだけなので、操作ログは取得不可となります。
ssh -i .\my-key-pair.pem ec2-user@i-XXXXX -v
Enter MFA code for arn:aws:iam::000000000:mfa/xxxxx:
MFAのコードを入力します。
インスタンスに接続できました。
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-0-200 ~]$
この方法ではSCPも利用できます。
scp -i .\my-key-pair.pem .\xxx.txt ec2-user@i-XXXXX:~/
EC2(Windows)の操作
自分がドメイン参加していないリモート端末からPowerShellでWindowsの管理をすることはほぼないので、RDP接続だけに絞ります。
SSMのポートフォワーディング利用したRDP
下記のコマンドを実行します。
aws ssm start-session --target i-XXXXX --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389, localPortNumber=13389"
すると、接続待ちの状態になるので、
Starting session with SessionId: botocore-session-XXXXX-YYYYY
Port 13389 opened for sessionId botocore-session-XXXXX-YYYYY.
Waiting for connections...
リモートデスクトップで接続します。
RDPで接続ができました。
また、PowerShellにも接続されたメッセージが表示されました。
Connection accepted for session [botocore-session-XXXXX-YYYYY]