使用Ansible将SSH连接到Vagrant机器

luq*_*o33 15 ssh vagrant ansible

通常,您可以使用ssh进入Vagrant管理的VM vagrant ssh.有两种选择:

  1. 您可以使用insecure_private_keyVagrant生成的身份验证.
  2. 使用您自己的私钥 - 提供 config.ssh.forward_agent的设置为true,并正确配置VM

我使用第二个选项.当我跑步时vagrant ssh,我用我的自定义私钥进入机器.

现在我需要让Ansible SSH进入我的Vagrant机器,我不想用Vagrantfile它.

所以我执行了:

ansible-playbook -i hosts/development --private-key=~/.ssh/id_rsa -u vagrant dev.yml

我有这个错误返回:

致命:[192.168.50.5] => SSH错误:权限被拒绝(publickey).同时连接到192.168.50.5:22

hosts/inventory文件仅包含我的Vagrant VM的IP(192.168.50.5).

我不知道为什么Ansible不能进入虚拟机.它使用与执行时完全相同的user(vagrant)和key(id_rsa)vagrant ssh.

但是,vagrant ssh上面的内容不会运行时没有问题.

任何建议将不胜感激.

Mik*_*e D 25

问题可能在于您的hosts/inventory文件.您需要在其中为Ansible添加正确的连接配置,保存并重新运行.

192.168.50.5 ansible_ssh_port=22 ansible_ssh_user=vagrant ansible_ssh_private_key_file=~/.ssh/id_rsa 
Run Code Online (Sandbox Code Playgroud)

如果您没有使用端口22,请相应地调整ansible_ssh_porthosts文件.

你也可能没有在Vagrant中设置你的pubkey,因此这也行不通.要测试这个,请运行:

vagrant ssh-config | grep IdentityFile
# result should be your private key and not
#   .vagrant/machines/default/virtualbox/private_key
Run Code Online (Sandbox Code Playgroud)

如果您尚未pubkey加入Vagrant虚拟机,则需要在尝试使用私钥之前添加该虚拟机.

参考:http://docs.ansible.com/ansible/intro_inventory.html#list-of-behavioral-inventory-parameters

参考:https://docs.vagrantup.com/v2/cli/ssh_config.html

  • 我无法ssh的原因是我使用了错误的私钥文件。使用的正确密钥由“ vagrant ssh-config”显示。谢谢! (2认同)