本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文介绍通过远程桌面连接Windows实例时出现“出现身份验证错误,要求的函数不受支持”错误提示的解决方案。
问题现象
通过远程桌面连接Windows实例时,出现错误提示“出现身份验证错误,要求的函数不受支持”。
问题原因
微软官方于2018年5月,更新了凭据安全支持提供程序协议(CredSSP)相关补丁和身份验证请求方式。默认情况下,安装此更新后,修补的本地电脑无法与未修补的ECS实例进行通信。
加密Oracle修正是操作系统内的一种策略设置,此策略设置可应用于使用 CredSSP 组件(例如,远程桌面连接)的应用程序。
当遇到如下任一情况时,会出现该连接错误:
情景一:本地电脑未更新该补丁,ECS实例已更新该补丁且加密Oracle修正的策略为强制更新的客户端,请参考方案一:ECS实例允许远程桌面连接进行修复。
情景二:本地电脑已更新该补丁且加密Oracle修正的策略为强制更新的客户端,ECS实例未更新该补丁,请参考方案二 :安装对应补丁或方案三:修改注册表进行修复。
情景三:本地电脑已更新该补丁且加密Oracle修正的策略为缓解,ECS实例未更新该补丁。 请参考进行修复,请参考方案二 :安装对应补丁或方案三:修改注册表进行修复。
未更新该补丁,指没有更新自2018年5月起至今的任意版本补丁,包括最新版本补丁。
已更新该补丁,指更新过自2018年5月起至今的任意版本补丁或者所有版本补丁,包括最新版本补丁。
更多加密Oracle修正的策略信息,请参见CVE-2018-0886的CredSSP更新。
解决方案
根据实际情况,参考以下三种解决方案:
方案一:ECS实例允许远程桌面连接
由于Windows Server系统版本较多,且各版本之间操作略有差异,此处分别以Windows Server 2008 R2、Windows Server 2012 R2和Windows Server 2016版本为例,步骤如下。
Windows Server 2008 R2系统版本
通过VNC连接Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
单击开始,右键单击计算机,然后单击属性。
在控制面板主页区域,单击远程设置。
在系统属性对话框中,勾选允许运行任意版本远程桌面的计算机连接(较不安全),然后单击确定。
Windows Server 2012 R2系统版本
通过VNC连接Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
单击图标,右键单击这台电脑,然后单击属性。
在控制面板主页上,单击远程设置。
在远程页签下,取消勾选仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议) ,然后单击确定。
Windows Server 2016系统版本
通过VNC连接Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
单击图标,然后单击Windows系统。
右键单击此电脑,然后选择更多 > 属性。
在控制面板主页上,单击远程设置。
在远程页签下,取消勾选仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议) ,然后单击确定。
方案二 :安装对应补丁
此处以Windows Server 2016系统版本为例,其他Windows系统版本操作类似。
通过VNC连接Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
单击图标,单击设置。
在Windows 设置页面,单击更新和安全。
在更新状态页面,单击检查更新,等待更新下载和安装。
说明如果需要手动安装CredSSP对应安全更新包,请访问微软官网,然后下载对应版本的安全更新包。
重启Windows实例以完成安装更新。
方式一:在ECS控制台上重启Windows实例,具体操作,请参见重启实例。
方式二:以Windows Server 2016版本为例,在远程连接的Windows实例上,选择 > > 重启。
方案三:修改注册表
此处以Windows Server 2016系统版本为例,其他Windows系统版本操作类似。当本地电脑或ECS实例完成CredSSP相关补丁的更新后,请选择以下一种方式修改注册表。
如果修改注册表不当,Windows操作系统可能会出现严重问题,您需要自行承担修改注册表的风险。修改注册表之前,建议您先创建快照备份数据,以免数据丢失。创建快照的具体操作,请参见创建一个云盘快照。
(推荐)使用脚本修改注册表
通过VNC连接Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
打开CMD命令提示行。
右键单击图标,然后单击运行。
在运行对话框中输入
cmd
。单击确定。
进入CMD命令提示行。
执行以下命令,进入PowerShell模式。
powershell
执行如下命令,以管理员身份运行
Windows PowerShell
脚本。New-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name CredSSP -Force New-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP -Name Parameters -Force Get-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters | New-ItemProperty -Name AllowEncryptionOracle -Value 2 -PropertyType DWORD -Force
重启Windows实例以完成安装更新。
方式一:在ECS控制台上重启Windows实例,具体操作,请参见重启实例。
方式二:以Windows Server 2016版本为例,在远程连接的Windows实例上,选择 > > 重启。
说明若您先使用本方法修改了注册表,随后又更新了本地电脑和Windows实例的安全补丁,建议您将
AllowEncryptionOracle
的数值数据设为0
或者1
以获得更高的安全性。AllowEncryptionOracle
的数值数据信息,请参见CVE-2018-0886的CredSSP更新。
手动修改注册表
通过VNC连接Windows实例。
具体操作,请参见通过密码认证登录Windows实例。
打开注册表编辑器。
右键单击图标,然后单击运行。
在运行对话框中输入
regedit
。单击确定。
进入注册表编辑器。
在注册表编辑器页面的
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters
路径下,将注册表项AllowEncryptionOracle
的数值数据设置为2。说明注册表项
AllowEncryptionOracle
的数值数据信息,请参见CVE-2018-0886的CredSSP更新。如果
CredSSP
项或Parameters
项不存在,请新建对应注册表项,然后在该注册表项下新建REG_DWORD类型的注册表项AllowEncryptionOracle
。以CredSSP
项和Parameters
均不存在为例,操作如下:在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
路径下新建CredSSP
项。右键单击注册表项空表区域,然后选择新建(N) > 项(K)。
输入
CredSSP
,按Enter
键。
在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP
路径下新建Parameters
项。在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters
路径下新建AllowEncryptionOracle
项。修改注册表项
AllowEncryptionOracle
的数值数据。右键单击注册表项
AllowEncryptionOracle
,然后单击修改(M)。在对话框中,将数值数据设置为2,然后单击确定。
重启Windows实例以更新配置。
方式一:在ECS控制台上重启Windows实例,具体操作,请参见重启实例。
方式二:以Windows Server 2016版本为例,在远程连接的Windows实例上,选择 > > 重启。