你可能会认为,有了所有的文件现在我已经完全掌握了 Ansible。
我的OpenSSH-Win64安装在C:\Program Files\OpenSSH-Win64 按此处规定。
Windows 目标 sshd 响应并接受使用本地账户密码进行本地账户的远程登录。
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 安装将绕过预期的“拒绝”。