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 知识......很少。我想我错过了一些明显的东西。
该功能称为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 应该能够在代理中找到密钥并进行身份验证,而无需每次都要求输入密码。来自:文档:你的第一个命令