首页/系统/Windows 运维速查/双跳问题与 CredSSP/委派

双跳问题与 CredSSP/委派

跳板机→服务器A→服务器B 的“双跳”会让第二跳丢失委派凭据:方案有 CredSSP、Kerberos 约束委派、或逐跳建会话。

Windows 运维速查系统更新于 2026-10-13

双跳问题是什么

双跳问题的本质是凭据无法继续转发:用跳板机远程连到服务器 A,再从 A 上访问服务器 B 的共享、数据库或注册表时,第二跳使用的仍是第一跳留下的登录令牌,凭据并没有随会话传过去,于是报「拒绝访问」。常见解法有 CredSSP、Kerberos 约束委派和逐跳显式建会话三种,安全性与配置成本依次不同,能用约束委派就不要用 CredSSP。

基本信息

适用平台Windows + WinRM/PowerShell 远程、跳板机运维
典型现象第一跳成功,第二跳访问网络资源被拒绝
方案一CredSSP:配置简单,凭据转发到目标机,风险高
方案二Kerberos 约束委派:更安全,配置较复杂
方案三逐跳显式建会话,或由本地直接访问目标

典型使用场景

  • 跳板机运维:在 A 上执行命令却需要读 B 上的共享或注册表
  • Invoke-Command 嵌套调用时第二跳报拒绝访问
  • 评估安全方案,比较 CredSSP 与约束委派的适用范围与风险
  • 排查「换成管理员账号也一样被拒」,确认不是权限配错
  • 设计远程运维体系时先规划委派模型,避免长期依赖凭据转发

常用示例

常用示例
# 现象:第一跳正常,第二跳访问远端资源失败
Invoke-Command -ComputerName srv-a -ScriptBlock { Get-ChildItem \\srv-b\share }
# 方案一:CredSSP(客户端声明可委派目标,目标端启用服务端角色)
Enable-WSManCredSSP -Role Client -DelegateComputer 'srv-b.corp.local'
Enable-WSManCredSSP -Role Server        # 在目标端执行
Invoke-Command -ComputerName srv-a -Authentication Credssp -Credential (Get-Credential) -ScriptBlock { Get-ChildItem \\srv-b\share }
# 方案三:逐跳显式建会话,让第二跳由客户端直接发起
Invoke-Command -ComputerName srv-b -ScriptBlock { hostname }

方案取舍

方案原理取舍
CredSSP把凭据转发到目标机配置简单,目标机被攻破等于凭据泄露
Kerberos 约束委派限定服务与目标,按票证委派更安全,配置较复杂
逐跳显式会话客户端分别连接两台机器安全,适合脚本编排
本地直接 UNC绕开第二跳改动最小,需网络可达
双跳的报错和权限不足几乎一模一样,先确认「访问是不是从另一台机器发起的」,往往能省下大量无用权限排查时间。
CredSSP 需要在客户端与目标端两边分别启用并配对,任何一侧缺失都会失败;组策略环境下还要确认委派计算机列表没有被策略覆盖。

易错点

  • 把双跳误判成权限问题:反复给账号加权限,实际是认证链路设计问题
  • 在生产环境直接上 CredSSP:凭据被转发到目标机,风险显著放大
  • 只在一侧启用 CredSSP:配置不完整,报错现象与之前完全一样
  • 同一高权限账号逐跳登录却不做最小权限设计:一台被控就容易横向移动

数据来源与参考

  • Microsoft Learn:CredSSP
  • Microsoft Learn:约束委派

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