当我使用Ansible时,为什么没有ssh-agent验证私钥的密码呢?

时间:2018-05-04 05:13:01

标签: ssh ansible ssh-agent passphrase

简而言之

当我从命令行进入远程服务器时,ssh-agent将验证密码短语,但每当我执行一个ansible playbook时,它都会要求输入密码短语。我的问题是,为什么赢得ssh-agent验证Ansible的密码?我怎样才能让它发挥作用?

详细

我创建了一个受密码保护的私钥和相应的公钥,并将公钥上传到服务器。 我使用eval $(ssh-agent)然后ssh-add /etc/ansible/ssh/private-key.pem

调用了ssh-agent

键入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&​​GT;建立用户的SSH连接:user6   < 35.230.127.195&​​GT; 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&​​#39; / bin / sh   -c'"'"' echo~&&睡觉0'''"''输入密钥' /etc/ansible/ssh/private-key.pem'的密码:

我的环境

  • Ansible版本为2.4.2.0
  • Python版本为2.7.12
  • OpenSSH_7.2p2 Ubuntu-4ubuntu2.2,OpenSSL 1.0.2g
  • 使用RSA(而非SSH-1 RSA)创建ssh密钥 和4096位。
  • 在ansible.cfg中,传输设置为智能。
  • 密钥是使用ansible-vault加密的,但我已经尝试过了 没有加密,没有区别。

请帮助,我没有多少头发。

UPDATE:使用transport = local在本地执行所有操作(即它不会在远程服务器上执行ansible playbook(即使看起来像是这样))。

1 个答案:

答案 0 :(得分:-1)

转到以下位置的ansible.cfg文件:

  

/etc/ansible/ansible.cfg

并设置transport = local:

transport = local

由于