排查有关连接到 Windows 实例的问题 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

排查有关连接到 Windows 实例的问题

以下是在尝试连接到 Windows 实例时可能遇到的问题和可能看到的错误消息。

远程桌面无法连接到远程计算机

尝试以下操作以解决与连接实例有关的问题:

  • 确认您使用的是正确的公有 DNS 主机名。(在 Amazon EC2 控制台中,请选择实例,并在详细信息窗格中查看 Public DNS (IPv4) (公有 DNS (IPv4))。) 如果您的实例是在 VPC 中,并且您没有看到公有 DNS 名称,则必须启用 DNS 主机名。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 的 DNS 属性

  • 验证您的实例是否具有公有 IPv4 地址。如果没有,您可以将弹性 IP 地址与您的实例关联。有关更多信息,请参阅弹性 IP 地址

  • 要使用 IPv6 地址连接到您的实例,请检查本地计算机是否具有 IPv6 地址以及是否已配置为可使用 IPv6。如果您从 Windows Server 2008 SP2 AMI 或更早版本中启动了实例,则实例不会自动配置为可识别分配给实例的 IPv6 地址。有关更多信息,请参阅《Amazon VPC 用户指南》中的 在实例中配置 IPv6

  • 确认您的安全组具有允许 RDP 访问的规则。有关更多信息,请参阅创建安全组

  • 如果您输入复制的密码,然后收到错误消息 Your credentials did not work,请尝试根据系统提示手动键入密码。可能是复制密码时丢失了字符或添加了额外空格。

  • 确认实例已通过状态检查。有关更多信息,请参阅实例的状态检查通过故障状态检查排查实例故障Amazon EC2 用户指南(适用于 Linux 实例))。

  • 确认子网的路由表具有这样一个路由,该路由将发往 VPC 外部的所有流量发送到该 VPC 的 Internet 网关。有关更多信息,请参阅 Amazon VPC 用户指南 中的创建自定义路由表(Internet 网关)。

  • 确认 Windows 防火墙或其他防火墙软件没有阻止到实例的 RDP 流量。我们建议您禁用 Windows 防火墙,使用安全组规则来控制对实例的访问。您可以使用 AWSSupport-TroubleshootRDPdisable the Windows Firewall profiles using SSM Agent。要在没有针对 Amazon Systems Manager 配置的 Windows 实例上禁用 Windows 防火墙,请使用 AWSSupport-ExecuteEC2Rescue,或者使用以下手动步骤:

  1. 停止受影响的实例并分离其根卷。

  2. 在受影响的实例所在的可用区中启动临时实例。

    警告

    如果您的临时实例与原始实例基于相同的 AMI,则您必须完成额外的步骤,否则在您恢复原始实例的根卷之后,由于磁盘签名冲突,您将无法启动原始实例。或者,可以为临时实例选择不同的 AMI。例如,如果原始实例使用包含 Windows Server 2008 R2 的 Amazon Windows AMI,则使用包含 Windows Server 2012 的 Amazon Windows AMI 来启动临时实例。

  3. 将根卷从受影响的实例附加到此临时实例。连接到临时实例,打开 Disk Management (磁盘管理) 实用工具,将驱动器联机。

  4. 打开 Regedit,选择 HKEY_LOCAL_MACHINE。从 File 菜单中,选择 Load Hive。选择驱动器,打开文件 Windows\System32\config\SYSTEM,在出现提示时指定键名 (您可以使用任何名称)。

  5. 选择刚加载的键并导航至 ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy。对于名称格式为 xxxxProfile 的各个键,请选择该键并将 EnableFirewall 从 1 更改为 0。再次选择该键,在 File(文件)菜单中,选择 Unload Hive(卸载 Hive)。

  6. (可选)如果您的临时实例与原始实例基于相同的 AMI,则您必须完成以下步骤,否则在您恢复原始实例的根卷之后,由于磁盘签名冲突,您将无法启动原始实例。

    警告

    以下过程介绍了如何使用注册表编辑器编辑 Windows 注册表。如果您不熟悉 Windows 注册表或如何安全地使用注册表编辑器进行更改,请参阅配置注册表

    1. 打开命令提示符,键入 regedit.exe,然后按 Enter。

    2. Registry Editor (注册表编辑器) 中,从上下文菜单(右键单击)中选择 HKEY_LOCAL_MACHINE,然后选择 Find (查找)

    3. 键入 Windows Boot Manager,然后选择 Find Next (查找下一个)

    4. 选择名为 11000001 的密钥。此密钥是您在上一步中找到的密钥的同级。

    5. 在右侧窗格中,选择 Element,然后从上下文菜单(右键单击)中选择 Modify (修改)

    6. 找到数据中偏移 0x38 处的四字节磁盘签名。反转字节以创建磁盘签名,然后将其记录下来。例如,由以下数据表示的磁盘签名是 E9EB3AA5

      ... 0030 00 00 00 00 01 00 00 00 0038 A5 3A EB E9 00 00 00 00 0040 00 00 00 00 00 00 00 00 ...
    7. 在命令提示符窗口运行以下命令以启动 Microsoft DiskPart。

      diskpart
    8. 运行以下 DiskPart 命令以选择卷。(您可以使用磁盘管理实用程序验证磁盘号是否为 1。)

      DISKPART> select disk 1 Disk 1 is now the selected disk.
    9. 运行以下 DiskPart 命令以获取磁盘签名。

      DISKPART> uniqueid disk Disk ID: 0C764FA8
    10. 如果上一步中显示的磁盘签名与之前写下的 BCD 中的磁盘签名不匹配,请使用以下 DiskPart 命令更改磁盘签名,使其匹配:

      DISKPART> uniqueid disk id=E9EB3AA5
  7. 使用 Disk Management (磁盘管理) 实用工具,将驱动器脱机。

    注意

    如果临时实例与受影响的实例运行相同的操作系统,则驱动程序将自动离线,因此您无需手动使其离线。

  8. 将该卷从临时实例分离。如果您不再使用临时实例,则可以将其终止。

  9. 通过将受影响的实例的根卷附加为 /dev/sda1 将其还原。

  10. 开启实例。

