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

Ansible Tower连接Windows服务器出现403错误排查求助

Ansible Tower连接Windows服务器WinRM 403错误排查指引

问题描述

执行Ansible Tower Playbook时,首个*收集事实(gathering facts)*任务失败,返回403错误:

basic: Bad HTTP response returned from server. Code 403

已确认信息:

  • Tower到目标Windows服务器的5985、5986端口连通,ping正常
  • 目标WinRM客户端/服务端配置已尽可能开放(配置见下文)
  • 尝试过5985/5986端口,ansible_winrm_transport设为ntlm/basic,均返回403
  • 目标机器同网段其他软件可通过wsman正常连接
  • 跨网络环境,目标机器无限制WinRM的组策略

目标WinRM配置

客户端配置

Client
    NetworkDelayms = 5000
    URLPrefix = wsman
    AllowUnencrypted = true
    Auth
        Basic = true
        Digest = true
        Kerberos = true
        Negotiate = true
        Certificate = true
        CredSSP = true
    DefaultPorts
        HTTP = 5985
        HTTPS = 5986
    TrustedHosts = *

服务端配置

Service
    RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
    MaxConcurrentOperations = 4294967295
    MaxConcurrentOperationsPerUser = 1500
    EnumerationTimeoutms = 240000
    MaxConnections = 300
    MaxPacketRetrievalTimeSeconds = 120
    AllowUnencrypted = true
    Auth
        Basic = true
        Kerberos = true
        Negotiate = true
        Certificate = true
        CredSSP = true
        CbtHardeningLevel = Relaxed
    DefaultPorts
        HTTP = 5985
        HTTPS = 5986
    IPv4Filter = *
    IPv6Filter = *
    EnableCompatibilityHttpListener = true
    EnableCompatibilityHttpsListener = false
    CertificateThumbprint
    AllowRemoteAccess = true

当前Tower主机变量配置

ipaddress: 1.1.1.1
ansible_host: 1.1.1.1
ostype: "windows"
ansible_user: "user"
ansible_password: "password"
ansible_connection: "winrm"
ansible_winrm_transport: "ntlm"
ansible_port: 5986
ansible_winrm_server_cert_validation: "ignore"

排查步骤

1. 验证WinRM用户权限

  • 确认ansible_user属于Windows本地管理员组,或具备WinRM远程执行权限(可通过net localgroup administrators命令确认)
  • 若使用域用户,需确认用户已被授予远程管理权限,且域组策略未限制WinRM访问

2. 检查WinRM服务SDDL权限

当前服务端RootSDDL配置需确保允许远程用户访问:

  • 执行winrm get winrm/config/service,检查RootSDDL是否包含远程用户的权限条目
  • 若权限配置存疑,可重置为默认SDDL:
    winrm set winrm/config/service '@{RootSDDL="O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)"}'
    
    (默认SDDL允许管理员和交互用户访问,非管理员用户需手动添加权限)

3. 排查跨网络WinRM限制

由于Tower与目标机器跨网络,需确认:

  • 中间防火墙/安全设备是否拦截WinRM的HTTP/HTTPS请求内容(而非仅端口),比如过滤WinRM的SOAP数据包
  • 在Tower服务器上直接用winrm命令测试连接,排除Tower模板配置问题:
    # 测试HTTP(5985)
    winrm enumerate winrm/config/listener -r:http://1.1.1.1:5985 -u:user -p:password -auth:basic
    # 测试HTTPS(5986)
    winrm enumerate winrm/config/listener -r:https://1.1.1.1:5986 -u:user -p:password -auth:ntlm -skipcncheck
    
    若此命令也返回403,说明问题出在WinRM服务或网络层面,而非Tower配置

4. 检查WinRM侦听器配置

  • 执行winrm enumerate winrm/config/listener,确认侦听器已正确绑定到目标IP(或0.0.0.0),且启用了对应认证方式
  • 若使用HTTPS,确认证书已正确绑定到侦听器(即使设置了证书验证忽略,证书本身需有效)

5. 验证用户认证方式兼容性

  • 若使用basic认证,需确保用户密码未过期、无复杂密码限制冲突
  • 若使用ntlm,可尝试添加变量强制启用NTLMv2:
    ansible_winrm_ntlm_v2: true
    

6. 检查Windows本地安全策略

  • 打开本地安全策略 → 本地策略 → 用户权限分配,确认用户具备从网络访问此计算机权限,且未被加入拒绝从网络访问此计算机列表

7. 查看WinRM详细日志

  • 打开Windows事件查看器 → 应用程序和服务日志 → Microsoft → Windows → WinRM → Operational,查找403错误对应的日志条目,确认具体拒绝原因(如权限不足、认证方式不允许等)

内容的提问来源于stack exchange,提问作者Dániel Kőcs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:58:14