使用 Remote Desktop 连接到 Windows Server 托管式实例 - AWS Systems Manager

使用 Remote Desktop 连接到 Windows Server 托管式实例

您可以使用 Fleet Manager(AWS Systems Manager 的一项功能),通过 Remote Desktop Protocol(RDP)连接到您的 Windows Server Amazon Elastic Compute Cloud(Amazon EC2)实例。Fleet Manager由 NICE DCV 提供支持的远程桌面可让您直接从 Systems Manager 控制台安全地连接到您的 Windows Server 实例。在一个浏览器窗口中最多可以同时连接四个连接。

目前,您只能对运行 Windows Server 2012 RTM 或更高版本的实例使用远程桌面。远程桌面仅支持英语输入。

注意

Fleet Manager Remote Desktop 是一项仅适用于控制台的服务,不支持通过命令行连接到托管式实例。要通过 Shell 连接到 Windows Server 托管式实例,可以使用 AWS Systems Manager 的另一项功能 Session Manager。有关更多信息,请参阅 AWS Systems Manager Session Manager

有关配置 AWS Identity and Access Management(IAM)权限以允许实例与 Systems Manager 交互的信息,请参阅为 Systems Manager 配置实例权限

设置环境

在使用远程桌面之前,请确保环境满足以下要求:

  • 托管式节点配置

    确保在 Systems Manager 中将您的 Amazon EC2 实例配置为托管式节点

  • 最低 SSM Agent 版本

    验证节点运行的 SSM Agent 版本是否为 3.0.222.0 或更高版本。有关如何检查节点上正在运行哪个代理版本的信息,请参阅 正在检查 SSM Agent 版本号。有关安装或更新 SSM Agent 的信息,请参阅 使用 SSM Agent

  • RDP 端口配置

    要接受远程连接,Windows Server 节点上的 Remote Desktop Services 服务必须使用默认 RDP 端口 3389。这是 AWS 提供的 Amazon Machine Images(AMIs)上的默认配置。系统没有明确要求您打开任何入站端口才能使用远程桌面。

  • 键盘功能的 PSReadLine 模块版本

    为确保您的键盘在 PowerShell 中正常运行,请验证运行 Windows Server 2022 的节点是否安装了 PSReadLine 模块版本 2.2.2 或更高版本。如果它们运行的是旧版本,您可以使用以下命令安装所需的版本。

    Install-Module ` -Name PSReadLine ` -Repository PSGallery `-MinimumVersion 2.2.2
  • 会话管理器配置

    使用远程桌面之前,您必须先完成会话管理器设置的先决条件。当您使用远程桌面连接到实例时,将应用为 AWS 账户 和 AWS 区域 定义的所有会话首选项。有关更多信息,请参阅 设置 Session Manager

    注意

    如果您使用 Amazon Simple Storage Service(Amazon S3)记录会话管理器活动,则远程桌面连接将在 bucket_name/Port/stderr 中生成以下错误。该错误是预期行为,可以安全忽略。

    Setting up data channel with id SESSION_ID failed: failed to create websocket for datachannel with error: CreateDataChannel failed with no output or error: createDataChannel request failed: unexpected response from the service <BadRequest>
    <ClientErrorMessage>Session is already terminated</ClientErrorMessage>
    </BadRequest>

为远程桌面配置 IAM 权限

除 Systems Manager 和 Session Manager 所需的 IAM 权限外,用于访问控制台的用户或角色还必须允许以下操作:

  • ssm-guiconnect:CancelConnection

  • ssm-guiconnect:GetConnection

  • ssm-guiconnect:StartConnection

以下是 IAM policy 示例,您可以将这些策略附加到用户或角色以允许与远程桌面进行不同类型的交互。将每个示例资源占位符替换为您自己的信息。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EC2", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:GetPasswordData" ], "Resource": "*" }, { "Sid": "SSM", "Effect": "Allow", "Action": [ "ssm:DescribeInstanceProperties", "ssm:GetCommandInvocation", "ssm:GetInventorySchema" ], "Resource": "*" }, { "Sid": "TerminateSession", "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "${aws:userid}" ] } } }, { "Sid": "SSMStartSession", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:*:account-id:instance/*", "arn:aws:ssm:*:account-id:managed-instance/*", "arn:aws:ssm:*::document/AWS-StartPortForwardingSession" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" }, "ForAnyValue:StringEquals": { "aws:CalledVia": "ssm-guiconnect.amazonaws.com" } } }, { "Sid": "GuiConnect", "Effect": "Allow", "Action": [ "ssm-guiconnect:CancelConnection", "ssm-guiconnect:GetConnection", "ssm-guiconnect:StartConnection" ], "Resource": "*" } ] }
注意

在以下 IAM 策略中,SSMStartSession 部分需要 ssm:StartSession 操作的 Amazon 资源名称(ARN)。如图所示,您指定的 ARN 需要 AWS 账户 ID。如果您指定账户 ID,则 Fleet Manager 会返回 AccessDeniedException

位于示例策略下方的 AccessTaggedInstances 部分也要求提供 ssm:StartSession 的 ARN。对于这些 ARN,您需要指定 AWS 账户 ID。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EC2", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:GetPasswordData" ], "Resource": "*" }, { "Sid": "SSM", "Effect": "Allow", "Action": [ "ssm:DescribeInstanceProperties", "ssm:GetCommandInvocation", "ssm:GetInventorySchema" ], "Resource": "*" }, { "Sid": "SSMStartSession", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*::document/AWS-StartPortForwardingSession" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" }, "ForAnyValue:StringEquals": { "aws:CalledVia": "ssm-guiconnect.amazonaws.com" } } }, { "Sid": "AccessTaggedInstances", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:*:account-id:instance/*", "arn:aws:ssm:*:account-id:managed-instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/tag key": [ "tag value" ] } } }, { "Sid": "GuiConnect", "Effect": "Allow", "Action": [ "ssm-guiconnect:CancelConnection", "ssm-guiconnect:GetConnection", "ssm-guiconnect:StartConnection" ], "Resource": "*" } ] }
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SSO", "Effect": "Allow", "Action": [ "sso:ListDirectoryAssociations*", "identitystore:DescribeUser" ], "Resource": "*" }, { "Sid": "EC2", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:GetPasswordData" ], "Resource": "*" }, { "Sid": "SSM", "Effect": "Allow", "Action": [ "ssm:DescribeInstanceProperties", "ssm:GetCommandInvocation", "ssm:GetInventorySchema" ], "Resource": "*" }, { "Sid": "TerminateSession", "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "${aws:userName}" ] } } }, { "Sid": "SSMStartSession", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ssm:*:*:managed-instance/*", "arn:aws:ssm:*:*:document/AWS-StartPortForwardingSession" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" }, "ForAnyValue:StringEquals": { "aws:CalledVia": "ssm-guiconnect.amazonaws.com" } } }, { "Sid": "SSMSendCommand", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ssm:*:*:managed-instance/*", "arn:aws:ssm:*:*:document/AWSSSO-CreateSSOUser" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } } }, { "Sid": "GuiConnect", "Effect": "Allow", "Action": [ "ssm-guiconnect:CancelConnection", "ssm-guiconnect:GetConnection", "ssm-guiconnect:StartConnection" ], "Resource": "*" } ] }

验证远程桌面连接

建立远程连接时,您可以使用 Windows 凭证或与实例关联的 Amazon EC2 密钥对(.pem 文件)进行身份验证。有关使用密钥对的信息,请参阅《Amazon EC2 用户指南》中的 Amazon EC2 密钥对和 Windows 实例

或者,如果您已使用 AWS IAM Identity Center 对 AWS Management Console 进行身份验证,您可以在不提供额外凭证的情况下连接到实例。有关允许使用 IAM Identity Center 进行远程连接身份验证的策略示例,请参阅 为远程桌面配置 IAM 权限

开始前的准备工作

在开始使用远程桌面进行连接之前,请注意以下有关使用 IAM Identity Center 身份验证的条件。

  • 远程桌面支持您启用 IAM Identity Center 的同一 AWS 区域 中的节点的 IAM Identity Center 身份验证。

  • 远程桌面支持最多 16 个字符的 IAM Identity Center 用户名。

  • 远程桌面支持由字母数字字符和以下特殊字符组成的 IAM Identity Center 用户名:. - _

    重要

    包含以下字符的 IAM Identity Center 用户名将无法成功连接:+ = , @

    IAM Identity Center 支持用户名中的这些字符,但 Fleet Manager RDP 连接不支持。

  • 使用 IAM Identity Center 对连接进行身份验证后,远程桌面会在实例的本地管理员组中创建一个本地 Windows 用户。远程连接结束后,此用户仍然存在。

  • 远程桌面不允许对作为 Microsoft Active Directory 域控制器的节点进行 IAM Identity Center 身份验证。

  • 尽管远程桌面允许您对已加入 Active Directory 域的节点使用 IAM Identity Center 身份验证,但我们不建议这样做。此身份验证方法向用户授予管理权限,这些权限可能会覆盖域授予的更严格的权限。

IAM Identity Center 身份验证支持的区域

以下 AWS 区域支持使用 IAM Identity Center 身份验证的 Remote Desktop 连接:

  • 美国东部(俄亥俄州)(us-east-2)

  • 美国东部(弗吉尼亚州北部)(us-east-1)

  • 美国西部(北加利福尼亚)(us-west-1)

  • 美国西部(俄勒冈州)(us-west-2)

  • 非洲(开普敦)(af-south-1)

  • 亚太地区(香港)(ap-east-1)

  • 亚太地区(孟买)(ap-south-1)

  • 亚太地区(东京)(ap-northeast-1)

  • 亚太地区(首尔)(ap-northeast-2)

  • 亚太地区(大阪)(ap-northeast-3)

  • 亚太地区(新加坡)(ap-southeast-1)

  • 亚太地区(悉尼)(ap-southeast-2)

  • 亚太地区(雅加达)(ap-southeast-3)

  • 加拿大(中部)(ca-central-1)

  • 欧洲地区(法兰克福)(eu-central-1)

  • 欧洲地区(斯德哥尔摩)(eu-north-1)

  • 欧洲地区(爱尔兰)(eu-west-1)

  • 欧洲(伦敦)(eu-west-2)

  • 欧洲地区(巴黎)(eu-west-3)

  • 以色列(特拉维夫)(il-central-1)

  • 南美洲(圣保罗)(sa-east-1)

  • 欧洲(米兰)(eu-south-1)

  • 中东(巴林)(me-south-1)

  • AWS GovCloud(美国东部)(us-gov-east-1)

  • AWS GovCloud(美国西部)(us-gov-west-1)

远程连接持续时间和并发

以下条件适用于活动的远程桌面连接:

  • 连接持续时间

    默认情况下,远程桌面连接会在 60 分钟后断开。为防止连接断开,您可以选择在断开连接之前续订会话以重置持续时间计时器。

  • 连接超时

    远程桌面连接在闲置超过 10 分钟后会断开连接。

  • 并发连接

    默认情况下,对于相同的 AWS 账户 和 AWS 区域,您同一时间最多可以有 5 个处于活动状态的远程桌面连接。要请求将服务限额增加到最多 25 个并发连接,请参阅《Service Quotas User Guide》中的 Requesting a quota increase

使用远程桌面连接到托管式节点

浏览器对文本的复制/粘贴支持

若使用 Google Chrome 和 Microsoft Edge 浏览器,可以将托管式节点中的文本复制并粘贴到本地计算机,也可以将本地计算机中的文本复制并粘贴到所连接的托管式节点。

若使用 Mozilla Firefox 浏览器,则只能将托管式节点中的文本复制并粘贴到本地计算机,不能将本地计算机中的文本复制到托管式节点。

使用 Fleet Manager 远程桌面连接到托管式节点
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 AWS Systems Manager 控制台。

  2. 在导航窗格中,选择 Fleet Manager

  3. 选择您想要连接到的节点。您可以选择复选框或节点名称。

  4. 节点操作菜单中,选择连接远程桌面

  5. 选择首选的 Authentication type(身份验证类型)。如果您选择用户凭据,请输入您要连接的节点上的 Windows 用户账户的用户名和密码。如果您选择密钥对,您可以使用以下方法之一提供身份验证:

    1. 如果您想从本地文件系统中选择与您的实例关联的 PEM 密钥,请选择浏览本地计算机

      - 或 -

    2. 如果要复制 PEM 文件的内容并将其粘贴到提供的字段中,请选择粘贴密钥对内容

  6. 选择 Connect(连接)。

  7. 要选择首选的显示分辨率,请在操作菜单中选择分辨率,然后从以下选项中进行选择:

    • 自动适应

    • 1920 x 1080

    • 1400 x 900

    • 1366 x 768

    • 800 x 600

    自动适应选项根据检测到的屏幕尺寸设置分辨率。