我生成了ssh密钥,并将其复制到远程服务器。当我尝试ssh到该服务器时一切正常:
ssh user@ip_address
用户不是root用户。如果我试着ssh抛出ansible:
ansible-playbook -i hosts playbook.yml
使用ansible playbook:
---
- hosts: web
remote_user: user
tasks:
- name: test connection
ping:
和托管文件:
[web]
192.168.0.103
我收到了错误:
...
Permission denied (publickey,password)
问题是什么?
答案 0 :(得分:9)
Ansible正在使用与您用于连接该“网络”计算机的密钥不同的密钥。
您可以通过
显式配置ansible以使用特定的私钥private_key_file=/path/to/key_rsa
如the docs中所述确保您使用ssh-copy-id -i /path/to/key_rsa.pub user@webmachine_ip_address
答案 1 :(得分:1)
在我的情况下,当主持人改变它的指纹时,我在运行ansible playbook时遇到了类似的错误。我发现了这一点,试图从命令行建立ssh连接。因此,在运行ssh-keygen -f "/root/.ssh/known_hosts" -R my_ip
之后,这个问题就解决了。
答案 2 :(得分:0)
嗨,按照以下步骤播放剧本。默认情况下,ansible使用root播放。 ansible-playbook -i托管playbook.yml -u用户 如果仍然出现错误,请在下面运行并将输出粘贴到此处。 ansible-playbook -i托管playbook.yml -u用户-vvv