简而言之,
当我从命令行进入远程服务器时,ssh-agent将验证密码短语,但每当我执行一个ansible playbook时,它都会要求输入密码短语。我的问题是,为什么赢得ssh-agent验证Ansible的密码?我怎样才能让它发挥作用?详细,
我创建了一个受密码保护的私钥和相应的公钥,并将公钥上传到服务器。
我使用eval $(ssh-agent)
然后ssh-add /etc/ansible/ssh/private-key.pem
键入ssh-agent -l
表示已添加密钥。
我可以使用ssh username@ipaddress
从命令行成功进入计算机,而不会被要求输入密码。
但如果我执行一个剧本或做sudo ansible -m ping server
之类的事情,它会说
输入密钥' /etc/ansible/ssh/private-key.pem'的密码:
我在详细模式下再次尝试了它,它给了我以下信息
ansible 2.4.2.0
config file = /etc/ansible/ansible.cfg已配置 模块搜索路径= [u' / etc / ansible / library']
ansible python模块 location = /usr/lib/python2.7/dist-packages/ansible
可执行 location = / usr / bin / ansible
python version = 2.7.12(默认,11月20日 2017,18:23:56)[GCC 5.4.0 20160609]使用/etc/ansible/ansible.cfg作为 配置文件使用ini插件解析/ etc / ansible / hosts库存源META:运行处理程序使用模块文件 /usr/lib/python2.7/dist-packages/ansible/modules/system/ping.py < 35.230.127.195>建立用户的SSH连接:user6 < 35.230.127.195> SSH:EXEC ssh -C -o ControlMaster = auto -o ControlPersist = 60s -o StrictHostKeyChecking = no -o Port = 22 -o ' IdentityFile =" /etc/ansible/ssh/private-key.pem"' -o KbdInteractiveAuthentication = no -o PreferredAuthentications = GSSAPI与 - 麦克风,GSSAPI-keyex,基于主机的,公钥 -o PasswordAuthentication = no -o User = user6 -o ConnectTimeout = 10 -o ControlPath = / home / user6 / .ansible / cp / e26536be01 35.230.127.195' / bin / sh -c'"'"' echo~&&睡觉0'''"''输入密钥' /etc/ansible/ssh/private-key.pem'的密码:
我的环境
请帮助,我没有多少头发。
UPDATE:使用transport = local
在本地执行所有操作(即它不会在远程服务器上执行ansible playbook(即使看起来像是这样))。
答案 0 :(得分:-1)
转到以下位置的ansible.cfg文件:
/etc/ansible/ansible.cfg
并设置transport = local:
transport = local
由于