在 Windows 上使用域用户使用 Ansible

2024-01-07

我开始学习 Ansible,但文档并没有太大帮助。

我已经在 RHEL 上安装了控制机并创建了必要的hosts文件和窗口.yml.

但是,当尝试连接到远程 Windows 服务器以取回 pong 时,我收到以下错误:

[root@myd666 ansible_test]# ansible windows -i hosts -m win_ping
hostname | UNREACHABLE! => {
    "changed": false,
    "msg": "ssl: the specified credentials were rejected by the server",
    "unreachable": true
}

After 安装 python-kerberos 依赖项 http://docs.ansible.com/ansible/intro_windows.html#active-directory-support,

我现在得到这个错误:

hostname | UNREACHABLE! => {
    "changed": false,
    "msg": "Kerberos auth failure: kinit: KDC reply did not match expectations while getting initial credentials",
    "unreachable": true
}

My 窗口.yml文件包含:

# it is suggested that these be encrypted with ansible-vault:
# ansible-vault edit group_vars/windows.yml
ansible_ssh_user: [email protected] /cdn-cgi/l/email-protection
ansible_ssh_pass: password
ansible_ssh_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore

我的语法有什么问题吗域\用户?也许我忘记在 Windows 机器上安装某些东西?我只运行了配置RemotingForAnsible.ps1脚本,并且Python没有安装在那里。

这是我的krb5.conf file:

[libdefaults]
default_realm = MYDOMAIN.NET
#dns_lookup_realm = true
#dns_lookup_kdc = true

[realms]
MYDOMAIN.NET = {
kdc = dc1.mydomain.net
default_domain = hpeswlab.net
}

[domain_realm]
.mydomain.net = MYDOMAIN.NET
 mydomain.net = MYDOMAIN.NET

我确实使用 Kinit 获得了一个令牌:

kinit -C [email protected] /cdn-cgi/l/email-protection

klist

克列表输出:

Valid starting       Expires              Service principal
01/31/2017 11:25:33  01/31/2017 21:25:33  krbtgt/MY[email protected] /cdn-cgi/l/email-protection
        renew until 02/01/2017 11:25:29

In 窗口.yml,请仔细检查并确保ansible_ssh_user: [email protected] /cdn-cgi/l/email-protection该行确实有大写的领域 MYDOMAIN.NET。在某个地方,向 KDC 发送的领域请求以小写形式而不是大写形式发送,导致“KDC 回复与预期不符……”错误。

In krb5.conf,区分大小写也很重要。首先,我要注意的是,由于 KDC 名称是 IP 主机的名称,因此需要将其指定为完全限定的主机名,如下例所示。它假设您的 KDC 名为“dc1.mydomain.net”。接下来,域名只能在lower案件。另一方面,Kerberos 领域名称需要位于uppercase - 如果在此文件中错误地以小写形式指定了领域名称,这是您可能收到此错误消息的另一个原因。请将整个 krb5.conf 修改为如下所示(仅将“dc1”更改为实际名称),它应该可以工作。旁注:您不一定需要两者dns_lookup_krb5.conf 中的行,因此请根据以下内容将其注释掉。这些只是后备机制麻省理工学院 Kerberos 文档 http://web.mit.edu/Kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html实际上可能会在您的简单用例中引起问题。修改任一配置文件后,请确保在再次测试之前重新启动 Ansible 引擎。

[libdefaults]
default_realm = MYDOMAIN.NET
#dns_lookup_realm = true
#dns_lookup_kdc = true

[realms]
MYDOMAIN.NET = {
kdc = dc1.mydomain.net
default_domain = mydomain.net
        }

[domain_realm]
.mydomain.net = MYDOMAIN.NET 
mydomain.net = MYDOMAIN.NET

请参阅 MIT 参考资料,了解如何正确设置 krb5.conf:示例 krb5.conf 文件 http://web.mit.edu/KERBEROS/krb5-1.5/krb5-1.5.4/doc/krb5-admin/Sample-krb5_002econf-File.html

In the Hosts文件中,检查以确保您的 IP 到名称的映射正确。根据 RFC,Kerberos 需要一个正常运行的 DNS,如果您的 Hosts 文件中包含过时的条目,您将面临更改 DNS 的风险。

最后,虽然我无法判断您使用的是哪个版本的 Ansible,但我做了一些研究,发现“Ansible 2.0 已弃用 ansible_ssh_user、ansible_ssh_host 和 ansible_ssh_port 中的“ssh”,改为 ansible_user、ansible_host 和 ansible_port。 ”这肯定是问题的一部分。看:Windows 上的 Ansible 文档 http://docs.ansible.com/ansible/intro_windows.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 上使用域用户使用 Ansible 的相关文章

随机推荐