远程连接Windows实例时出现身份验证CredSSP错误的处理方法
问题描述
通过微软的RDP协议客户端,远程连接Windows实例时,系统提示“出现身份验证错误,要求的函数不受支持(The function requested is not supported)”错误。
问题原因
微软官方2018年5月,更新了凭据安全支持提供程序协议(CredSSP)相关补丁和身份验证请求方式。当遇到如下一种情景时,就会出现该连接错误。
- 情景一:客户端未更新该补丁,服务器端已更新该补丁且加密Oracle修正的策略为强制更新的客户端。
- 情景二:客户端已更新该补丁且加密Oracle修正的策略为强制更新的客户端,服务器端未更新该补丁。
- 情景三:客户端已更新该补丁且加密Oracle修正的策略为缓解,服务器端未更新该补丁。
注:
- 未更新该补丁指没有更新自2018年5月起至今的任意版本补丁(包括最新版本补丁)。
- 已更新该补丁指更新过自2018年5月起至今的任意版本补丁或者所有版本补丁(包括最新版本补丁)。
- 加密Oracle修正的策略步骤为单击 计算机配置 > 管理模板 > 系统 > 凭据分配 > 加密Oracle修正。更多信息请参考相关文档步骤。
解决方案
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
方法一 :服务器端允许任意版本的远程桌面连接
由于Windows Server系统版本较多,且各版本之间操作略有差异,此处分别以Windows Server 2008 R2、Windows Server 2012 R2和Windows Server 2016三个主流版本为例,步骤如下。
Windows Server 2008 R2系统版本
- 通过远程连接登录Windows实例,打开 开始 ,右键单击 计算机,选择 属性。
- 在系统控制面板中,单击 远程设置,在弹出的 远程桌面 选项中选择 允许运行任意版本远程桌面的计算机连接(较不安全) 并单击 确定。
Windows Server 2012 R2系统版本
- 通过远程连接登录Windows实例,打开 开始 界面,右键单击 这台电脑,选择 属性。
- 在系统控制面板中,单击 远程设置,在弹出的 远程桌面 选项中取消选择 仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议) 并单击 确定。
Windows Server 2016系统版本
- 通过远程连接登录Windows实例,打开 开始 界面,单击 Windows系统,右键单击 此电脑,选择 更多 > 属性。
- 在系统控制面板中,单击 远程设置,在弹出的 远程桌面 选项中取消选择 仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议) 并单击 确定。
方法二 :Windows安全更新
注:
- 此处以Windows Server 2016系统版本为例,其他Windows系统版本操作类似。
- 如果您的客户端是Windows系统,请同样执行如下操作。
- 通过远程连接登录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
。 - 重启实例或重启本地计算机。
脚本修改
- 登录Windows实例或者本地计算机,以管理员身份运行
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
以获得更高的安全性。