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

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

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

/etc/ansible/ansible.cfg

private_key_file = /etc/ansible/pka/confman.crt
remote_user = confman

此类命令在首次输入密码后不会要求输入密码:

ansible all -m ping

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

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)

为什么?

有什么方法可以设置密码吗?有没有更安全的方法?我计划远程运行 ansible,并通过 cron 和其他无法输入密码的自动化工具运行。

作为背景,我从来不需要在 Linux 服务器之间使用 SSH,总是从 Windows 机器上使用诸如 putty、RoyalTS 和 mRemoteNG 之类的工具,所以我的 ssh 知识……很少。我想我忽略了一些显而易见的东西。

答案1

该功能称为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

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

相关内容