AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWSSupport-TroubleshootRDP

描述

AWSSupport-TroubleshootRDP Automation 文档允许用户检查或修改目标实例上可能影响远程桌面协议 (RDP) 连接的常规设置,如 RDP 端口、网络层身份验证 (NLA) 和 Windows 防火墙配置文件。(可选)如果用户明确允许进行离线修复,则可以通过停止和启动实例来离线应用更改。默认情况下,此文档读取和输出这些设置的值。

重要

在运行此文档之前,应仔细检查对 RDP 设置、RDP 服务和 Windows 防火墙配置文件的更改。

文档类型

Automation

所有者

Amazon

平台

Windows

参数

  • 实例 ID

    类型:字符串

    说明:(必需)要对其 RDP 设置进行故障排除的实例的 ID。

  • Action

    类型:字符串

    允许的值:CheckAll、FixAll、Custom

    默认值:Custom

    说明:(可选)[Custom] 使用 Firewall、RDPServiceStartupType、RDPServiceAction、RDPPortAction、NLASettingAction 和 RemoteConnections 的值管理设置。[CheckAll] 读取设置的值而不更改它们。[FixAll] 恢复 RDP 默认设置,并禁用 Windows 防火墙。

  • AllowOffline

    类型:字符串

    允许的值:True、False

    默认值:False

    说明:(可选)仅修复 - 如果当在线故障排除失败或提供的实例不是托管实例时允许进行离线 RDP 修复,请将其设置为 true。注意:对于离线修复,SSM Automation 会停止实例,并在尝试任何操作前创建一个 AMI。

  • 防火墙

    类型:字符串

    允许的值:Check、Disable

    默认值:Check

    说明:(可选)检查或禁用 Windows 防火墙(所有配置文件)。

  • RDPServiceAction

    类型:字符串

    允许的值:Check、Start、Restart、Force-Restart

    默认值:Check

    说明:(可选)检查、启动、重启或强制重启 RDP 服务 (TermService)。

  • RDPServiceStartupType

    类型:字符串

    允许的值:Check、Auto

    默认值:Check

    说明:(可选)检查或设置 RDP 服务在 Windows 启动时自动启动。

  • RDPPortAction

    类型:字符串

    允许的值:Check、Modify

    默认值:Check

    说明:(可选)检查用于 RDP 连接的当前端口,或将 RDP 端口修改回 3389 并重启服务。

  • NLASettingAction

    类型:字符串

    允许的值:Check、Disable

    默认值:Check

    说明:(可选)检查或禁用网络层身份验证 (NLA)。

  • RemoteConnections

    类型:字符串

    允许的值:Check、Enable

    默认值:Check

    说明:(可选)要对 fDenyTSConnections 设置执行的操作:Check、Enable。

  • SubnetId

    类型:字符串

    默认值:SelectedInstanceSubnet

    说明:(可选)仅离线 - 用于执行离线故障排除的 EC2Rescue 实例的子网 ID。如果未指定子网 ID,AWS Systems Manager Automation 将创建一个新 VPC。重要说明:子网必须与 InstanceId 位于同一可用区中,并且必须允许访问 SSM 终端节点。

  • S3BucketName

    类型:字符串

    说明:(可选)仅离线 - 您账户中用于上传故障排除日志的 S3 存储桶的名称。请确保存储桶策略不会向不需要访问收集的日志的各方授予不必要的读/写权限。

  • AutomationAssumeRole

    类型:字符串

    说明:(可选)此执行的 IAM 角色。如果未指定任何角色,则 AWS Systems Manager Automation 将使用运行此文档的用户的权限。

示例

检查当前 RDP 状态

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID"

检查当前 RDP 状态

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID"

禁用 Windows 防火墙

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID,Action=Custom,Firewall=Disable"

恢复默认 RDP 端口

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID, RDPPortAction=Modify"

禁用 NLA

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID, NLASettingAction=Disable"

允许远程连接

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID, RemoteConnections=Allow"

