如何解决通过远程桌面连接Windows时提示"出现身份验证错误,要求的函数不受支持"
问题现象
通过远程桌面连接Windows服务器时,出现错误提示“出现身份验证错误,要求的函数不受支持,远程计算机:x.x.x.x,这可能是由于CredSSP加密数据库修正”。
问题原因
微软官方于2018年5月,更新了凭据安全支持提供程序协议(CredSSP)相关补丁和身份验证请求方式。默认情况下,安装此更新后,修补的客户端无法与未修补的服务器进行通信。
说明
加密Oracle修正是操作系统内的一种策略设置,此策略设置可应用于使用CredSSP组件(例如,远程桌面连接)的应用程序。
当遇到如下任一情况时,会出现该连接错误:
- 情景一:本地电脑未更新该补丁,Windows服务器已更新该补丁且加密Oracle修正的策略为“强制更新的客户端”。
- 情景二:本地电脑已更新该补丁且加密Oracle修正的策略为“强制更新的客户端”,Windows服务器未更新该补丁。
- 情景三:本地电脑已更新该补丁且加密Oracle修正的策略为“已缓解”,Windows服务器未更新该补丁。
说明
- 未更新该补丁,指没有更新自2018年5月起至今的任意版本补丁,包括最新版本补丁。
- 已更新该补丁,指更新过自2018年5月起至今的任意版本补丁或者所有版本补丁,包括最新版本补丁。
- 更多加密Oracle修正的策略信息,请参见CVE-2018-0886的CredSSP更新。
互操作性矩阵
服务器 | |||||
---|---|---|---|---|---|
未修补 | 强制更新的客户端 | 已缓解 | 易受攻击 | ||
客户端 | 未修补 | 允许 | 阻止 | 允许 | 允许 |
强制更新的客户端 | 阻止 | 允许 | 允许 | 允许 | |
已缓解 | 阻止 | 允许 | 允许 | 允许 | |
易受攻击 | 允许 | 允许 | 允许 | 允许 |
解决方法
客户端操作
修改组策略
- 按“
Win+R键
”,打开运行窗口,输入“gpedit.msc
”,单击“确定
”,打开本地组策略编辑器
- 依次展开
计算机配置
>管理模板
>系统
>凭据分配
- 双击“
加密Oracle修正
”,设置为“已启用
”,“保护级别
”设置为“易受攻击
”,单击“确定
”
按“
Win+R键
”,打开运行窗口,输入“cmd
”,单击“确定
”,打开命令提示符。执行 “gpupdate/force
”命令对组策略进行刷新,使配置的组策略生效尝试登录服务器
服务器操作
说明
完成以上操作后在上述客户端上应该就可以正常登录服务器了,但是按照互操作性矩阵,在其他更新了补丁的客户端可能还是会出现无法登录的情况,为了一劳永逸,建议在服务器上进行以下操作,其中安装补丁后需要重启计算机,请自行选择合适的时间窗口重启,避免影响业务。
下载并安装CredSSP远程执行代码漏洞补丁
说明
如已安装可忽略此步
在修改组策略时如果没有加密Oracle修正
的选项则说明机器没有安装漏洞补丁
- 根据自己的系统版本到CVE-2018-0886-安全更新程序指南-Microsoft-CredSSP远程执行代码漏洞选择下载响应的补丁(本文以
Windows Server 2012 R2
为例)
- 双击运行下载的补丁,安装完成后需要重启计算机。
修改组策略
- 按“
Win+R键
”,打开运行窗口,输入“gpedit.msc
”,单击“确定
”,打开本地组策略编辑器
- 依次展开
计算机配置
>管理模板
>系统
>凭据分配
- 双击“
加密Oracle修正
”,设置为“已启用
”,“保护级别
”设置为“易受攻击
”,单击“确定
”
- 按“
Win+R键
”,打开运行窗口,输入“cmd
”,单击“确定
”,打开命令提示符。执行 “gpupdate/force
”命令对组策略进行刷新,使配置的组策略生效