In short ,
当我从命令行进入远程服务器时,ssh-agent将验证密码短语,但每当我执行一个ansible playbook时,它都会要求输入密码 . 我的问题是, why won't ssh-agent authenticate the passphrase for Ansible? How can I get it to work?
In detail ,
我创建了一个受密码保护的私钥和相应的公钥,并将公钥上传到服务器 . 我使用 eval $(ssh-agent)
然后 ssh-add /etc/ansible/ssh/private-key.pem
调用了ssh-agent
键入 ssh-agent -l
表示已添加密钥 .
我可以使用_1444705从命令行成功进入机器,而不会被要求输入密码 . 但是,如果我执行一个剧本或做类似 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 module location = /usr/lib/python2.7/dist-packages/ ansible可执行文件位置= / usr / bin / ansible python版本= 2.7.12(默认,2017年11月20日,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>为用户 Build 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-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication = no -o User = user6 -o ConnectTimeout = 10 -o ControlPath = / home / user6 / .ansible / cp / e26536be01 35.230.127.195'/ bin / sh -c'“'”'ec ho~ && sleep 0'“''''输入密钥'/etc/ansible/ssh/private-key.pem'的密码:
My Environment
-
Ansible版本是2.4.2.0
-
Python版本是2.7.12
-
OpenSSH_7.2p2 Ubuntu-4ubuntu2.2,OpenSSL 1.0.2g
-
ssh密钥是使用RSA(不是SSH-1 RSA)和4096位创建的 .
-
在ansible.cfg传输中设置为智能 .
-
密钥是使用ansible-vault加密的,但是我试过没有加密就做了,没有任何区别 .
请帮忙,我没留下太多头发 .
UPDATE: 使用 transport = local
在本地执行所有操作(即它不会在远程服务器上执行ansible playbook(即使它看起来像是这样)) .
1 回答
转到以下位置的ansible.cfg文件:
并设置transport = local:
谢谢