使用Ansible与Vagrant虚拟机的ssh连接失败

时间:2015-12-25 22:04:38

标签: ssh vagrant ansible

我是Ansible的新手。我使用Vagrant设置了一个Ubuntu虚拟机。我可以使用ssh vagrant@172.16.23.228进入机器。我创建了一个与vm具有相同密码的ssh密钥,将其添加到代理并在hosts文件中指定路径。

按照说明here运行此命令后,我开始收到以下错误(ansible all --inventory-file = hosts.ini --module-name ping -u vagrant -vvvv):< / p>

不确定我的设置中缺少什么,还需要检查什么?

<172.16.23.228> ESTABLISH CONNECTION FOR USER: vagrant
<172.16.23.228> REMOTE_MODULE ping
<172.16.23.228> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o     ControlPersist=60s -o ControlPath="/Users/user/.ansible/cp/ansible-ssh-%h-%p-%r" - o Port=22 -o IdentityFile="~Users/user/.ssh/onemachine_rsa" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 172.16.23.228 /bin/sh -c 'mkdir -p     $HOME/.ansible/tmp/ansible-tmp-1451080871.59-247915080664557 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1451080871.59-247915080664557 && echo $HOME/.ansible/tmp/ansible-tmp-1451080871.59-247915080664557'
172.16.23.228 | FAILED => SSH Error: tilde_expand_filename: No such user Users
while connecting to 172.16.23.228:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH  debug output to help diagnose the issue.

My hosts file looks like: 
[testserver]
172.16.23.228 ansible_ssh_port=22 ansible_ssh_user=vagrant    ansible_ssh_private_key_file=~Users/user/.ssh/onemachine_rsa

3 个答案:

答案 0 :(得分:2)

您正在做的事情可以奏效,但强烈建议您使用Vagrant中的内置Ansible provisioner。它将使您的生活更轻松,同时提高您的流浪技能。如果您需要执行任何shell脚本,请使用shell provisioner

答案 1 :(得分:0)

ansible_ssh_private_key_file的路径不正确。请尝试使用ansible_ssh_private_key_file=~/.ssh/onemachine_rsa。在这种情况下,代字号扩展到您正在运行ansible的本地计算机上的用户的主目录。

答案 2 :(得分:0)

提供此答案是为了让像我这样后来参加聚会的人受益。最新的Vagrant安装将私钥安装在本地目录中,而不是对每个VM使用公认的不安全私钥。您必须像这样创建一个ansible_hosts文件:

[vagrantboxes]
jessie ansible_ssh_port=2222 ansible_ssh_host=127.0.0.1

[vagrantboxes:vars]
ansible_ssh_user=vagrant
ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key

密钥是最后一行,它提供了从该特定目录启动的虚拟机中使用的实际私钥的路径。