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

如何配置Ansible跨多Realm管理Windows系统?krb5.conf配置遇阻

Ansible跨多域(Realm)管理Windows系统配置指南及问题排查

先修正你的krb5.conf语法错误

你提供的krb5.conf存在语法错误:DOMAIN1.COM的配置块未闭合大括号,直接嵌套了DOMAIN2.COM的配置,这会导致Kerberos客户端解析失败,进而触发异常认证请求,大概率是账号锁定的直接原因。修正后的配置如下:

[libdefaults]
default_realm = DOMAIN1.COM
allow_weak_crypto = true
dns_lookup_realm = true
dns_lookup_kdc = true
forward = true
forwardable = true
ticket_lifetime = 24h
renew_lifetime = 7d
dns_lookup_realm = false

[realms]
DOMAIN1.COM = {
    kdc = DOMAIN1_DC.DOMAIN1.COM
    admin_server = DOMAIN1_DC.DOMAIN1.COM
    default_domain = DOMAIN1.COM
    kpasswd_server = DOMAIN1_DC.DOMAIN1.COM
} # 补上DOMAIN1配置块的闭合大括号

DOMAIN2.COM = {
    kdc = DOMAIN2_DC.DOMAIN2.COM
    admin_server = DOMAIN2_DC.DOMAIN2.COM
    default_domain = DOMAIN2.COM
    kpasswd_server = DOMAIN2_DC.DOMAIN2.COM
}

[domain_realm]
domain1.com = DOMAIN1.COM
.domain1.com = DOMAIN1.COM
domain2.com = DOMAIN2.COM
.domain2.com = DOMAIN2.COM

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log

注:原配置中KDC地址写为DOMAIN1_DC.COM.COM,修正为DOMAIN1_DC.DOMAIN1.COM,避免DNS解析错误。

Ansible跨多Realm的核心配置要求

  1. Kerberos连通性验证

    • 确保Ansible服务器能ping通两个域的DC,且KDC端口(UDP/TCP 88)、LDAP端口(389)、WinRM端口(5985/5986)均开放
    • 修正krb5.conf后,用kinit测试双域账号认证:
      kinit user@DOMAIN1.COM
      kinit user@DOMAIN2.COM
      
      能成功获取票据则说明Kerberos配置正常
  2. Ansible Inventory分组配置
    不要依赖默认Realm自动适配,给不同域的主机分组并配置专属变量,避免认证混淆:

    [domain1_win]
    server1.domain1.com
    
    [domain2_win]
    server2.domain2.com
    
    [domain1_win:vars]
    ansible_connection=winrm
    ansible_winrm_transport=kerberos
    ansible_winrm_server_cert_validation=ignore
    ansible_user=admin@DOMAIN1.COM
    ansible_kerberos_realm=DOMAIN1.COM
    
    [domain2_win:vars]
    ansible_connection=winrm
    ansible_winrm_transport=kerberos
    ansible_winrm_server_cert_validation=ignore
    ansible_user=admin@DOMAIN2.COM
    ansible_kerberos_realm=DOMAIN2.COM
    
  3. Domain2 Windows主机WinRM配置补全
    除了Enable-PSRemoting,还要确认:

    • 允许域用户访问WinRM:执行Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI,给Domain2的用户组添加权限
    • WinRM已启用Kerberos认证:执行winrm get winrm/config/service/auth,确认Kerberos项为true

实现Ansible认证失败自动尝试不同域

Ansible无内置多Realm fallback机制,但可通过Playbook的block/rescue结构实现:

- name: 多域认证尝试
  hosts: all_win_hosts
  block:
    - name: 尝试Domain1账号认证
      win_ping:
      vars:
        ansible_user: admin@DOMAIN1.COM
        ansible_kerberos_realm: DOMAIN1.COM
  rescue:
    - name: 切换Domain2账号重试
      win_ping:
      vars:
        ansible_user: admin@DOMAIN2.COM
        ansible_kerberos_realm: DOMAIN2.COM

注:此方式会增加认证尝试次数,测试时需注意避免触发账号锁定规则。

账号锁定问题排查步骤

  1. 先在对应域的AD管理工具中解锁被锁定的账号
  2. 检查krb5.conf语法及KDC地址的DNS解析正确性
  3. 用ansible -m win_ping server2.domain2.com -vvv查看详细认证日志,定位失败具体原因
  4. 避免用同一跨域账号重复尝试认证,不同域的认证请求会被视为独立登录尝试,易触发锁定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:32:05