2015-04-13 319 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后,这个问题就解决了。