使用 macOS RDP 客户端时出错

如果您使用 Microsoft 网站的远程桌面连接客户端连接到 Windows Server 2012 R2 实例,则可能会收到以下错误:

Remote Desktop Connection cannot verify the identity of the computer that you want to connect to.

从 Mac 应用商店下载 Microsoft 远程桌面应用程序,然后使用该应用程序连接到实例。

RDP 显示黑屏而不是桌面

请尝试以下操作解决该问题:

  • 检查控制台输出有无其他信息。要使用 Amazon EC2 控制台获取您的实例的控制台输出,请选择实例,然后依次选择 Actions (操作)Monitor and troubleshoot (显示屏和问题排查)Get System Log (获取系统日志)

  • 确认您正在运行最新版本的 RDP 客户端。

  • 尝试使用 RDP 客户端的默认设置。有关更多信息,请参阅删除会话环境

  • 如果您要使用远程桌面连接,请尝试使用 /admin 选项,通过以下方式将其启动。

    mstsc /v:instance /admin
  • 如果服务器正在运行全屏应用程序,则它可能会停止响应。使用 Ctrl+Shift+Esc 以启动 Windows 任务管理器,然后关闭应用程序。

  • 如果过度使用服务器,则服务器可能已停止响应。要使用 Amazon EC2 控制台来监控实例,请选择实例,然后选择 Monitoring (监控) 选项卡。如果需要将实例类型更改为更大大小,请参阅更改实例类型

无法使用非管理员用户远程登录到实例

如果无法通过非管理员用户远程登录到 Windows 实例,请确保您已为该用户授予本地登录权限。请参阅为用户或组授予本地登录到域中的域控制器的权限

使用 Amazon Systems Manager 解决远程桌面问题

您可以使用 Amazon Systems Manager 解决使用 RDP 连接到 Windows 实例的问题。

Amazon Web Services Support-TroubleshootRDP

利用 Amazon Web Services Support-TroubleshootRDP 自动化文档,用户可以检查或修改目标实例上可影响远程桌面协议 (RDP) 连接的常规设置,如 RDP 端口网络层身份验证 (NLA)Windows 防火墙配置文件。默认情况下,此文档读取和输出这些设置的值。

