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

Ansible通过CredSSP连接Windows报502错误,求排查指引

排查Ansible连接Windows时的CredSSP 502错误

针对你遇到的credssp: Bad HTTP response returned from server. Code 502连接错误,可按以下方向逐步排查:

1. 匹配传输协议与WinRM监听配置

你的Ansible配置使用credssp传输,但Windows客户端显示HTTP: Enabled | HTTPS: Disabled,而CredSSP默认依赖HTTPS(5986端口),协议不匹配是常见诱因:

  • 先确认Windows是否开启CredSSP支持:
    Get-WSManCredSSP
    
    输出需包含“服务器已配置为允许接收凭据”的提示。
  • 若坚持使用HTTP,需额外配置WinRM允许CredSSP在HTTP上运行:
    Set-Item WSMan:\localhost\Service\Auth\CredSSP -Value $true
    Set-Item WSMan:\localhost\Client\Auth\CredSSP -Value $true
    Enable-WSManCredSSP -Role Server -Force
    
    同时在Ansible变量中明确指定HTTP端口:
    ansible_winrm_port: 5985
    

2. 检查Linux端CredSSP依赖

Ansible使用CredSSP传输需要安装credssp Python库,确认依赖是否存在:

# 用pip安装
pip3 install credssp

# 或系统包管理器(根据发行版选择)
apt install python3-credssp  # Debian/Ubuntu系列
dnf install python3-credssp  # RHEL/CentOS/Rocky系列

3. 排查网络层面的502拦截

502错误通常与网关/代理/防火墙拦截有关:

  • 测试Linux到Windows的WinRM端口连通性:
    nc -zv <hostname> 5985  # HTTP端口
    nc -zv <hostname> 5986  # HTTPS端口
    
  • 确认Windows防火墙规则是否正确允许外部访问:
    Get-NetFirewallRule -Name "WINRM-HTTP-In-TCP", "WINRM-HTTPS-In-TCP" | Select-Object Name, Enabled
    
  • 排除代理影响:临时清空代理环境变量后重试连接:
    unset http_proxy https_proxy
    ansible <hostname> -m win_ping
    

4. 切换传输协议验证基础连接

暂时改用basic传输,排除CredSSP本身的问题:
修改Ansible变量:

ansible_winrm_transport: basic

运行ansible <hostname> -m win_ping测试,若成功则聚焦CredSSP配置;若失败则排查WinRM基础连接问题。

5. 查看WinRM详细日志定位错误

开启Windows WinRM verbose日志,获取具体错误信息:

Set-Item WSMan:\localhost\Service\Logging\Enabled -Value $true
Set-Item WSMan:\localhost\Service\Logging\LogLevel -Value Verbose

触发Ansible连接后,查看日志文件C:\Windows\System32\winevt\Logs\Microsoft-Windows-WinRM%4Operational.evtx,筛选相关错误条目分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:35:24