使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

为什么我在使用 RDP 连接到 WorkSpaces 时会出现 NLA 错误?

4 分钟阅读
0

当我尝试连接 Amazon WorkSpaces 时,收到“Unable to connect”(无法连接)错误。当我使用远程桌面协议 (RDP) 解决问题时,出现网络级别身份验证 (NLA) 错误。

解决方法

如果您使用 RDP 登录 WorkSpace,则可能会收到以下错误之一:

  • "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."

要解决这些错误,请执行以下操作。

检查域控制器的连接

如果 WorkSpace 无法与域控制器进行通信,则您可能无法通过 RDP 登录 WorkSpace。要解决连接问题,请完成以下步骤:

  1. 确保 _workspacesMembers 安全组允许流向域控制器的出站流量。默认情况下,安全组允许所有出站流量。
  2. 配置网络 ACL 规则,以允许通过 Active Directory 端口从 WorkSpaces 流向域控制器的出站流量。此外,您必须允许通过临时端口从域控制器流向 WorkSpaces 的入站流量。
  3. 如果您使用防火墙,请调整防火墙规则以允许 WorkSpace 和域控制器之间的通信。

关闭 NLA

如果您的 WorkSpace 启用了 NLA,则可能会出现 RDP 登录错误。要关闭 NLA,您可以使用网络注册表、注册表值或 Microsoft 远程过程调用 (RPC)。关闭 NLA 后,从控制台重启 WorkSpace

**注意:**如果您使用 AWS Systems Manager 来管理 WorkSpaces,则可以使用 Systems Manager 会话管理器关闭 NLA。有关详细信息,请参阅我该如何解决使用 RDP 连接到 EC2 Windows 实例时出现的身份验证错误?

先决条件:

  • 您必须通过 PowerShell 远程处理进行激活和身份验证。在 Windows Server 平台上,PowerShell 远程处理默认处于激活状态。有关详细信息,请参阅 Microsoft 网站上的第 8 章 - PowerShell 远程处理
  • 在 WorkSpaces 安全组中,必须允许以下端口上的入站流量: TCP 端口 445(修改远程注册表所需的 SMB 流量)、TCP 135 (RPC) 和 TCP 5985(远程 PowerShell/WinRM)。
  • RemoteRegistry 服务必须在源 Workspace 或加入的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行,也必须在远程 Workspace 上运行。

要查找受影响 WorkSpace 的 WorkSpace 计算机名称,请完成以下步骤:

  1. 打开 WorkSpaces 控制台
  2. 选择受影响的 WorkSpace
  3. Computer Name(计算机名称)中的值复制到文本文件以供后续步骤使用。例如,WSAMZN-ABCDE

要登录到 PowerShell,请完成以下步骤:

  1. 登录到有效的 WorkSpace。或者,登录到加入与管理员 AWS 账户位于同一子网中的域的 EC2 实例。用户必须拥有远程 WorkSpace 的本地管理员权限。默认情况下,域管理员拥有本地管理员权限。
  2. 以管理员身份运行 PowerShell。

使用网络注册表关闭 NLA

完成以下步骤:

  1. 要检查源 WorkSpace 或 EC2 实例上的 RemoteRegistry 服务状态,请运行以下命令:

     Get-Service -Name RemoteRegistry | Start-Service
    
     #Validate the service status
    
     Get-Service -Name RemoteRegistry
    
     #Output should be as below
    
     Status   Name               DisplayName
    ------   ----               -----------
    Running  RemoteRegistry     Remote Registry
  2. 要连接到受影响 Workspace 的 PowerShell 远程会话,请运行以下命令:

    $credential = Get-Credential -Credential domain\username
    
    Enter-PSSession -ComputerName WorkSpace Computer Name -Credential $credential

    **注意:**将 domain 替换为您的 Active Directory 域名,将 username 替换为拥有远程 Workspace 本地管理员权限的 WorkSpaces 用户。此外,将 WorkSpace Computer Name 替换为您的 WorkSpace 计算机名称。

  3. 要检查远程 WorkSpace 上的 RemoteRegistry 服务状态,请运行以下命令:

     Get-Service -Name RemoteRegistry | Start-Service
    
     #Validate the service status
    
     Get-Service -Name RemoteRegistry
    
     #Output should be as below
    
     Status   Name               DisplayName
    ------   ----               -----------
    Running  RemoteRegistry     Remote Registry
  4. 要设置 Windows 防火墙以允许通过 TCP 端口 445 的传输流量,请运行以下命令:

    netsh advfirewall firewall add rule name= "RemoteRegistryAccess" dir=in action=allow protocol=TCP localport=445
  5. 要打开注册表编辑器,请在命令提示符中键入 regedit.exe,然后按 Enter

  6. 打开 File option(文件选项)的上下文(右键单击)菜单,然后选择 Connect Network Registry(连接网络注册表)。

  7. 对于 WorkSpace Computer Name(WorkSpace 计算机名称),输入您的 WorkSpace 计算机名称。

  8. 选择 Check names(检查名称)。

  9. 对于 Enter the object name to select(输入要选择的对象名称),输入以下注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp。然后,选择 OK(确定)。

  10. 对于 Key: SecurityLayer(密钥:SecurityLayer),输入 0,对于 Key: UserAuthentication(密钥:UserAuthentication),输入 0