Amazon Web Services Support-TroubleshootRDP 自动化文档可与 EC2 实例、本地实例和虚拟机 (VM)(已允许它们与 Amazon Systems Manager(托管实例)一起使用)一起使用。此外,它还可以 允许与 Systems Manager 一起使用的适用于 Windows 服务器的 EC2 实例一起使用。有关启用实例以与 Amazon Systems Manager 一起使用的信息,请参阅《Amazon Systems Manager 用户指南》中的 托管式节点

使用 Amazon Web Services Support-TroubleshootRDP 文档进行故障排除
  1. 登录 Systems Manager 控制台

  2. 确认您与受损 实例位于同一区域。

  3. 从左侧导航窗格中选择 Documents(文档)。

  4. Owned by Amazon(由 Amazon 拥有)选项卡上,在搜索字段中输入 AWSSupport-TroubleshootRDPAWSSupport-TroubleshootRDP 文档显示时,选择该文档。

  5. 选择执行自动化

  6. 对于 Execution Mode (执行模式),选择 Simple execution (简单执行)

  7. 对于 Input parameters (输入参数) InstanceId,启用Show interactive instance picker (显示交互式实例选取器)

  8. 选择您的 Amazon EC2 实例。

  9. 检查示例,然后选择 Execute (执行)

  10. 要监控执行进度,对于 Execution status (执行状态),等待状态从 Pending (待处理) 变为 Success (成功)。展开 Outputs (输出) 以查看结果。要查看各个步骤的输出,请在 Executed Steps (执行步骤) 中,选择 Step ID (步骤 ID)

Amazon Web Services Support-TroubleshootRDP 示例

以下示例介绍如何使用 Amazon Web Services Support-TroubleshootRDP 完成常见的故障排除任务。您可以使用示例 Amazon CLI start-automation-execution 命令或提供的 Amazon Web Services Management Console 链接。

例 示例:检查当前的 RDP 状态

Amazon CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom" --region region_code

Amazon Systems Manager 控制台:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region#documentVersion=$LATEST
例 示例:禁用 Windows 防火墙

Amazon CLI:

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

Amazon Systems Manager 控制台:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&Firewall=Disable
例 示例:禁用网络级别身份验证

Amazon CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom, NLASettingAction=Disable" --region region_code

Amazon Systems Manager 控制台:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion
例 示例:将 RDP 服务启动类型设置为自动并启动 RDP 服务

Amazon CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom, RDPServiceStartupType=Auto, RDPServiceAction=Start" --region region_code

Amazon Systems Manager 控制台:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&RDPServiceStartupType=Auto&RDPServiceAction=Start
例 示例:恢复默认 RDP 端口 (3389)

Amazon CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom, RDPPortAction=Modify" --region region_code

Amazon Systems Manager 控制台:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&RDPPortAction=Modify
例 示例:允许远程连接

Amazon CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom, RemoteConnections=Enable" --region region_code

Amazon Systems Manager 控制台:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&RemoteConnections=Enable

Amazon Web Services Support-ExecuteEC2Rescue

Amazon Web Services Support-ExecuteEC2Rescue 自动化文档使用 使用 EC2Rescue for Windows Server 自动排查并修复 EC2 实例连接和 RDP 问题。有关更多信息,请参阅 在无法访问的实例上运行 EC2Rescue 工具

Amazon Web Services Support-ExecuteEC2Rescue 自动化文档需要停止并重新启动实例。Systems Manager Automation 将停止实例并创建 Amazon Machine Image (AMI) (Amazon 系统映像)。实例存储卷中存储的数据将会丢失。如果未使用弹性 IP 地址,公有 IP 地址将发生变化。有关更多信息,请参阅《Amazon Systems Manager 用户指南》中的 在无法访问的实例上运行 EC2Rescue 工具

