我使用Ansible通过Kerberos认证尝试连接到Windows
总结
遇到了一些问题,所以试着使用Ansible通过Kerberos认证连接到Windows环境,这里将方法和注意事项做成备忘录。
There are several ways to paraphrase “環境” (environment) in Chinese. Here is one option:
– 生態 – ecology
Ansible环境:CentOS7.6+Ansible2.8.5
目标:Windows2016(主机名=ws16001)
域控制器:Windows2016(主机名=ad01,域名=hoge.com)
目标方的设置。
目标机器将加入到域(hoge.com)中。
在winrm中,不需要更改Service的AllowUnencrypted和auth的Basic设置。
(这是在使用http通信的基本身份验证时的设置。)
Ansible端的配置
由于Ansible的官方网站以及前辈们的优秀文章已经提供了详细信息,所以我将略过细节。
我执行的命令如下。
yum -y install krb5-devel krb5-libs krb5-workstation
pip install pywinrm[kerberos]
另外,以下是Kerberos文件的内容。
请注意的是,尽管已经列举了一些要点,但需要小心大小写。
(変更部分を抜粋)
[libdefaults]
default_realm = HOGE.COM
[realms]
HOGE.COM = {
kdc = ad01.hoge.com
admin_server = ad01.hoge.com
defautl_domain = ad01.hoge.com
}
[domain_realm]
.hoge.com = HOGE.COM
hoge.com = HOGE.COM
使用下列命令来验证Kerberos认证的工作状态。
如果能够通过klist命令获得票据,则表示正常。
kinit -C administrator@HOGE.COM
klist
如果要丟棄票券,請執行kdestory。
Ansible的清单文件大致如下。
[windows]
ws16001
[windows:vars]
ansible_username=Administrator@HOGE.COM
ansible_password=password
ansible_port=5985
ansible_connection=winrm
此外,自从Ansible 2.3版本开始,只需在清单文件中指定ansible_user和ansible_password,就能自动进行Kerberos票证的获取和处理。
连接确认
进行了连接确认,使用win_ping命令。
(省略连接命令等)
在此过程中,遇到了以下问题:
1)代理设置
尽管已经在排除列表中排除了IP地址,但忽略了完全合格域名(FQDN),
一直尝试通过代理访问。(通过-vvvvv选项发现了这一点…)
→现在已经将FQDN添加到排除列表中,以直接进行连接。
2)Ansible的库存文件
需要使用FQDN而非IP地址指定。(由于在进行HTTP通信时使用了IP地址,因此直接使用造成了问题。)
当然,也需要能够解析名称,这可以在hosts文件中进行记录就可以了。