我在尝试使用远程桌面协议 (RDP) 登录 Amazon Elastic Compute Cloud (Amazon EC2) Windows 实例时收到身份验证错误。
解决方法
当您使用 RDP 登录 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.If you are an administrator on the remote computer, you can disable NLA by using the options on the Remote tab of the System Properties dialog box."
这些错误可能是由于以下原因之一造成的:
- 服务器上启用了 NLA。
- 当 RDP 登录时,您的域与加入此域的 EC2 实例之间的信任关系失败。
服务器上启用了 NLA
当实例由于域凭证未经过身份验证而失去与域控制器的连接时,会出现 NLA 错误。要解决此问题,请使用 AWS Systems Manager AWSSupport-TroubleshootRDP 自动化文档修改实例设置或停用实例上的 NLA。
您可以使用 AWSSupport-TroubleshootRDP 自动化文档修改实例上影响 RDP 连接的常用设置。
要在无法访问的实例上停用 NLA,请使用以下选项之一:
要停用 NLA,实例必须已安装 Systems Manager Agent (SSM Agent),并且必须处于联机状态。实例还必须具有授予会话管理器权限的 AWS Identity and Access Management (IAM) 角色。有关详细信息,请参阅满足会话管理器先决条件。
**注意:**更改 NLA 时必须更改注册表。在开始之前,从您的实例创建亚马逊机器映像(AMI)。这会在您更改注册表之前创建备份。
使用会话管理器停用 NLA
要使用会话管理器停用 NLA,请添加注册表项。
完成以下步骤:
- 打开 Systems Manager 控制台。
- 在导航窗格中,选择 Fleet Manager。
- 选择要连接的托管实例。
- 在 Node actions(节点操作)菜单中,选择 Start terminal session(启动终端会话),然后选择 Connect(连接)。您无法使用会话管理器连接到实例。
- 在终端会话中运行以下命令:
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
完成以下步骤:
-
打开 Systems Manager 控制台。
-
在导航窗格中,选择运行命令,然后选择运行一个命令。
-
为命令文档选择 AWS-RunPowerShellScript。
-
对于 Command parameters(命令参数),输入以下命令:
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
-
对于 Target selection(目标选择),首先选择 Choose instances manually(手动选择实例),然后选择您的实例。
-
选择 Run(运行)。
-
等到 Overall status(总体状态)的值更改为 Success(成功),然后在 2 分钟后刷新页面。
-
重启实例。
-
使用 RDP 登录实例。
离线手动更改注册表
完成以下步骤:
- 停止无法访问的实例并分离根卷。
- 在与您停止的无法访问的实例所在的相同可用区内启动新实例。这个新实例就是您的救援实例。
**重要事项:**要避免出现磁盘签名问题,最佳做法是启动与无法访问的实例不同的 Windows 实例。
- 将分离的卷作为 /dev/xvdf 连接到救援实例。
- 使用 RDP 连接救援实例,然后使用磁盘管理器将刚才连接的卷联机。
- 在命令提示符中,键入 regedit.exe,然后按 Enter 打开注册表编辑器。
- 依次选择 HKEY_LOCAL_MACHINE、File 和 Load Hive。
- 导航到附加卷上的 Windows 文件夹,然后选择 SYSTEM 文件。默认路径是 D:\Windows\System32\config。
- 为系统文件命名。例如,badsys。
badsys 系统文件显示在 HKEY_LOCAL_MACHINE 下。
- 在 badsys 中,导航到 RDP-Tcp。要导航到 RDP-Tcp,请先选择 ControlSet001,然后选择 Control。选择 Terminal Server,然后选择 WinStations。
- 选择 SecurityLayer,将值数据设置为 **0。**选择 UserAuthentication,将值数据设置为 0。然后,选择 fAllowSecProtocolNegotiation,将值数据设置为 0。
- 选择 badsys。
- 选择 File,然后选择 Unload Hive。
- Hive 卸载后,打开磁盘管理器,将磁盘脱机。
- 将卷与救援实例分离,然后将卷作为根卷 (/dev/sda1) 连接到无法访问的实例。
- 启动实例并测试 RDP。
在 RDP 登录期间,您的域与加入此域的 EC2 实例之间的信任关系会失败
使用缓存的用户凭证登录到无法访问的实例。
先决条件
- 可以成功在 EC2 实例进行身份验证的本地账户。
- 当域控制器不可用时,请确保将要缓存的先前登录次数设置至少设置为 1。必须这样做才能使用交互式登录。策略可以设置为默认值 10。默认情况下,策略未定义,您可以使用服务器的本地策略。
(可选)至少有一个在实例与域控制器通信时已登录的域账户。要使域账户正常工作,必须将域账户凭证缓存在服务器中。最佳做法是使用本地账户。
要使用缓存的用户凭证登录,请完成以下步骤:
- 打开 Amazon EC2 控制台。
- 在导航窗格中,选择 Security Groups(安全组)。
- 选择创建安全组。
- 添加安全组名称和描述。
- 在入站规则下,选择添加规则。
- 对于 Type(类型),选择 RDP。然后,提供您要使用 RDP 从其进行连接的源的信息。
- 在 Outbound rules(出站规则)下,删除所有出站访问。
- 选择 Create security group(创建安全组)。
- 在导航窗格中,选择 Instances(实例),然后选择无法访问的实例。
- 选择 Actions(操作),然后选择 Security(安全),然后选择 Change security groups(更改安全组)。删除所有现有的安全组,然后分配您刚才创建的安全组。
- 使用普通域账户使用 RDP 连接 EC2 实例。由于所有出站访问都被从 Amazon EC2 中删除,RDP 使用存储在服务器上的缓存证书。
**注意:**最初会尝试对域控制器进行身份验证。由于没有从 Amazon EC2 的出站访问权限,身份验证最终会检查存储在服务器上的缓存凭证。然后将使用缓存的凭证重新尝试进行身份验证,登录将成功。登录后,您可以将安全组设置更改回原始状态,然后修复域中的所有问题。
其他故障排除
如果您仍然无法连接到实例,请参阅如何解决我的 Amazon EC2 Windows 实例的 RDP 连接问题?
相关信息
AWS Systems Manager 运行命令
AWS Systems Manager 会话管理器