You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible连接特定服务器偶发Kerberos认证失败(返回Response 200)求助

排查Ansible Kerberos随机认证失败问题

问题重现

使用Ansible对特定服务器执行ping或部署剧本时,约33%概率出现认证失败,报错信息:

UNREACHABLE! => {
    "changed": false,
    "msg": "kerberos: Unable to authenticate <Response [200]>",
    "unreachable": true
}

排查步骤

  • 捕获控制节点Kerberos调试日志
    在运行Ansible的控制节点上临时开启Kerberos追踪:

    export KRB5_TRACE=/tmp/krb5_trace.log
    

    重复执行Ansible ping操作直至失败,查看日志中失败请求的具体环节,比如票据获取超时、验证失败等细节。

  • 目标服务器Kerberos事件日志分析
    在目标Windows服务器上开启Kerberos详细日志:

    1. 打开事件查看器,定位到应用程序和服务日志 > Microsoft > Windows > Kerberos-Key-Distribution-Center和Kerberos日志
    2. 右键日志选择“属性”,将日志级别设为“详细”
      触发失败后,检查对应时间点的日志,查找KDC返回的错误码(如KDC_ERR_PREAUTH_FAILED)或WinRM服务处理票据的异常记录。
  • 手动测试Kerberos票据获取稳定性
    模拟Ansible的认证流程,手动重复获取目标服务器的SPN票据:

    kinit -S WSMAN/<目标服务器FQDN>@<域名> <域账号>
    

    连续执行50-100次,统计失败率。若手动执行也出现失败,说明问题在Kerberos票据获取环节;若全成功,需排查Ansible WinRM客户端的连接逻辑。

  • 检查目标服务器Kerberos缓存与配置

    • 在目标服务器执行klist命令,查看是否存在过期票据堆积、重复票据等异常
    • 对比无问题的镜像服务器,确认域组策略中Kerberos票据的最大票据生存期、最大服务票据生存期等参数一致。
  • 网络链路稳定性排查

    • 在控制节点与目标服务器、目标服务器与域控制器之间持续执行ping测试:
      # Linux控制节点
      ping -f -c 1000 <目标服务器IP>
      # Windows目标服务器
      ping -t <域控制器IP>
      
    • 使用mtr(Linux)或tracert(Windows)检查链路节点是否存在丢包,同时确认防火墙/负载均衡未对Kerberos流量(UDP/TCP 88)设置随机丢弃规则。
  • 调整Ansible WinRM连接参数

    • 在Ansible配置或剧本中调整超时参数:
      winrm_connection_timeout: 60
      winrm_operation_timeout_sec: 60
      
    • 尝试禁用连接复用,添加配置:
      winrm_reconnection_retries: 0
      

内容的提问来源于stack exchange,提问作者Thyica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 20:19:58