2015-04-13 323 views
6

我生成了ssh密鑰,並將其複製到遠程服務器。當我嘗試SSH到該服務器一切工作正常:ansible ssh權限被拒絕

ssh [email protected]_address 

用戶不是根。如果我嘗試的ssh拋ansible:

ansible-playbook -i hosts playbook.yml 

與ansible劇本:

--- 
- hosts: web 
    remote_user: user 
    tasks: 
    - name: test connection 
     ping: 

和hosts文件:

[web] 
192.168.0.103 

我得到了錯誤:

... 
Permission denied (publickey,password) 

有什麼問題?

+3

當你說「一切正常」,它是否要求輸入密碼?用'-vvvv'重新運行併發布輸出.. – Kashyap

回答

9

Ansible正在使用與您用來連接到「網絡」機器的相比不同的密鑰。

可以明確配置ansible通過

private_key_file=/path/to/key_rsa 

使用特定的私鑰作爲the docs提到請確保您授權該密鑰這ansible用途,在遠程機器的遠程用戶與ssh-copy-id -i /path/to/key_rsa.pub [email protected]_ip_address

+0

我也有這個問題,併爲每個主機使用ssh-copy-id做了詭計 – MadPink

+0

/etc/ansible/ansible.cfg中的配置是一個,但不是唯一的地方可以定義替代的ssh密鑰。當我遇到這個問題時,原因是在清單文件中,其中定義了用於每個主機的單個密鑰。 –

1

在我的情況下,當主機更改它的指紋時,我在運行完整的操作手冊時遇到了類似的錯誤。我發現這一點,試圖從命令行建立SSH連接。所以,在運行ssh-keygen -f "/root/.ssh/known_hosts" -R my_ip後,這個問題就解決了。