如何记住/缓存或指定 Ansible 的私钥密码

ZZ9*_*ZZ9 4 linux ssh redhat configuration-management ansible

刚开始使用 Ansible,我在客户端机器上设置了一个 Asible 用户,并从 OpenSSL 创建了一组密钥。我在自己的帐户下运行 Ansible。我已经在 Ansible 配置中指定了用户和私钥文件。我希望远程命令以该用户身份运行,并且该用户 sudo 执行需要提升的命令。

/etc/ansible/ansible.cfg

private_key_file = /etc/ansible/pka/confman.crt
remote_user = confman
Run Code Online (Sandbox Code Playgroud)

诸如此类的命令在初始输入密码后不要求输入密码:

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

每次运行它们时都会提示输入密码:

ansible all -m ping -b
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)

ansible all -m ping --sudo
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)

ansible all -a "cat /etc/redhat-release"
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)
Run Code Online (Sandbox Code Playgroud)

为什么?

有没有办法设置密码?有没有更安全的方法?我计划通过 cron 和其他自动化工具远程运行 ansible,在这些工具中不能输入密码。

作为上下文,我从来不需要在 Linux 服务器之间使用 SSH,总是在 Windows 机器上使用 putty、RoyalTS 和 mRemoteNG 等工具,所以我的 ssh 知识......很少。我想我错过了一些明显的东西。

Jak*_*uje 6

该功能称为ssh-agent

$ eval `ssh-agent`  # you might have agent already running so this might not be needed
$ ssh-add /etc/ansible/private_keys/confman.crt
Run Code Online (Sandbox Code Playgroud)

现在 ansible 应该能够在代理中找到密钥并进行身份验证,而无需每次都要求输入密码。来自:文档:你的第一个命令