• 首页 > 
  • 远程连接Windows实例时出现身份验证错误的处理方法

远程连接Windows实例时出现身份验证错误的处理方法

KB: 71931

 · 

更新时间:2021-05-27 14:54

免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

问题描述

通过微软的RDP协议客户端,远程连接Windows实例时,提示“出现身份验证错误,要求的函数不受支持(The function requested is not supported)”的错误。

问题原因

微软官方于2018年5月,更新了凭据安全支持提供程序协议(CredSSP)相关补丁和身份验证请求方式。当遇到如下一种情景时,则会出现该连接错误:

  • 情景一:客户端未更新该补丁,服务器端已更新该补丁且加密Oracle修正的策略为强制更新的客户端。
  • 情景二:客户端已更新该补丁,且加密Oracle修正的策略为强制更新的客户端,服务器端未更新该补丁。
  • 情景三:客户端已更新该补丁,且加密Oracle修正的策略为缓解,服务器端未更新该补丁。
    说明:
    • 未更新该补丁,指没有更新自2018年5月起至今的任意版本补丁,包括最新版本补丁。
    • 已更新该补丁,指更新过自2018年5月起至今的任意版本补丁或者所有版本补丁,包括最新版本补丁。
    • 请参见CVE-2018-0886的CredSSP更新,修正加密Oracle的策略。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

方法一 :服务器端允许任意版本的远程桌面连接

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

Windows Server 2012 R2系统版本

  1. 通过管理终端连接Windows实例,详情请参见连接方式概述
  2. 单击 Dingtalk_20210510142550.jpg 按钮,右键单击这台电脑,选择属性

  3. 打开控制面板,单击远程设置远程桌面页签,取消仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议) ,单击确定

Windows Server 2016系统版本

  1. 通过管理终端连接Windows实例,详情请参见连接方式概述
  2. 单击 Dingtalk_20210510142550.jpg 按钮,单击Windows系统,右键单击此电脑,选择更多>属性

  3. 打开控制面板,单击远程设置,在远程桌面页签,取消仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议) ,单击确定

方法二 :Windows安全更新

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

  1. 单击 Dingtalk_20210510142550.jpg 按钮,单击设置,在Windows 设置页面,单击更新与安全
  2. 更新状态页面,单击检查更新,等待更新下载和安装。
    说明:如果需要手动安装CredSSP对应安全更新包,请参考 微软官网地址进行选择对应版本的安全更新下载。
    Dingtalk_20210510150120.jpg
  3. 重启实例或重启服务器以完成安装更新。

方法三:修改注册表

此处以Windows Server 2016系统版本为例,其他Windows系统版本操作类似。当客户端或服务器端完成CredSSP相关补丁的更新后,请选择以下任意方法修改注册表。

警告:

  • 如果修改注册表不当,可能会出现严重问题,您需要自行承担修改注册表风险。修改注册表之前,建议您先通过创建快照备份数据,以免数据丢失。
  • 本方法会降低您本地计算机或Windows实例的安全性,建议您使用脚本修改注册表

手动修改注册表

  1. 单击 Dingtalk_20210510142550.jpg 按钮,右键单击运行,在运行框中输入regedit,单击确定
  2. 打开注册表编辑器页面,依次单击HKEY_LOCAL_MACHINE>SOFTWARE>Microsoft>Windows>CurrentVersion>Policies>System>CredSSP>Parameters
  3. 如果CredSSP项或Parameters项不存在,请新建CredSSP项或者Parameters项,在Parameters下新建REG_DWORD类型的AllowEncryptionOracle,并设置数据数值2

  4. 重启实例或重启服务器更新配置。

脚本修改注册表

  1. 单击 Dingtalk_20210510142550.jpg 按钮,右键单击运行,在运行框中输入cmd,单击确定
  2. 执行以下命令,进入PowerShell模式。
    powershell
  3. 以管理员身份运行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
  4. 重启实例或重启本地计算机。
    说明:若您优先使用本方法修改了注册表,随后又更新了客户端和ECS实例安全补丁,建议您将 AllowEncryptionOracle 的值设为 0 或者 1 以获得更高的安全性。

相关文档

适用于

  • 云服务器ECS
  • 轻量应用服务器

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。