我使用Ansible 1.5.3和Git與ssh代理轉發(https://help.github.com/articles/using-ssh-agent-forwarding)。我可以登錄到,我與Ansible和測試管理服務器,我連接到Git是正確配置:使用Ansible進行SSH代理轉發
[email protected]:~$ ssh -T [email protected]
Hi gituser! You've successfully authenticated, but GitHub does not provide shell access.
我也可以克隆和更新,所以我的git的配置看起來不錯,用這個賬戶我的回購協議之一,當我通過ssh直接登錄到我的服務器時使用ssh轉發。
問題:當我使用Ansible命令模塊嘗試上面顯示的相同測試時。它以「權限被拒絕」失敗。在Ansible輸出(有詳細日誌記錄)的部分看起來像這樣:
failed: [xxx.xxxxx.com] => {"changed": true, "cmd": ["ssh", "-T", "[email protected]"], "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).
這裏是運行此命令的簡單劇本:
- hosts: webservers
sudo: yes
remote_user: ubuntu
tasks:
- name: Test that git ssh connection is working.
command: ssh -T [email protected]
的問題:爲什麼一切都正常工作,當我手動登錄通過ssh運行命令,但是當通過Ansible以相同的用戶運行相同的命令時失敗?
我會很快發佈答案,如果沒有人擊敗我。儘管我使用git來演示這個問題,但是依賴於ssh代理轉發的任何模塊都可能會發生這種情況。它不是特定於Ansible,但我懷疑很多人會在這種情況下首先遇到問題。
可能需要明確設置'sudo:no'。 –
這些sudoers爲我改變作品。 – dannyman
如果使用SSH_AUTH_SOCK至少知道安全風險http://serverfault.com/a/371788/67801 – SystematicFrank