【问题标题】:ssh connection to Vagrant virtual machine using Ansible fails使用 Ansible 与 Vagrant 虚拟机的 ssh 连接失败
【发布时间】:2015-12-25 22:04:38
【问题描述】:

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

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

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

<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

【问题讨论】:

    标签: ssh vagrant ansible


    【解决方案1】:

    提供这个答案是为了让像我这样迟到聚会的人受益。最新的 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
    

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

    【讨论】:

    • 谢谢! ? 你为我节省了很多时间,现在我会回去阅读更多关于 vars 的 ansible 文档。我将所有变量移到 [bagrantboxes:vars] 下,因此与 vagrant 相关的所有内容都再次保持在 1 个单一位置 Tnx 之下!
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      ansible_ssh_private_key_file 的路径不正确。请改用ansible_ssh_private_key_file=~/.ssh/onemachine_rsa。在这种情况下,波浪号会扩展为您正在运行 ansible 的本地计算机上用户的主目录。

      【讨论】:

      • 嗨@Dave,我无法让它与SSH 密钥一起使用。我能够让它工作的唯一方法是使用 vagrant 密钥文件。 /Users/me/Documents/Vagrant/one/.vagrant/machines/default/vmware_fusion/private_key
      猜你喜欢
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 2016-01-02
      • 2020-05-11
      • 2020-01-11
      • 1970-01-01
      相关资源
      最近更新 更多