内容
標準化、ガバメントクラウド環境ではWindowsサーバが多いということで、AWS上のWindowsサーバーへの接続方法を記載します。閉域環境を前提として、Fleet ManagerとRDPクライアントを使用する方法について説明します。両方とも通常の接続方法に加え、+αの情報も記載します。
Fleet Manager
Fleet Managerは Systems Managerの中の1つの機能で、お手軽にリモートデスクトップ接続が出来る機能です。使用にあたる前提条件はこちらに記載されていますが、Session Managerと同様です。SSM AgentがインストールされたSystems Managerのマネージドノードで、下記IAMポリシーと閉域環境ではVPCエンドポイントが必要になります。公式AMIを使用するとSSM Agentはインストール済みとなっています。
なお、具体的には、IAMロールに設定したIAMポリシーに AmazonSSMManagedInstanceCore を付与し、下記 2 つの VPC エンドポイントを作成します。
ssm.ap-northeast-1.amazonaws.comssmmessages.ap-northeast-1.amazonaws.com
Systems Manager → Fleet Managerのコンソールから接続することが可能です。
なお、Fleet Managerを使用した接続ですが、クライアントから直接EC2サーバに接続しているわけではありません。EC2、クライアントがSystems ManagerのAPIに接続して、Systems Managerが中継しているようなイメージになります。そのため、EC2サーバのセキュリティグループのインバウンドルールでは特定の通信を許可する必要はありません。
オンプレミスサーバの管理
Fleet Managerではオンプレミスのサーバの管理も行うことが可能です。
オンプレミスサーバを管理するにはSystems Managerのマネージドノードにする必要があり、下記の作業が必要になります。
上記設定の流れを記載していきます。IAMサービスロールは、下記のようにSystems ManagerにAWS STS AssumeRoleの信頼関係を付与します。IAMポリシーは先ほどと同様に AmazonSSMManagedInstanceCore を付与します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"ssm.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
Systems Managerのコンソールからアクティベーションコードを払い出します。
公式マニュアル中にあるスクリプトを使用してSSM Agentをインストールします。この際、上記で発行したアクティベーションコードとアクティベーションIDを使用することで該当アカウントのマネージドノードとすることが出来ます。
[System.Net.ServicePointManager]::SecurityProtocol = 'TLS12'
$code = "activation-code"
$id = "activation-id"
$region = "us-east-1"
$dir = $env:TEMP + "\ssm"
New-Item -ItemType directory -Path $dir -Force
cd $dir
(New-Object System.Net.WebClient).DownloadFile("https://amazon-ssm-$region.s3.$region.amazonaws.com/latest/windows_amd64/ssm-setup-cli.exe", $dir + "\ssm-setup-cli.exe")
./ssm-setup-cli.exe -register -activation-code="$code" -activation-id="$id" -region="$region"
Get-Content ($env:ProgramData + "\Amazon\SSM\InstanceData\registration")
Get-Service -Name "AmazonSSMAgent"
RDP クライアント
従来のRDPクライアントを使用する方法です。接続元端末と接続先EC2がネットワーク経路上で通信可能であり、ネットワークACLおよびEC2のセキュリティグループでTCP 3389が許可されていれば接続可能です。Direct Connectを使用して閉域接続する際はこちらでの接続方法が多いかと思います。
通常接続するだけだと、記事として記載内容が思いつかないため、ここではEC2①に一度接続後、EC2①からRDPでEC2②に接続する多段接続の例を見てみます。
EC2①がWindowsサーバの場合、RDPで接続後、EC2②に接続することが可能です。ただしRDPの管理接続は2セッションまでのため、3セッション以上の接続の場合はRemote Desktop Services(RDS)ライセンスサーバなどが必要になります。
ここではRDPで踏み台サーバに接続するのではなく、SSHポートフォワーディングをした接続方法を見てみます。(下記ではEC2①はLinuxサーバとしています。)
SSH ポートフォワーディング
SSHポートフォワーディングは、SSHトンネルを使用して、ローカルPCのポートへの通信をリモートサーバ経由で別のサーバの特定ポートへ安全に転送する方法です。
ローカルPCで以下のコマンドを実行し、SSHトンネルを作成します。
ssh -L 13389:172.16.1.10:3389 -i key.pem ec2-user@192.168.1.10
その後、mstsc /v localhost:13389 でローカルホストの13389番ポートに接続することでEC2②に接続することが可能です。









