刚开始使用 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 应该能够在代理中找到密钥并进行身份验证,而无需每次都询问密码。来自:文档:您的第一个命令