免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
问题描述
通过微软的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系统版本
- 通过管理终端连接Windows实例,详情请参见连接方式概述。
- 单击 按钮,右键单击这台电脑,选择属性。
- 打开控制面板,单击远程设置,在远程桌面页签,取消仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议) ,单击确定。
Windows Server 2016系统版本
- 通过管理终端连接Windows实例,详情请参见连接方式概述。
- 单击 按钮,单击Windows系统,右键单击此电脑,选择更多>属性。
- 打开控制面板,单击远程设置,在远程桌面页签,取消仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议) ,单击确定。
方法二 :Windows安全更新
此处以Windows Server 2016系统版本为例,其他Windows系统版本操作类似
- 单击 按钮,单击设置,在Windows 设置页面,单击更新与安全。
- 在更新状态页面,单击检查更新,等待更新下载和安装。
说明:如果需要手动安装CredSSP对应安全更新包,请参考微软官网地址进行选择对应版本的安全更新下载。
- 重启实例或重启服务器以完成安装更新。
方法三:修改注册表
此处以Windows Server 2016系统版本为例,其他Windows系统版本操作类似。当客户端或服务器端完成CredSSP相关补丁的更新后,请选择以下任意方法修改注册表。
警告:
- 如果修改注册表不当,可能会出现严重问题,您需要自行承担修改注册表风险。修改注册表之前,建议您先通过创建快照备份数据,以免数据丢失。
- 本方法会降低您本地计算机或Windows实例的安全性,建议您使用脚本修改注册表。
手动修改注册表
- 单击 按钮,右键单击运行,在运行框中输入
regedit
,单击确定。 - 打开注册表编辑器页面,依次单击HKEY_LOCAL_MACHINE>SOFTWARE>Microsoft>Windows>CurrentVersion>Policies>System>CredSSP>Parameters。
- 如果CredSSP项或Parameters项不存在,请新建CredSSP项或者Parameters项,在Parameters项下新建REG_DWORD类型的AllowEncryptionOracle值,并设置数据数值为2。
- 重启实例或重启服务器更新配置。
脚本修改注册表
- 单击 按钮,右键单击运行,在运行框中输入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
- 重启实例或重启本地计算机。
说明:若您优先使用本方法修改了注册表,随后又更新了客户端和ECS实例安全补丁,建议您将
AllowEncryptionOracle
的值设为0
或者1
以获得更高的安全性。
相关文档
适用于
- 云服务器ECS
- 轻量应用服务器