Ansible SSH权限被拒绝

7

我已经生成了 SSH 密钥,并将其复制到远程服务器。当我尝试 SSH 连接到该服务器时,一切都正常:

ssh user@ip_address

用户不是root。如果我尝试通过ansible进行ssh:

ansible-playbook -i hosts playbook.yml

使用Ansible Playbook:

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

以及 hosts 文件:

[web]
192.168.0.103

我收到了一条错误信息:
...
Permission denied (publickey,password)

有什么问题?


3
当你说“一切正常”时,它是否要求输入密码?重新运行命令,并使用-vvvv参数,将输出内容发布。 - Kashyap
4个回答

9

Ansible使用的密钥与您用于连接到“web”机器的密钥不同。

您可以通过以下方式明确配置ansible使用特定的私钥:

private_key_file=/path/to/key_rsa

文档所述,请确保您已经授权Ansible使用的密钥,并使用ssh-copy-id -i /path/to/key_rsa.pub user@webmachine_ip_address命令将其授权给远程机器上的远程用户。


我也遇到了这个问题,对于每个主机使用ssh-copy-id解决了这个问题。 - MadPink
在 /etc/ansible/ansible.cfg 中的配置并不是定义替代 ssh 密钥的唯一位置。当我遇到这个问题时,原因在清单文件中,其中定义了每个主机要使用的单独密钥。 - Jonas Eicher

1

在我的情况下,当主机更改其指纹时运行ansible playbook时遇到了类似的错误。我从命令行尝试建立ssh连接时发现了这个问题。因此,在运行ssh-keygen -f "/root/.ssh/known_hosts" -R my_ip之后,问题得以解决。


0
你可以检查是否在IP 192.168.0.103上保存了授权信息,使用以下命令:cat /home/ubuntu/.ssh/authorized_keys。如果没有IP,则可以使用以下命令将id_rsa.pub复制到authorized_keys中:vim /home/ubuntu/.ssh/authorized_keys

0

你好,请按照以下方式运行play。默认情况下,ansible使用root用户运行play。 ansible-playbook -i hosts playbook.yml -u user 如果仍然出现错误,请运行以下命令并将输出粘贴在此处。 ansible-playbook -i hosts playbook.yml -u user -vvv


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接