恢复 RDP 默认设置并禁用所有 Windows 防火墙配置文件

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID, Action=FixAll"

恢复 RDP 默认设置,禁用所有 Windows 防火墙配置文件,并根据需要进行离线修复

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID, Action=FixAll, AllowOffline=True"

检索执行输出

aws ssm get-automation-execution --automation-execution-id EXECUTIONID --output text --query 'AutomationExecution.Output'

所需的 IAM 权限

建议让接收命令的 EC2 实例具有附加了 AmazonEC2RoleforSSM Amazon 托管策略的 IAM 角色。对于在线修复,用户必须至少具有 ssm:DescribeInstanceInformationssm:ExecuteAutomationssm:SendCommand 才能运行此 Automation 并将命令发送到实例,并且需要具有 ssm:GetAutomationExecution 才能读取 Automation 输出。对于离线修复,用户必须至少具有 ssm:DescribeInstanceInformationssm:ExecuteAutomationec2:DescribeInstances 以及 ssm:GetAutomationExecution 才能读取 Automation 输出。AWSSupport-TroubleshootRDP 调用 AWSSupport-ExecuteEC2Rescue 来执行离线修复 - 请查看 AWSSupport-ExecuteEC2Rescue 的权限,确保您可以成功运行 Automation。

文档步骤

  1. aws:assertAwsResourceProperty - 检查实例是不是 Windows 实例

  2. aws:assertAwsResourceProperty - 检查实例是不是托管实例

  3. (在线故障排除)如果实例为托管实例,则:

    1. aws:assertAwsResourceProperty - 检查提供的 Action 值

    2. (在线检查)如果 Action = CheckAll,则:

      aws:runPowerShellScript – 运行 PowerShell 脚本来获取 Windows 防火墙配置文件状态。

      aws:executeAutomation - 调用 AWSSupport-ManageWindowsService 来获取 RDP 服务状态。

      aws:executeAutomation - 调用 AWSSupport-ManageRDPSettings 来获取 RDP 设置。

    3. (在线修复)如果 Action = FixAll,则:

      aws:runPowerShellScript – 运行 PowerShell 脚本来禁用所有 Windows 防火墙配置文件。

      aws:executeAutomation - 调用 AWSSupport-ManageWindowsService 来启动 RDP 服务。

      aws:executeAutomation - 调用 AWSSupport-ManageRDPSettings 来启用远程连接和禁用 NLA。

    4. (在线管理)如果 Action = Custom,则:

      aws:runPowerShellScript – 运行 PowerShell 脚本来管理 Windows 防火墙配置文件。

      aws:executeAutomation - 调用 AWSSupport-ManageWindowsService 来管理 RDP 服务。

      aws:executeAutomation - 调用 AWSSupport-ManageRDPSettings 来管理 RDP 设置。

  4. (离线修复)如果实例并非托管实例,则:

    1. aws:assertAwsResourceProperty - 断言 AllowOffline = True

    2. aws:assertAwsResourceProperty - 断言 Action = FixAll

    3. aws:assertAwsResourceProperty - 断言 SubnetId 的值

      (使用提供的实例的子网)如果 SubnetId 为 SELECTED_INSTANCE_SUBNET

      aws:executeAwsApi - 检索当前实例的子网。

      aws:executeAutomation – 使用提供的实例子网运行 AWSSupport-ExecuteEC2Rescue。

    4. (使用提供的自定义子网)如果 SubnetId 不为 SELECTED_INSTANCE_SUBNET

      aws:executeAutomation – 使用提供的 SubnetId 值运行 AWSSupport-ExecuteEC2Rescue。

输出

manageFirewallProfiles.Output

manageRDPServiceSettings.Output

manageRDPSettings.Output

checkFirewallProfiles.Output

checkRDPServiceSettings.Output

checkRDPSettings.Output

disableFirewallProfiles.Output

restoreDefaultRDPServiceSettings.Output

restoreDefaultRDPSettings.Output

troubleshootRDPOffline.Output

troubleshootRDPOfflineWithSubnetId.Output