编辑注册表值以关闭 NLA

完成以下步骤:

  1. 要连接到 PowerShell 远程会话,请运行以下命令:
    $credential = Get-Credential -Credential domain\username
    
    Enter-PSSession -ComputerName WorkSpace Computer Name -Credential $credential
    **注意:**将 domain 替换为您的 Active Directory 域名,将 username 替换为拥有远程 Workspace 本地管理员权限的 WorkSpaces 用户。此外,将 WorkSpace Computer Name 替换为您的 WorkSpace 计算机名称。
  2. 要关闭 NLA,请运行以下命令:
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\currentcontrolset\control\terminal server\winstations\rdp-tcp" /v UserAuthentication /t REG_DWORD /d 0 /f

使用 Microsoft RPC 关闭 NLA

要更新注册表键,请运行以下命令:

(Get-WmiObject -class Win32_TSGeneralSetting -Namespace root\cimv2\terminalservices -ComputerName WorkSpace Computer Name -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(0)

**注意:**将 WorkSpace Computer Name 替换为您的 WorkSpace 计算机名称。

检查 WorkSpaces 计算机对象是否已删除

如果从 Active Directory 中删除了 WorkSpaces 计算机对象,则会收到 NLA 错误。要解决此问题,请恢复 WorkSpace 计算机:

  1. 从 Active Directory 恢复 WorkSpaces 计算机对象。有关详细信息,请参阅 Microsoft 网站上的 Restore-ADObject
  2. 重启受影响的 WorkSpace

检查 DNS 服务器 IP 地址

如果您在更新关联的 WorkSpace 之前更新 AD Connector 中的 DNS 服务器 IP 地址,则会收到 NLA 错误。要解决此问题,请完成以下步骤:

  1. 打开源 WorkSpace 或加入的 EC2 实例。

  2. 要连接到远程 WorkSpace 的 PowerShell 远程会话,请运行以下命令:

    $credential = Get-Credential -Credential domain\username
    
    Enter-PSSession -ComputerName WorkSpace Computer Name -Credential $credential

    **注意:**将 domain 替换为您的 Active Directory 域名,将 username 替换为拥有远程 Workspace 本地管理员权限的 WorkSpaces 用户。此外,将 WorkSpace Computer Name 替换为您的 WorkSpace 计算机名称。

  3. 要使用新的 IP 地址更新 DNS 服务器,请运行以下命令:

    Set-ItemProperty -Path HKLM:\SOFTWARE\Amazon\SkyLight -Name DomainJoinDNS -Value "10.0.0.0,10.0.0.00"

    **注意:**将 10.0.0.010.0.0.00 替换为新的 DNS 服务器 IP 地址。

  4. 要重启 SkyLightWorkspaceConfig 服务,请运行以下命令:

     Get-Service SkyLightWorkspaceConfigService | Restart-Service
  5. 如果您仍然无法使用 RDP 连接到 WorkSpace,请重启受影响的 WorkSpace

如果您完成了解决方法中的步骤,但仍然无法解决 NLA 错误或 RDP 连接问题,则必须重建 WorkSpace

相关信息

更新 WorkSpaces Personal 的 DNS 服务器

Microsoft 网站上的使用 RDP 连接到 Azure VM 时排查身份验证错误

AWS 官方
AWS 官方已更新 2 个月前