刚刚开始使用Ansible,我在客户端计算机上设置了一个Asible用户,并从OpenSSL创建了一组密钥.我在自己的帐户下运行Ansible.我在Ansible配置中指定了用户和私钥文件.我希望远程命令以此用户和该用户的身份运行,以执行需要提升的命令.
/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,总是来自使用putty,RoyalTS和mRemoteNG等工具的Windows机器,因此我的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
现在ansible应该能够在代理中找到密钥并进行身份验证,而不必每次都要求密码. From: Documentation: Your first commands