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

Ansible Kerberos认证报错求助及无域Linux节点配置指导

问题解答

1. Ansible中Kerberos认证的配置步骤

(1)Linux节点Kerberos客户端配置

确保/etc/krb5.conf配置正确,核心参数示例如下:

[libdefaults]
    default_realm = YOUR_DOMAIN.COM  # 替换为你的AD域名称(需大写)
    dns_lookup_kdc = true
    dns_lookup_realm = true

[realms]
    YOUR_DOMAIN.COM = {
        kdc = dc.your_domain.com  # 替换为域控制器的地址
        admin_server = dc.your_domain.com
    }

[domain_realm]
    .your_domain.com = YOUR_DOMAIN.COM
    your_domain.com = YOUR_DOMAIN.COM

配置完成后,执行kinit domain_user@YOUR_DOMAIN.COM获取Kerberos票据,再用klist命令验证票据是否成功生成。

(2)Ansible inventory/playbook配置

在Ansible主机清单(如hosts文件)中配置Windows节点的WinRM参数:

[windows]
win-host.your_domain.com

[windows:vars]
ansible_connection=winrm
ansible_winrm_transport=kerberos
ansible_winrm_server_cert_validation=ignore
ansible_user=domain_user@YOUR_DOMAIN.COM
# 注:Kerberos认证优先使用kinit获取的票据,无需明文密码;若要自动获取票据,可添加ansible_password,但不推荐明文存储

或在playbook中直接指定变量:

- name: 管理Windows节点
  hosts: windows
  vars:
    ansible_connection: winrm
    ansible_winrm_transport: kerberos
    ansible_winrm_server_cert_validation: ignore
    ansible_user: "domain_user@YOUR_DOMAIN.COM"
  tasks:
    - name: 连通性测试
      win_ping:

(3)Windows节点WinRM认证检查

确保Windows节点WinRM已启用Kerberos认证:

# 查看当前WinRM认证方式
Get-WSManInstance -ResourceURI winrm/config/service/auth -Enumerate

若Kerberos值为false,执行以下命令启用:

Set-Item -Path WSMan:\localhost\Service\Auth\Kerberos -Value $true

2. Kerberos对虚拟机域加入的要求

  • Windows受控节点必须加入域:Kerberos认证依赖Active Directory(AD)作为密钥分发中心(KDC),Windows节点加入域后才能纳入Kerberos信任体系,获取KDC颁发的认证票据。
  • Linux Ansible运行节点无需加入域:但必须保证与AD域控制器网络连通,且Kerberos客户端配置正确,能正常向KDC请求并获取有效票据。

3. 使用本地用户名密码登录的方案

Kerberos认证不支持本地账号,因为其依赖域KDC的信任体系,本地账号无对应域票据。这种场景下,应改用NTLM或Basic认证:

(1)Windows节点启用对应认证方式

# 启用NTLM认证(推荐,安全性优于Basic)
Set-Item -Path WSMan:\localhost\Service\Auth\NTLM -Value $true

# 若使用Basic认证(明文传输,需配合HTTPS,不推荐)
Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $true

(2)Ansible配置调整

在主机清单或playbook中修改认证参数:

[windows:vars]
ansible_connection=winrm
ansible_winrm_transport=ntlm
ansible_winrm_server_cert_validation=ignore
ansible_user=.\local_username  # 本地账号格式:.\用户名 或 机器名\用户名
ansible_password=local_user_password

或playbook示例:

- name: 用本地账号管理Windows节点
  hosts: windows
  vars:
    ansible_connection: winrm
    ansible_winrm_transport: ntlm
    ansible_winrm_server_cert_validation: ignore
    ansible_user: ".\local_admin"
    ansible_password: "local_pass123"
  tasks:
    - win_ping:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:16:09