我正在使用Ansible 1.5.3和Git与ssh代理转发(https://help.github.com/articles/using-ssh-agent-forwarding).我可以登录到我使用Ansible管理的服务器并测试我与git的连接是否正确配置:
ubuntu@test:~$ ssh -T git@github.com
Hi gituser! You've successfully authenticated, but GitHub does not provide shell access.
Run Code Online (Sandbox Code Playgroud)
我也可以使用这个帐户克隆和更新我的一个repos,这样我的git配置看起来不错,当我直接通过ssh登录我的服务器时使用ssh转发.
问题:当我使用Ansible命令模块尝试上面显示的相同测试时.它以"Permission denied"失败.Ansible输出的一部分(详细日志记录)如下所示:
failed: [xxx.xxxxx.com] => {"changed": true, "cmd": ["ssh", "-T", "git@github.com"], "delta": "0:00:00.585481", "end": "2014-06-09 14:11:37.410907", "rc": 255, "start": "2014-06-09 14:11:36.825426"}
stderr: Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
这是运行此命令的简单playbook:
- hosts: webservers
sudo: yes
remote_user: ubuntu
tasks:
- name: Test that git ssh connection is working.
command: ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)
问题:当我通过ssh手动登录并运行命令时,为什么一切正常,但是当同一个命令通过Ansible运行同一个命令时失败?
如果没有其他人打败我,我会很快发布答案.虽然我使用git来演示问题,但是任何依赖于ssh代理转发的模块都可能发生这种情况.它不是Ansible特有的,但我怀疑很多人会在这种情况下首先遇到问题.