通过远程桌面连接Windows实例时出现“出现身份验证错误,要求的函数不受支持”如何解决?

更新时间:
复制为 MD 格式

本文介绍通过远程桌面连接Windows实例时出现“出现身份验证错误,要求的函数不受支持”错误提示的解决方案。

问题现象

通过远程桌面连接Windows实例时,出现错误提示“出现身份验证错误,要求的函数不受支持”。

问题原因

微软官方于20185月,更新了凭据安全支持提供程序协议(CredSSP)相关补丁和身份验证请求方式。默认情况下,安装此更新后,修补的本地电脑无法与未修补的ECS实例进行通信。

说明

加密Oracle修正是操作系统内的一种策略设置,此策略设置可应用于使用 CredSSP 组件(例如,远程桌面连接)的应用程序。

当遇到如下任一情况时,会出现该连接错误:

说明
  • 未更新该补丁,指没有更新自20185月起至今的任意版本补丁,包括最新版本补丁。

  • 已更新该补丁,指更新过自20185月起至今的任意版本补丁或者所有版本补丁,包括最新版本补丁。

  • 更多加密Oracle修正的策略信息,请参见CVE-2018-0886CredSSP更新

解决方案

根据实际情况,参考以下三种解决方案:

方案一:ECS实例允许远程桌面连接

说明

由于Windows Server系统版本较多,且各版本之间操作略有差异,此处分别以Windows Server 2008 R2、Windows Server 2012 R2Windows Server 2016版本为例,步骤如下。

Windows Server 2008 R2系统版本

  1. 通过VNC连接Windows实例。

    具体操作,请参见通过VNC连接实例

  2. 单击开始,右键单击计算机,然后单击属性

  3. 控制面板主页区域,单击远程设置

  4. 系统属性对话框中,勾选允许运行任意版本远程桌面的计算机连接(较不安全),然后单击确定

Windows Server 2012 R2系统版本

  1. 通过VNC连接Windows实例。

    具体操作,请参见通过VNC连接实例

  2. 单击win2012开始图标图标,右键单击这台电脑,然后单击属性

  3. 控制面板主页上,单击远程设置

  4. 远程页签下,取消勾选仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议) ,然后单击确定

Windows Server 2016系统版本

  1. 通过VNC连接Windows实例。

    具体操作,请参见通过VNC连接实例

  2. 单击Dingtalk_20210510142550.jpg图标,然后单击Windows系统

  3. 右键单击此电脑,然后选择更多 > 属性

  4. 控制面板主页上,单击远程设置

  5. 远程页签下,取消勾选仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议) ,然后单击确定

方案二 :安装对应补丁

此处以Windows Server 2016系统版本为例,其他Windows系统版本操作类似。

  1. 通过VNC连接Windows实例。

    具体操作,请参见通过VNC连接实例

  2. 单击Dingtalk_20210510142550.jpg图标,单击设置

  3. Windows 设置页面,单击更新安全

  4. 更新状态页面,单击检查更新,等待更新下载和安装。

    说明

    如果需要手动安装CredSSP对应安全更新包,请访问微软官网,然后下载对应版本的安全更新包。

  5. 重启Windows实例以完成安装更新。

    • 方式一:在ECS控制台上重启Windows实例,具体操作,请参见重启实例

    • 方式二:以Windows Server 2016版本为例,在远程连接的Windows实例上,选择Dingtalk_20210510142550.jpg > 电源管理 > 重启

方案三:修改注册表

此处以Windows Server 2016系统版本为例,其他Windows系统版本操作类似。当本地电脑或ECS实例完成CredSSP相关补丁的更新后,请选择以下一种方式修改注册表。

警告

如果修改注册表不当,Windows操作系统可能会出现严重问题,您需要自行承担修改注册表的风险。修改注册表之前,建议您先创建快照备份数据,以免数据丢失。创建快照的具体操作,请参见创建一个云盘快照

(推荐)使用脚本修改注册表

  1. 通过VNC连接Windows实例。

    具体操作,请参见通过VNC连接实例

  2. 打开CMD命令提示行。

    1. 右键单击Dingtalk_20210510142550.jpg图标,然后单击运行

    2. 运行对话框中输入cmd

    3. 单击确定

      进入CMD命令提示行。

  3. 执行以下命令,进入PowerShell模式。

    powershell
  4. 执行如下命令,以管理员身份运行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
  5. 重启Windows实例以完成安装更新。

    • 方式一:在ECS控制台上重启Windows实例,具体操作,请参见重启实例

    • 方式二:以Windows Server 2016版本为例,在远程连接的Windows实例上,选择Dingtalk_20210510142550.jpg > 电源管理 > 重启

    说明

    若您先使用本方法修改了注册表,随后又更新了本地电脑和Windows实例的安全补丁,建议您将AllowEncryptionOracle数值数据设为0或者1以获得更高的安全性。AllowEncryptionOracle数值数据信息,请参见CVE-2018-0886CredSSP更新

手动修改注册表

  1. 通过VNC连接Windows实例。

    具体操作,请参见通过VNC连接实例

  2. 打开注册表编辑器。

    1. 右键单击Dingtalk_20210510142550.jpg图标,然后单击运行

    2. 运行对话框中输入regedit

    3. 单击确定

      进入注册表编辑器。

  3. 注册表编辑器页面的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters路径下,将注册表项AllowEncryptionOracle数值数据设置为2

    说明

    注册表项AllowEncryptionOracle数值数据信息,请参见CVE-2018-0886CredSSP更新

    如果CredSSP项或Parameters项不存在,请新建对应注册表项,然后在该注册表项下新建REG_DWORD类型的注册表项AllowEncryptionOracle。以CredSSP项和Parameters均不存在为例,操作如下:

    1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System路径下新建CredSSP项。

      1. 右键单击注册表项空表区域,然后选择新建(N) > 项(K)

      2. 输入CredSSP,按Enter键。

    2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP路径下新建Parameters项。

    3. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters路径下新建AllowEncryptionOracle项。

    4. 修改注册表项AllowEncryptionOracle数值数据

      1. 右键单击注册表项AllowEncryptionOracle,然后单击修改(M)

      2. 在对话框中,将数值数据设置为2,然后单击确定

  4. 重启Windows实例以更新配置。

    • 方式一:在ECS控制台上重启Windows实例,具体操作,请参见重启实例

    • 方式二:以Windows Server 2016版本为例,在远程连接的Windows实例上,选择Dingtalk_20210510142550.jpg > 电源管理 > 重启

相关文档

CVE-2018-0886 | CredSSP 远程执行代码漏洞