在 Windows 目标上,Ansible 使用 .ssh 和 authorized_key 的正确位置和权限是什么?

在 Windows 目标上,Ansible 使用 .ssh 和 authorized_key 的正确位置和权限是什么?

你可能会认为,有了所有的文件现在我已经完全掌握了 Ansible。

我的OpenSSH-Win64安装在C:\Program Files\OpenSSH-Win64 按此处规定

Windows 目标 sshd 响应并接受使用本地账户密码进行本地账户的远程登录。

install-sshd.ps1 安装

C:\ProgramData\ssh

并且我设置了 Win 目标 sshd_config:

PubkeyAuthentication yes

我将我在 Ansible 主机上生成的 ansible_test_id_rsa.pub 的内容复制到:

C:\Users\localadmin\.ssh\authorized_keys

但后来我在 sshd_config 中发现了这个我从未见过的东西:

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

因此,针对这一点,我将公钥内容添加到administrators_authorized_keys中,并将访问权限设置为仅限SYSTEM和管理员。

但是我的:

ansible -u user all -m ping

仍然导致:

hostname | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: user@hostname: Permission denied (publickey,password,keyboard-interactive).",
    "unreachable": true
}

如何放置、填充这些文件并设置权限?

答案1

另一个可能失败的原因(无论如何对我来说是失败的)是,我安装了另一种语言(德语)的 Windows,而 openssh 组匹配行使用文本字符串管理员匹配管理员。但在德语 MS 中,改用管理员。 ;-(

英语:(当前运输默认)

Match Group administratoren
  AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

德语:

Match Group administratoren
  AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

不要这么疯狂。请将当前的 Match 规则更改为如下内容:

Match Group *S-1-5-32-544
  AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

他们确实应该允许使用 SID 来实现这一点,更重要的是允许使用 DenyGroups 匹配。

如果他们也只使用文本字符串匹配,那么这是一个安全漏洞,因为使用不同语言的 Windows 安装将绕过预期的“拒绝”。

相关内容