我生成了ssh密钥,并将其复制到远程服务器。当我尝试ssh到该服务器时,一切正常:
ssh user@ip_address
用户不是根。如果我尝试 ssh 抛出 ansible:
ansible-playbook -i hosts playbook.yml
使用 Ansible 剧本:
---
- hosts: web
remote_user: user
tasks:
- name: test connection
ping:
和主机文件:
[web]
192.168.0.103
我收到错误:
...
Permission denied (publickey,password)
怎么了?
与您用于连接到该"网络"机器的密钥相比,Ansible 使用的密钥不同。
您可以通过以下方式显式配置 ansible 以使用特定私钥
private_key_file=/path/to/key_rsa
如文档中所述,请确保将 ansible 使用的密钥授权给远程计算机中的远程用户,并具有ssh-copy-id -i /path/to/key_rsa.pub user@webmachine_ip_address
就我而言,当主机更改指纹时,我在运行 ansible 剧本时遇到了类似的错误。我发现了这一点,试图从命令行建立 ssh 连接。因此,运行ssh-keygen -f "/root/.ssh/known_hosts" -R my_ip
后,此问题得到了解决。
按如下方式运行播放。 默认情况下,Ansible 使用 root 进行播放。ansible-playbook -i hosts playbook.yml -u user如果仍然收到错误,请在下面运行并将输出粘贴到此处。ansible-playbook -i hosts playbook.yml -u user -vvv<</p>
您可以检查是否有授权保存在 IP 192.168.0.103 上 cat /home/ubuntu/.ssh/authorized_keys
如果没有 IP,则使用命令将 id_rsa.pub 复制到authorized_keys
vim /home/ubuntu/.ssh/authorized_keys