刚开始使用Ansible时,我在客户端机器上build立了一个Asible用户,并从OpenSSL创build了一组密钥。 我以自己的账户运行Ansible。 我已经在Ansibleconfiguration中指定了用户和私钥文件。 我想让远程命令以这个用户和这个用户的身份运行,以执行需要提升的命令。
/etc/ansible/ansible.cfg private_key_file = /etc/ansible/pka/confman.crt remote_user = confman
像这样的命令在初始input密码之后不要求密码:
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和其他自动化工具远程运行安全性,因为input密码不是一个选项。
作为上下文,我从来不需要SSH服务器之间的SSH,总是从Windows机器使用诸如腻子,RoyalTS和mRemoteNG等工具,所以我的SSH知识是…稀疏。 我想我错过了一些明显的东西。
该function称为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
现在每个人都应该能够在代理中find密钥并进行身份validation,而不必每次都要求密码。 来自:文档:您的第一个命令