Ansible 使用 SSH 密钥

Ato*_*lan 7 ssh-keys ansible ubuntu-14.04

从 Puppet 迁移到 Ansible。就像它没有代理和SSH驱动一样。我只是设置了两个测试虚拟机。一个作为 Ansible 服务器(是的矫枉过正),另一个作为示例客户端(随机 Linux 服务器)。我们所有的服务器仅使用公钥私钥对身份验证。这对于 Ansible 最初来说有些问题。我很(几乎可以肯定)Ansible 可以使用密钥对,但我似乎找不到一个很好的例子。

我通过执行以下操作,专门为 Ansible 创建了一个密钥对

ssh-keygen -t rsa -b 4096
Run Code Online (Sandbox Code Playgroud)

然后我将公钥复制到客户端。当我通过标准 SSH 对其进行测试时,密钥对身份验证效果很好。现在来测试 Ansible。我将测试客户端放在 Ansible 主机文件中,并使用唯一看起来正确的语法来使密钥对正常工作。

[TEST]
10.0.0.5 ansible_ssh_private_key_file=~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

当我尝试只运行一个基本的测试模块时

sudo ansible all -m ping
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息

10.0.0.5 | FAILED => SSH Error: Permission denied (publickey,password).
while connecting to 10.0.0.5:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
Run Code Online (Sandbox Code Playgroud)

显然,我对如何设置 Ansible 以使用密钥对的语法或概念性理解是有缺陷的。有什么建议?谢谢

Ato*_*lan 7

呸!它就在 ansible 配置文件 (/etc/ansible/ansible.cfg) 中

# if set, always use this private key file for authentication, same as
# if passing --private-key to ansible or ansible-playbook
private_key_file = /home/<username>/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

现在一切似乎都有效

10.0.0.5 | success >> {
"changed": false,
"ping": "pong"
}
Run Code Online (Sandbox Code Playgroud)