问题描述
通过远程桌面连接登录 Windows 实例时,出现以下报错:
- “发生身份验证错误,给函数提供标志无效”。
- “发生身份验证错误。要求的函数不受支持”。
问题分析
由于微软于2018年3月发布了一个安全更新,此更新通过更正凭据安全支持提供程序协议(CredSSP),以及在身份验证过程中验证请求的方式,修复 CredSSP 存在的远程执行代码漏洞。客户端和服务器都需要安装此更新,否则可能出现问题描述中的情况。
以下三种情况均会引起远程连接失败:
- 情况一:客户端未修补,服务器安装了安全更新,并且策略配置为 “强制更新的客户端”。
- 情况二:服务器未修补,客户端安装了安全更新,并且策略配置为 “强制更新的客户端”。
- 情况三:服务器未修补,客户端安装了安全更新,并且策略配置为 “缓解”。
解决方案
说明: 若仅对客户端本地进行升级操作,请直接执行 方案一:安装安全更新(推荐)。
通过 VNC 登录云服务器
- 登录 云服务器控制台。
- 在实例的管理页面,找到目标云服务器实例,单击【登录】。
- 在弹出的 “登录Windows实例” 窗口中,选择【其它方式(VNC)】,单击【立即登录】,登录云服务器。
- 在弹出的登录窗口中,选择左上角的 “发送远程命令”,单击 Ctrl-Alt-Delete 进入系统登录界面。
方案一:安装安全更新(推荐)
安装安全更新,可更新未修补的客户端/服务器端。不同系统对应的更新情况可参见 CVE-2018-0886 | CredSSP 远程执行代码漏洞。本方案以 Windows Server 2016 为例。 其它操作系统可参考以下操作进入【Windows 更新】:
- Windows Server 2012:【控制面板】>【系统和安全】>【Windows 更新】
- Windows Server 2008:【开始】>【控制面板】>【系统和安全】>【Windows Update】
- Windows10:
>【设置】>【更新和安全】
- Windows 7:
>【控制面板】>【系统和安全】>【Windows Update】
- 在操作系统界面,单击
,选择【设置】。
- 在打开的 “设置” 窗口中,选择【更新和安全】。
- 在 “更新和安全” 中,选择 【Windows 更新】,单击【检查更新】。
- 根据界面提示,单击【开始安装】。
- 安装完成后,重启实例,完成更新。
方案二:修改策略配置
在已安装安全更新的机器中,将【加密 Oracle 修正】策略设置为 “易受攻击” 。本方案以 Windows Server 2016 为例,其操作步骤如下:
注意: Windows 10 家庭版操作系统中,若没有组策略编辑器,可通过修改注册表来实现。操作步骤请参见 方案三:修改注册表。
在操作系统界面,单击
,输入 gpedit.msc,按 Enter,打开 “本地组策略编辑器”。
说明: 您也可使用 “Win+R” 快捷键打开运行界面。
在左侧导航树中,选择【计算机配置】>【管理模板】>【系统】>【凭据分配】,双击【加密 Oracle 修正】。
在打开的 “加密 Oracle 修正” 窗口中,选择【已启用】,并将【保护级别】设置为【易受攻击】。
单击【确定】,完成设置。
方案三:修改注册表
- 在操作系统界面,单击
,输入 regedit,按 Enter,打开注册表编辑器。
说明: 您也可使用 “Win+R” 快捷键打开运行界面。
在左侧导航树中,依次展开【计算机】>【HKEY_LOCAL_MACHINE】>【SOFTWARE】>【Microsoft】>【Windows】>【CurrentVersion】>【Policies】>【System】>【CredSSP】>【Parameters】目录。
说明: 若该目录路径不存在,请手动创建。
右键单击【Parameters】,选择【新建】>【DWORD(32位)值】,并将文件名称命名为 “AllowEncryptionOracle”。
双击新建的 “AllowEncryptionOracle” 文件,将 “数值数据” 设置为 “2”,单击【确定】。
重启实例。