刚开始使用 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)
为什么?
有没有办法设置密码?有没有更安全的方法?我计划通过 cron 和其他无法输入密码短语的自动化工具远程运行 ansible。
作为上下文,我从来不需要在 Linux 服务器之间进行 SSH,总是从使用 putty、RoyalTS 和 mRemoteNG 等工具的 Windows 机器上进行,所以我的 ssh 知识......稀疏。我想我错过了一些明显的东西。
该功能称为
ssh-agent
:现在 ansible 应该能够在代理中找到密钥并进行身份验证,而无需每次都要求输入密码。来自:文档:您的第一个命令