我们有什么

我们有什么

我已经为这个问题苦苦挣扎了一周,阅读了网上关于这个问题的每篇帖子。

我们有什么

  • 安装了 Hyper-V 角色的 Windows Server 2016 数据中心(netbios:hv)
  • Windows Server 2016 DataCenter 上的虚拟机(netbios:web、fs、dc)
  • 安装了 Linux 子系统的 Windows 10 专业笔记本电脑(netbios:asuslin)
  • dc.goodpeople.local 上的域以及所有服务器和客户端(包括 hv)都加入了 Active Directory 域
  • 在域控制器上安装了 AD CA 和中间颁发 CA
  • 所有服务器都已获得具有自动注册策略的证书以进行 Kerberos 身份验证

我想使用装有 kerberos 的 Windows 10 笔记本电脑通过 ansible 配置所有服务器(包括 hv)。目前,我只需要成功对所有服务器执行 win_ping 即可。

配置

  • 在所有服务器上配置 winrm:hv、web、fs、dc 和 clinet:asuslin 方式相同:kerberos 身份验证已打开,https 侦听器具有有效证书,防火墙端口 5986 已打开
  • 与所有 Windows 2016/win10 一样 - powershell 是最新版本,.NET 至少为 4.5
  • 客户端上的 ansible 已根据文档安装在 Linux 子系统上,并安装了所有必要的库,并使用了 asuslin 客户端的有效证书

实际误差

ansible hv -m win_ping -vvvv
ansible 2.5.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/alexsuslin/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.12 (default, Dec  4 2017, 14:50:18) [GCC 5.4.0 20160609]
Using /etc/ansible/ansible.cfg as config file
setting up inventory plugins
Parsed /etc/ansible/hosts inventory source with ini plugin
Loading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/minimal.pyc
META: ran handlers
Using module file /usr/lib/python2.7/dist-packages/ansible/modules/windows/win_ping.ps1
<hv.goodpeople.local> ESTABLISH WINRM CONNECTION FOR USER: [email protected] on PORT 5986 TO hv.goodpeople.local
checking if winrm_host hv.goodpeople.local is an IPv6 address
calling kinit with subprocess for principal [email protected]
hv.goodpeople.local | UNREACHABLE! => {
    "changed": false,
    "msg": "kerberos: authGSSClientStep() failed: (('Unspecified GSS failure.  Minor code may provide more information', 851968), ('Server not found in Kerberos database', -1765328377))",
    "unreachable": true
}

正在发挥作用

  • 我成功地用 win_ping 了所有服务器 fs、dc、web 和客户端 asuslin
  • 我可以Enter-PSSession hv.goodpeople.local -UseSSL -Authentication Kerberos
  • 由于我可以对其他服务器执行 win_ping 操作,因此我假设我的 krb5.conf 和 ansible inventory 文件配置正确。例如,如果我在组内运行 win_ping,则除 hv.goodpeople.local 之外的所有服务器都可以

我已经检查过

  • 使用 kerberos 和 SSL 将 winrm 从 powershell 传输到 hv.goodpeople.local --- 确定
  • hv.goodpeople.local 的 SPN 与其他服务器的比较:dc、web、fs --- 几乎相同(实际上,由于 hv 是 hyper-v 角色,因此还有一些额外的角色)
  • 我的账户凭证,尝试使用域管理员
  • winrm SDDL 在 hv.goodpeople.local 上 --- 看起来没问题
  • hv.goodpeople.local 和代表团的 SPN --- 确定
  • Linux 子系统和 hv.goodpeople.local 之间的 SSL 证书密码类型不同 --- 确定
  • kinit --- 好的,24 小时票始终有效
  • kvno HTTP/[email protected] -->HTTP/[email protected]: kvno = 17
  • 谷歌上关于该问题的每个页面(包括[serverfault.com])
    • dns 正在解析每台机器,包括 hv
    • krb5.conf 领域已正确配置大写字母和 FQDN 以及 ansible inventory

最让我困惑的是为什么相同的配置在一台服务器上不起作用,而在另一台服务器上却可以正常工作?我已经使用 powershell 应用了配置以确保一切都相同。如果有人能指出我应该检查哪些内容?

答案1

我做了一件非常愚蠢的事情

在 Windows(主机)计算机上,C:\WINDOWS\System32\Drivers\etc\hosts 文件中有一个条目

192.168.88.20 srv-gp

那是我的 hv 服务器...我已将其删除,一切运行正常...

PS我发现https://github.com/bgamble/pykerberos/blob/master/test.py脚本来测试我的 Kerberos 身份验证和错误

sudo ./test.py -s [email protected] -r GOODPEOPLE.LOCAL -p 5986 gssapi

我发现与 gp-srv 的奇怪连接...立即检查 /etc/host 和 windows hosts 文件并发现问题。

相关内容