AWS SSM接続でEC2へ安全に接続
2023/03/06
2023/03/08
今回はssm agentを使ってWindowsクライアントとaws consoleからの接続方法を案内する
WindowsからPowerSHell sshでセッションマネージャ接続(ssm)経由でEC2接続。通常のSSH接続より侵入される可能性が低いです。特に仮想ネットワークVPCでPrivate上にあるネットワーク上にサーバ群へアクセスするなら多段接続なしで使う意味があります。
aws cliが導入済みでaws configureで任意のIAMユーザがあることが前提です。無ければ新規ユーザを作成しておきましょう。
EC2がAmazon Linux2 の場合は下記のコマンドでssm-agentをインストールする必要があります。
1 2 3 |
$ sudo yum install amazon-ssm-agent -y $ sudo systemctl start amazon-ssm-agent $ sudo systemctl status amazon-ssm-agent |
次にSSHへ接続するSSM-Agent用のIAMユーザを作成しましょう。ユーザは何でもOKです。必要なのはユーザもしくはユーザが所属するグループにアクセス権限を付与することです。具体的には次の2つです。
付与するべき権限- ★AmazonSSMFullAccess
- ★AmazonSSMManagedInstanceCore

Proxy経由で接続しSSM接続を行います。これによりSSMの先にあるEC2へSSH接続を実現します。
1 2 3 4 5 6 7 8 9 10 11 12 |
ps> cd .ssh ps> notepad config -------------------------------- Host ec2cons HostName i-xxxxxxxxxxxxxxxx <---ここが多くの人がハマるツボ。接続先のEC2のインスタンスIDです。 User ec2-user Port 22 ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p" IdentityFile ~/.ssh/myec2-vpc.pem <---自分の配置した場所とファィル名に一致させる。 TCPKeepAlive yes IdentitiesOnly yes -------------------------------- |
予めこれをローカルPCへダウンロードしてインストールしてください。
https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe
PowerShellから接続します。configのHOST名で簡単接続ができます。もし失敗するようならpowershellを一度起動し直して実施すると良いです

ローカルPCにawsのユーザcredential情報が設定されていない方はaws configureでIAMユーザのアクセスキーを設定してください。設定されていないとエラーになります。
EC2への接続をaws consoleのEC2インスタンス一覧からSSM接続をブラウザーベースで行う。
ブラウザーベースの場合はEC2インスタンスへIAMロールから例の2つ権限を付与します。ここはPower SHellのssh経由と同じ考え方です。異なるのはユーザではなくてカスタムロールポリシーを作成してそのポリシーを該当インスタンスへアタッチします。この接続で実施するにしても結局EC2にamazon-ssm-agentのパッケージは導入して起動しておく必要はあります。


