修复:发生RDP身份验证错误请求的功能是
在Windows 10桌面上安装了最新的安全更新后,我无法使用远程桌面远程连接到新的VDS服务器(运行Windows Server 2012 R2)。当我在mstsc.exe客户端窗口中指定RDP服务器名称并单击"连接"时,出现错误:
远程桌面连接发生身份验证错误。要求的功能是。远程计算机:computer_name
卸载最新更新并重新启动计算机后,我能够通过RDP连接到远程服务器。据我了解,这是一个临时解决方法。一个新的Windows累积更新包将到达,并将在下个月安装,并且RDP身份验证错误将返回。你能给我一些建议吗?
回答
你是绝对正确的。通过删除已安装的Windows更新来解决此问题毫无意义,因为这会使计算机面临利用此更新所修复的各种漏洞的风险。 RDP错误尝试运行RemoteApp应用程序时,也会出现身份验证错误。
为什么会这样呢?事实是Windows 10桌面上安装了最新的安全更新(2016年5月之后发布)。这些更新修复了用于RDP服务器上的身份验证的CredSSP协议(凭据安全支持提供程序)中的一个严重漏洞(请认真阅读文章RDP身份验证错误:CredSSP加密Oracle Remediation)(CVE-2016-0886)。这些更新未安装在RDP/RDS服务器端,并且启用了" NLA"(网络级身份验证)以进行远程桌面访问。 NLA使用CredSSP机制通过TLS/SSL或者Kerberos对RDP用户进行预身份验证。计算机只是阻止与使用易受攻击的CredSSP版本的服务器的远程桌面连接。
我们如何解决此问题并连接到RDP服务器?
- 解决该问题的最"正确方法"是在远程计算机或者RDS服务器(我们尝试通过RDP连接到该服务器)上安装最新的Windows累积安全更新。
- 解决方法1.我们可以在RDP服务器端禁用NLA(网络级别身份验证)(如下所述);
- 解决方法2.我们可以通过允许桌面使用不安全版本的CredSSP连接到远程桌面来重新配置桌面(如上面链接中的文章中所述)。为此,请更改注册表参数" AllowEncryptionOracle"(使用以下命令:
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters/v AllowEncryptionOracle/t REG_DWORD/d 2
)或者更改本地策略"加密Oracle修复",方法是将其值设置为"易受攻击"。如果我们无法本地登录服务器(通过ILO,虚拟机控制台或者云提供商Web界面),则这是通过RDP访问远程服务器的唯一方法。我们可以在这种模式下连接到远程服务器,并安装最新的安全更新。更新服务器后,不要忘记禁用该策略或者将注册表参数AllowEncryptionOracle的值返回为0(
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 0
)。
在Windows中禁用NLA for Remote Desktop
如果在RDP服务器上启用了NLA,则意味着CredSSP用于RDP用户的预身份验证。通过取消选中仅允许运行带有网络级别身份验证的远程桌面的计算机的连接(推荐)
选项(Windows 10 /8.1或者Windows Server 2012R2/2015),可以在远程
选项卡上的系统属性
中禁用网络级别身份验证。 )。
在Windows 7(Windows Server 2008 R2)中,此选项的调用方式有所不同。在"远程"选项卡上,选择选项"允许从运行任何版本的远程桌面的计算机连接(安全性较低)"。
我们还可以使用本地组策略编辑器" gpedit.msc"(我们可以在Windows 10 Home Edition中运行gpedit.msc这样)或者使用域组策略管理控制台" GPMC.msc"来禁用网络级别身份验证(NLA)。 。在策略编辑器中,转到"计算机配置>管理模板> Windows组件>远程桌面服务>远程桌面会话主机>安全"部分,找到并禁用策略"使用网络级身份验证要求用户身份验证以进行远程连接"。
我们还需要在"要求对远程(RDP)连接使用特定安全层"策略设置中选择" RDP"安全层。
要应用新的RDP设置,我们需要更新本地计算机上的组策略(
gpupdate/force
)或者重新启动桌面。之后,我们应该成功连接到远程桌面。