使用 Amazon Web Services Support-ExecuteEC2Rescue 文档进行故障排除
  1. 打开 Systems Manager 控制台

  2. 确认您与受损 Amazon EC2 实例位于同一区域。

  3. 在导航面板中,选择文档

  4. 搜索并选择 AWSSupport-ExecuteEC2Rescue 文档,然后选择执行自动化

  5. Execution Mode (执行模式) 中,选择 Simple execution (简单执行)

  6. Input parameters (输入参数) 部分的 UnreachableInstanceId 中,输入无法访问的实例的 Amazon EC2 实例 ID。

  7. (可选)对于 LogDestination,请输入 Amazon Simple Storage Service (Amazon S3) 存储桶名称(如果需要收集操作系统日志以便排查 Amazon EC2 实例问题)。日志会自动上传到此指定存储桶。

  8. 选择 Execute (执行)

  9. 要监控执行进度,请在 Execution (执行) 状态中,等待状态从 Pending (待处理) 变为 Success (成功)。展开 Outputs (输出) 以查看结果。要查看各个步骤的输出,请在 Executed Steps (执行步骤) 中,选择 Step ID (步骤 ID)

在具有远程注册表的 EC2 实例上启用远程桌面

如果无法访问的实例未由 Amazon Systems Manager 会话管理器管理,则可以使用远程注册表启用远程桌面。

  1. 从 EC2 控制台停止无法访问的实例。

  2. 分离无法访问实例的根卷并将其附加到与存储卷位于同一可用区中的可访问实例。如果您在同一可用区中没有可访问的实例,请启动一个实例。记下无法访问的实例上根卷的设备名称。

  3. 在可访问的实例上,打开磁盘管理。您可以通过在“命令提示符”窗口中运行以下命令来执行此操作。

    diskmgmt.msc
  4. 右键单击来自无法访问的实例的新附加卷,然后选择在线

  5. 打开 Windows 注册表编辑器。您可以通过在“命令提示符”窗口中运行以下命令来执行此操作。

    regedit
  6. 在注册表编辑器中,选择 HKEY_LOCAL_MACHINE,然后选择文件加载配置单元

  7. 选择附加卷的驱动器,导航到 \Windows\System32\config\,选择 SYSTEM,然后选择 Open (打开)

  8. 对于 Key Name (密钥名称),输入配置单元的唯一名称,然后选择 OK (确定)

  9. 在对注册表进行任何更改之前,备份注册表配置单元。

    1. 在注册表编辑器控制台树中,选择您加载的配置单元:HKEY_LOCAL_MACHINE\your-key-name

    2. 选择文件导出

    3. 在 Export Registry File (导出注册表文件) 对话框中,选择要保存备份副本的位置,然后在 File name (文件名) 字段中键入备份文件的名称 。

    4. 选择 Save(保存)。

  10. 在注册表编辑器中,导航到 HKEY_LOCAL_MACHINE\your key name\ControlSet001\Control\Terminal Server,然后在详细信息窗格中双击 fDenyTSConnections

  11. Edit DWORD (编辑 DWORD) 值框中,在 Value data (值数据) 字段中输入 0

  12. 选择 OK

    注意

    如果 Value data (值数据) 字段中的值为 1,则实例将拒绝远程桌面连接。值为 0 允许远程桌面连接。

  13. 在注册表编辑器中,选择 HKEY_LOCAL_MACHINE\your-key-name,然后选择文件卸载配置单元

  14. 关闭注册表编辑器和磁盘管理。

  15. 在 EC2 控制台中,将根卷与可访问的实例分离,然后将其重新附加到无法访问的实例。将卷附加到无法访问的实例时,请在设备字段中输入您之前保存的设备名称。

  16. 重新启动无法访问的实例。

我丢失了私有密钥。我怎样才能连接到我的 Windows 实例?

当您连接到新启动的 Windows 实例时,您需要使用在启动实例时指定的密钥对的私有密钥对管理员账户的密码进行解密。

如果丢失了管理员密码并且不再具有私有密钥,您必须重置密码或创建新的实例。有关更多信息,请参阅重置丢失或过期的 Windows 管理员密码。有关使用 Systems Manager 文档重置密码的步骤,请参阅《Amazon Systems Manager 用户指南》中的重置 Amazon EC2 实例上的密码和 SSH 密钥