使用CREDSSP从Server A连接Server C时遇访问拒绝错误求助
解决跨PowerShell版本(PS3→PS5)的CredSSP访问被拒问题
碰到过类似的跨版本CredSSP配置问题,结合你描述的场景(Server A/B是PS3,Server C是PS5,移除CredSSP能正常连接但双跳失效),给你几个针对性的排查和解决步骤:
1. 核对Server C的组策略SPN配置细节
PowerShell 5.0对CredSSP的委派验证比PS3更严格,尤其是SPN的匹配规则:
- 打开
gpedit.msc,定位到计算机配置→管理模板→系统→凭据委派→允许委派新鲜凭据,确保已添加WSMAN/SERVER_C.domain.edu(完全匹配Server C的FQDN)和WSMAN/*.domain.edu(通配符匹配域名) - 配置完成后运行
gpupdate /force刷新组策略,再重启WinRM服务:Restart-Service WinRM
2. 确认Server A的CredSSP客户端委派列表包含Server C
在Server A上执行以下命令,检查当前允许的委派计算机:
Get-WSManCredSSP
输出的DelegateComputer字段必须包含SERVER_C.domain.edu或对应的通配符域名。如果没有,重新执行客户端配置:
Enable-WSManCredSSP -Role Client -DelegateComputer 'SERVER_C.domain.edu','*.domain.edu' –Force
PS3和PS5对通配符的解析逻辑略有差异,明确指定Server C的FQDN可以避免版本兼容问题。
3. 验证Server C的WinRM CredSSP配置状态
在Server C上运行以下命令,确认CredSSP身份验证已启用:
Get-WSManInstance -ResourceURI winrm/config/service/auth -Enumerate
确保CredSSP的值为true,如果不是,重新启用:
Enable-WSManCredSSP -Role Server –Force
同时检查WinRM监听是否正常:
Test-WSMan SERVER_C.domain.edu
4. 检查账号的远程管理权限
确保用于连接的domain\user.service账号在Server C上具备远程管理权限:
- 该账号需要属于Server C的本地管理员组,或者被添加到WinRM的授权用户列表
- 在Server C上执行以下命令查看权限配置:
Get-PSSessionConfiguration | Select-Object Name, Permission
确认账号拥有FullControl权限。
5. 临时调整PS5的身份验证策略(测试用)
PS5默认禁用了部分旧版身份验证协议,可能导致PS3发起的CredSSP请求被拒绝。可以临时启用NTLM验证测试:
Set-Item WSMan:\localhost\Service\Auth\NTLM -Value $true
如果此时能成功连接,说明是协议兼容性问题,后续可以考虑在Server A上升级PowerShell版本(推荐),或者调整Server C的WinRM安全策略。
6. 通过事件日志定位深层原因
如果以上步骤都无效,查看Server C的事件日志获取更详细的错误信息:
- 打开事件查看器,检查
Windows Logs -> Security中的登录拒绝事件 - 查看
Applications and Services Logs -> Microsoft -> Windows -> WinRM中的WinRM相关错误日志,里面会包含具体的错误代码和失败原因(比如SPN不匹配、权限不足等)
内容的提问来源于stack exchange,提问作者moore1emu
相关产品推荐
相关产品推荐

