Ansible 无法使用 vagrant insecure public 密钥 ping 我的 vagrant box

Ansible can't ping my vagrant box with the vagrant insecure public key

我在 osx 上将 Ansible 2.4.1.0 和 Vagrant 2.0.1 与 VirtualBox 一起使用,尽管我的 vagrant box 的配置在 ansible 上运行良好,但当我尝试 ping 时出现无法访问的错误:

➜  ansible all -m ping
vagrant_django | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).\r\n", 
    "unreachable": true
}

针对类似问题提供的解决方案对我不起作用(比如将 vagrant insecure pub key 添加到我的 ansible 配置中)。我只是不能让它与流浪者不安全public密钥一起工作。

Fwiw,这是我的 ansible.cfg 文件:

[defaults]
host_key_checking = False
inventory = ./ansible/hosts
roles_path = ./ansible/roles
private_key_file = ~/.vagrant.d/insecure_private_key

这是我的 ansible/hosts 文件(ansible 清单):

[vagrantboxes]
vagrant_vm ansible_ssh_user=vagrant ansible_ssh_host=192.168.10.100 ansible_ssh_port=22 ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key

所做的工作是使用我自己的 SSH public 密钥。当我将它添加到我的 vagrant box 上的 authorized_keys 时,我可以 ansible ping:

➜  ansible all -m ping       
vagrant_django | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}

我也无法通过 ssh 连接,所以这似乎是潜在的问题。通过将我自己的 pub 密钥添加到 authorized_hosts 中的 vagrant box 来解决这个问题。

我很想知道为什么它不适用于 vagrant 不安全密钥。有人知道吗?

PS:澄清一下,虽然根本原因与相似,但症状和上下文不同。我可以为我的盒子提供 ansible,但不能 ansible ping 它。这证明了另一个问题恕我直言。

I'd love to know why it doesn't work with the vagrant insecure key. Does anyone know?

因为 Vagrant 不安全密钥仅用于与盒子的初始连接。默认情况下,Vagrant 将其替换为新生成的密钥,您可以在项目目录下的 .vagrant/machines/<machine_name>/virtualbox/private_key 中找到它。

如果您在 Vagrantfile 中使用 Ansible provisioner,您还会在 .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory 中找到自动生成的 Ansible 清单,因此您无需创建自己的清单。