Vagrant VM 上的 SSH 基础知识

Vagrant VM 上的 SSH 基础知识

我正在构建一台流浪机器(Ubuntu 12.04),其要求如下:

  • 通过 Vagrant 向具有 sudo 权限的用户提供 SSH 访问。

我在主机上生成了公钥/私钥(通过ssh-keygen),并将公钥移至authorized_keys客户机上的文件中。我还尝试了无密码 SSH。

vagrant ssh当我使用启用密码的 SSH 密钥输入时,会发生以下几件事:

  • 我必须在主机上输入我的密钥才能通过 SSH 进入客户虚拟机。
  • 每次我输入正确的关键短语不被接受。

这导致我收到以下错误消息:

SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.

然后我尝试了无密码 ssh。

vagrant ssh
[email protected]'s password: 

??

我从来没有设置过 vagrant 用户!它应该user@hostname像我设置的那样,当我在 VirtualBox 中启动虚拟机时可以确认它有效。

如何获取私有 ssh 密钥以便与 vagrant 正常工作?在主机上该做什么,在客户机上该做什么?

更新

在 VirtualBox 中,VM 处于活动状态,但除了以下问题外,我无法从 vagrant console 执行以下任何命令vagrant ssh

vagrant up vagrant halt

唯一有效的 vagrant 命令是vagrant suspend。当我使用它时,我实际上可以通过 来停止机器vagrant halt。以下是输出:

$ vagrant halt
[default] Attempting graceful shutdown of VM...
SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.

答案1

我正在为访问此主题的任何人添加此解决方案:

首先在主机上打开此文件:

$ sudo vim ~/.vagrant.d/boxes/<yourbox>/include/_Vagrantfile

验证是否config.ssh.private_key_path已设置为您的私钥文件。如果没有,请更新

使用默认密码通过 ssh 连接到 vagrant box

$ vagrant ssh (default pwd = ‘vagrant’]

装进盒子后:

vagrant@lucid64:~$ sudo visudo -f .ssh/authorized_keys

将您的公钥添加到此文件并保存文件,然后退出框

vagrant@lucid64:~$ exit

返回本地机器

$ vagrant halt
$ vagrant up

这对我有用

答案2

我也遇到了同样的问题,尽管这不是由于 SSH 密钥问题造成的。启动机器时,Virtualbox 可以正常工作,并能正常启动客户机。我自己能够通过 SSH 进入机器,尽管vagrant ssh它要求我输入密码,但一切正常。我登录后,在客户机的 /var/log/auth.log 中发现了以下内容:

Feb 13 10:14:34 spaaza-dev sshd[1468]: Accepted password for vagrant from 192.168.50.1 port 61816 ssh2
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session opened for user vagrant by (uid=0)
Feb 13 10:14:34 spaaza-dev sshd[1636]: Received disconnect from 192.168.50.1: 11: disconnected by user
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session closed for user vagrant
Feb 13 10:16:44 spaaza-dev sshd[1764]: Authentication refused: bad ownership or modes for directory /home/vagrant

我进入查看了 /home/vagrant 的权限:

drwxrwxrwx  6 vagrant vagrant 4096 Feb 13 10:15 vagrant

不好,我做的其他事情无意中更改了 /home/vagrant 目录的权限。以下方法解决了该问题:

# chmod 755 vagrant

drwxr-xr-x  6 vagrant vagrant 4096 Feb 13 10:15 vagrant

之后,我关闭了机器,再次启动它,vagrant 一切正常。:-)

答案3

尝试复制流浪者不安全的公钥放入文件并.ssh/authorized_keys放入宾客箱中。

希望这能解决您的 ssh 问题。

如果你想确保安全,你可以将自己的 .ssh/id_rsa.pub 复制到上述文件中。然后设置

config.ssh.private_key_path = '~/.ssh/id_rsa'

在你的 Vagrantfile 中。

答案4

我遇到了类似的问题。最终我通过以下方法解决了它:

  • 确保 Vagrant 和 Virtualbox 都是最新的
  • vagrant-vbguest通过安装插件确保 VirtualBox Guest Additions 是最新的GitHubRubyGems

    vagrant plugin install vagrant-vbguest
    

相关内容