我有一个 Vagrant 环境,需要我转发端口 80,因此我在 OS X 机器上启动它sudo
。这一直都很好,直到我最近升级到 Vagrant 1.2.2。现在它无法启动。
[default] Waiting for VM to boot. This can take a few minutes.
[default] Failed to connect to VM!
Failed to connect to VM via SSH. Please verify the VM successfully booted
by looking at the VirtualBox GUI.
因为我在下运行sudo
,所以机器从未添加到 Virtualbox GUI,但对于这个环境来说,情况一直如此。
我没有发现任何迹象表明添加的内容存在问题 —— 从我读到的内容来看,这可能是导致此错误的原因。如果我改为使用主机上的端口 8080,我就可以正常启动。我无法使用该应用程序,但虚拟机本身可以很好地加载和配置。
据我所知,唯一改变的是:
- 我升级了我的 Vagrant 版本
- 我更新了项目
Vagrantfile
以使用 v2 语法。
有人知道我可能遗漏了什么吗?我以为我可以很容易地找到它,但它很快就变成了一个非常现实的问题。
6月27日更新
VAGRANT_LOG=DEBUG
如果可信的话,这似乎是一个 SSH 密钥问题:
DEBUG ssh: Checking key permissions: /Users/robwilkerson/.vagrant.d/insecure_private_key
INFO ssh: SSH not up: #<Vagrant::Errors::SSHKeyBadOwner: The private key to connect to the machine via SSH must be owned
by the user running Vagrant. This is a strict requirement from
SSH itself. Please fix the following key to be owned by the user
running Vagrant:
/Users/robwilkerson/.vagrant.d/insecure_private_key>
INFO subprocess: Starting process: ["VBoxManage", "showvminfo", "3422bba7-8f35-42ad-ba1a-c127c6cb3cf6", "--machinereadable"]
我猜想它想要一个由 拥有的密钥,root
因为我处于 之下sudo
,但如果是这样的话,为什么它不查看 的root
?~/.vagrant.d/
v2 对此是否更加严格?在升级之前,我能够sudo vagrant up
正常使用。由于这是我唯一需要升级的开发环境sudo
,我宁愿不更改密钥所有权。还有其他方法吗?
我知道有很多问题,但我真的需要帮助来理解/解决这个问题。
答案1
尝试更改目录的所有权vagrant.d
:
# cd ~
# sudo chown -R root .vagrant.d/
答案2
我还没有找到比在该项目和其他项目之间切换时切换私钥所有者更好的解决方案。为了让它稍微不那么糟糕,我创建了一个zsh
函数:
vkey() { sudo chown "$*":staff ~/.vagrant.d/insecure_private_key; }
从命令行,我可以使用以下命令更新密钥所有者:
$ vkey <new_owner_username>