我该如何解决使用 RDP 连接到 EC2 Windows 实例时出现的身份验证错误?

2 分钟阅读
0

我在尝试使用远程桌面协议 (RDP) 登录 Amazon Elastic Compute Cloud(Amazon EC2)Windows 实例时收到身份验证错误。

解决方法

当您使用 RDP 登录 Amazon EC2 Windows 实例时,可能会收到以下身份验证错误:

  • "An authentication error has occurred.The Local Security Authority cannot be contacted."
  • "The remote computer that you are trying to connect to requires Network Level Authentication (NLA), but your Windows domain controller cannot be contacted to perform NLA.如果您是远程计算机的管理员,可以使用系统属性对话框的远程选项卡上的选项禁用 NLA。

这些错误可能会在以下场景中发生:

  • 服务器上启用了网络层身份验证(NLA)。
  • 当 RDP 登录时,您的域与加入此域的 EC2 实例之间的信任关系失败。

服务器上启用了 NLA

当实例由于域凭证未经过身份验证而失去与域控制器的连接时,会出现 NLA 错误。要解决此问题,使用 AWS Systems Manager AWSSupport-TroubleshootRDP 自动化文档修改实例设置或停用实例上的 NLA。

使用 AWSSupport-TroubleshootRDP 自动化文档,您可以修改实例上可能影响 RDP 连接的常用设置。

使用以下方法之一在无法访问的实例上停用 NLA:

  • 配置 AWS Systems Manager 会话管理器。
  • 运行 AWS-RunPowerShellScript 命令文档。
  • 离线手动更改注册表。

注意: 更改 NLA 时必须更改注册表。在开始之前,从您的实例创建亚马逊机器映像(AMI)。这会在您更改注册表之前创建备份。

使用 Systems Manager 会话管理器停用 NLA

要使用会话管理器停用 NLA,完成以下步骤添加注册表项:

重要事项: 实例必须已安装 Systems Manager Agent(SSM Agent),并且必须处于联机状态。实例还必须具有授予会话管理器权限的 AWS Identity and Access Management(IAM)角色。有关更多信息,请参阅会话管理器先决条件

  1. 打开 Systems Manager 控制台
  2. 在导航窗格中,选择 Fleet Manager
  3. 选择要连接的托管实例。
  4. 节点操作菜单中,选择启动终端会话连接。您已使用会话管理器连接到实例。
  5. 在终端会话中运行以下命令:
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0 /f
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v fAllowSecProtocolNegotiation /t REG_DWORD /d 0 /f

使用 AWS-RunPowerShellScript 命令文档停用 NLA

要使用 AWS:RunPowerShellScript 命令文档停用 NLA,完成以下步骤来添加注册表项:

重要事项: 实例必须已安装 SSM Agent 并且必须处于联机状态。实例还必须具有授予会话管理器权限的 IAM 角色。有关更多信息,请参阅会话管理器先决条件

  1. 打开 Systems Manager 控制台

  2. 在导航窗格中,选择运行命令,然后选择运行一个命令

  3. 命令文档选择 AWS-RunPowerShellScript

  4. 命令参数处,输入以下命令:

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0 /f
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v fAllowSecProtocolNegotiation /t REG_DWORD /d 0 /f
  5. 目标选择处,选择手动选择实例,然后选择您的实例。

  6. 选择运行

  7. 等待总体状态变为成功。两分钟后刷新页面。

  8. 重启实例。

  9. 使用 RDP 登录实例。

离线手动更改注册表

  1. 停止无法访问的实例分离根卷

  2. 在与您停止的无法访问的实例所在的相同可用区内启动新实例。新实例将成为您的救援实例。

    重要事项: 最佳做法是启动与无法访问的实例不同的 Windows 实例,以避免出现磁盘签名问题。

  3. 将分离的卷作为 /dev/xvdf 连接到救援实例。

  4. 使用 RDP 连接救援实例,然后在磁盘管理器中将刚才连接的卷联机。

  5. 在命令提示符中,键入 regedit.exe,然后按 Enter 打开注册表编辑器。

  6. 选择 HKEY_LOCAL_MACHINE,然后选择文件加载 Hive

  7. 导航到附加卷上的 Windows 文件夹,然后选择系统文件。默认路径是 D:\Windows\System32\config

  8. 系统文件命名。例如,badsys

  9. badsys 系统文件现在将出现在 HKEY_LOCAL_MACHINE 下。在 badsys 下,导航到 ControlSet001控制终端服务器WinStationsRDP-Tcp

  10. 双击 SecurityLayer,将值数据设置为 **0。**选择 UserAuthentication,将值数据设置为 0。然后,选择 AllowSecProtocolNegotiation,将值数据设置为 0

  11. 向上滚动,选择 badsys文件卸载 Hive

  12. Hive 卸载后,打开磁盘管理器,将磁盘脱机。

  13. 将卷与救援实例分离,并将卷作为根卷 (/dev/sda1) 连接到无法访问的实例。

  14. 启动实例并测试 RDP。

在 RDP 登录期间,您的域与加入此域的 EC2 实例之间的信任关系会失败

尝试使用缓存的用户凭证登录到无法访问的实例。

先决条件

  • 可以成功在 EC2 实例进行身份验证的本地账户。

  • (可选)至少有一个在实例与域控制器通信时已登录的域账户。要使域账户正常工作,必须将域账户凭证缓存在服务器中。

    注意: 最佳做法是使用本地账户。

  • 当域控制器不可用时,请确保将要缓存的先前登录次数设置至少设置为 1。必须完成此设置才能使用交互式登录。策略可以设置为默认值 10。默认情况下,策略未定义,您可以使用服务器的本地策略。

要使用缓存的用户凭证登录,请完成以下步骤:

  1. 打开 EC2 控制台,然后选择安全组
  2. 在导航窗格中,选择安全组
  3. 选择创建安全组
  4. 添加安全组名称和描述。
  5. 入站规则下,选择添加规则
  6. 类型选择 RDP。然后,提供您要使用 RDP 从其进行连接的源的信息。
  7. 出站规则下,删除所有出站访问。
  8. 选择创建安全组
  9. 在导航窗格中,选择实例,然后选择无法访问的实例。
  10. 选择操作安全更改安全组。删除所有现有的安全组,然后分配您刚才创建的安全组。
  11. 使用普通域账户使用 RDP 连接 EC2 实例。由于所有出站访问都被从 Amazon EC2 中删除,RDP 使用存储在服务器上的缓存证书。

注意: 最初会尝试对域控制器进行身份验证。但是,由于没有从 Amazon EC2 进行出站访问,身份验证最终会检查存储在服务器上的缓存凭证。然后将使用缓存的凭证重新尝试进行身份验证,登录将成功。登录后,您可以将安全组设置更改回原始状态,然后继续修复域中的所有问题。

其他故障排除

如果您仍然无法连接到实例,请参阅如何解决我的 Amazon EC2 Windows 实例的远程桌面连接问题?

相关信息

AWS Systems Manager 运行命令

AWS Systems Manager 会话管理器

AWS 官方
AWS 官方已更新 1 年前