VirtualBox 6.0.8、Vagrant 2.2.4 在 SSH 身份验证方法:私钥上挂起
VirtualBox 6.0.8, Vagrant 2.2.4 Hangs on SSH auth method: private key
我是 Vagrant 的新手。我正在尝试获得合适的开发环境以创建一个 symfony 项目,但出于某种原因,我似乎无法正常工作。无论我制造什么机器,我总是卡在 "SSH auth method: private key" 行。
这两天我看了很多书,这个问题似乎是由于各种原因而发生的。我在 satck overflow 上尝试了所有方法,但似乎无法确定导致我的设置失败的原因。
我的笔记本电脑上有 windows 10。我有 VirtualBox 6.0.8 和 Vagrant 2.2.4。
我尝试了 4 个不同的盒子,包括一个我使用 Chef 构建的盒子和一个更通用的盒子,应该可以正常工作 (hashicorp/precise64)
所以我确信问题出在 vagrantfile 中的其他地方。
我的 BIOS 中启用了虚拟化...检查了两次。
我尝试使用 git 控制台、具有和不具有管理员权限的 windows cmd 以及 powershell(以防万一)并得到相同的结果。
ssh-config 表示如下:
Host default
HostName 127.0.0.1
User vagrant
Port 2200
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile "C:/Users/Utilisateur 1/.vagrant.d/insecure_private_key"
IdentitiesOnly yes
LogLevel FATAL
我在配置部分的 VirtualBox gui 内部进行了检查,电缆盒被选中,端口似乎被转发 2200 到访客 22 或转发 2222 到访客 22,具体取决于我正在尝试的盒子。远方总是匹配 ssh-config
还尝试在 vagrant 文件中添加 cableconnected1,即使在 gui 配置中选中了该框...
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--cableconnected1", "on"]
end
我检查了 insecure_private_key 是否存在于正确的位置并且确实存在 C:/Users/Utilisateur 1/.vagrant.d/insecure_private_key
我尝试使用密码验证而不是 ssh 密钥,但它也冻结了,所以我将其转回使用 ssk 密钥。
我也尝试删除 .ssh 文件夹中的 knowhost 文件,但它什么也没做
每次我尝试我用过的新东西
vagrant destroy 然后 vagrant up --provision
我尝试在盒子停止时通过 SSH 进入盒子
ssh vagrant@127.0.0.1 -p 2200 -i ~/.vagrant.d/insecure_private_key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o IdentitiesOnly=yes
但这给了我 ssh_exchange_identification:阅读:连接由对等方重置
从 VB gui 启动 VM 时出现黑屏并停在同一个地方
我卸载了 VirtualBox 和 Vagrant 两次,销毁并重新加载超过 15 次,但无论我使用什么盒子,仍然出现相同的错误。
那么,我尝试了以下方框
hashicorp/precise64
bento/ubuntu-18.04
Homestead
还有 1 个我删除了,不记得名字了
所有这些 baxes 都声称可以工作。
我尝试在 vagrantfile 中添加 port_forward 因为这似乎帮助其他成员解决了同样的问题但我最终得到了 2 个端口转发并且仍然停滞在同一个地方......
这是我的 bento/ubuntu-18.04 VM 上的日志 vagrant up --debug &> vagrant.log
https://transferxl.com/08vvkdTr6YJ5B2
我尝试将 vagrant 文件简化到最低限度,但这没有帮助
目前我的 vagrant 文件如下所示:
Vagrant.configure("2") do |config|
#berkshelf
config.berkshelf.enabled = true
#box
config.vm.box = 'bento/ubuntu-18.04'
config.vm.network :private_network, ip: '192.168.33.200'
#network
config.vm.network :forwarded_port, guest: 80, host: 8080
#chef
chef_repo_path = './chef'
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = 'chef/cookbooks'
chef.data_bags_path = 'chef/data_bags'
chef.environments_path = 'chef/environments'
chef.roles_path = 'chef/roles'
chef.environment = 'vagrant'
chef.run_list = [
'role[webserver]'
]
end
end
-- 编辑
正如 Strom 在下面的评论中所说,如果我的 windows 用户名中的 space 是问题,我在 vagrant
中添加了以下内容
config.ssh.private_key_path = ["C:/Users/Utilisateur\ 1/.vagrant.d/insecure_private_key"]
config.ssh.insert_key = true
但那又回来了
vagrant destroy
==> default: Loading Berkshelf datafile...
==> default: Sharing cookbooks with VM
==> default: Running cleanup tasks for 'berkshelf'...
default: Are you sure you want to destroy the 'default' VM? [y/N] y
There are errors in the configuration of this machine. Please fix
the following errors and try again:
SSH:
* `private_key_path` file must exist: C:/Users/Utilisateur\ 1/.vagrant.d/insecure_private_key
所以我把它改成了
config.ssh.private_key_path = ["~/.vagrant.d/insecure_private_key"]
config.ssh.insert_key = true
但是并没有解决我原来的问题
经过将近 4 天的时间,我终于开始工作了...我的硬盘坏了所以我不得不更换它并重新安装 windows 和我所有的东西。我做的第一件事就是再次尝试 vagrant 和 virtualbox。第一次尝试就成功了。我怀疑有什么问题
VirtualBox 和网络(指我的物理接口)。不幸的是,这就是我所能说的,因为我从来没有深入了解这个问题。如果像我一样,您尝试了所有方法但仍然遇到与我相同的问题,那么您应该检查一下您的网络。我不会告诉你重新安装 windows ... 那太疯狂了 ... 但是某个地方的东西坏了,现在一切都按预期工作。奇怪但真实!
我对 Vagrant (Homestead) 的解决方案总结挂在“SSH 身份验证方法:私钥”:
vagrant box update
(对我来说,到 v2.2.5)
vagrant box add laravel/homestead
(对我来说,升级宅基地到8.0.1)
- VirtualBox GUI:停止 Vagrant 机器,然后 "Remove" 它及其所有文件。
vagrant up --provision
更长的解释
在没有进行任何已知系统更改的情况下,我的 Vagrant / Homestead 机器上的 SSH 突然停止工作。一整天尝试了很多东西。 vagrant up
将在 SSH auth method: private key
冻结而不会出现更多错误。
我不能vagrant destroy
因为脚本需要SSH,错误:Trigger run failed
An error occurred in the underlying SSH library that Vagrant uses
所以我不得不停止然后将其从 virtualbox GUI 中删除。
在上述步骤 1-4 之后,vagrant up
引导消息给出了这些更有见地的行:
laravel: Warning: Connection aborted. Retrying...
laravel:
laravel: Vagrant insecure key detected. Vagrant will automatically replace
laravel: this with a newly generated keypair for better security.
laravel:
laravel: Inserting generated public key within guest...
laravel: Removing insecure key from the guest if it's present...
laravel: Key inserted! Disconnecting and reconnecting using new SSH key...
==> laravel:机器已启动并准备就绪!
虽然作为我最初故障排除的一部分,我重新生成了密钥,但它们可能存在问题,新版本的 Vagrant(具有更新的 net-ssh)可能已经检测到并修复了。
Windows10
中的 Vagrant 和 Windows 管理程序平台功能似乎存在不兼容问题
我遇到了这个问题,这就是我让 Vagrant 和 WSL2 并肩工作的方式
我有以下环境:
BIOS 中启用了硬件虚拟化
Windows 10(发布预览频道的内幕计划)
-- Windows 10 与 WSL 2 版本 10.0.19041 构建 19041
VirtualBox 6.1.12
-- 已安装扩展包
Vagrant 2.2.9
这些是对我有用的设置:
- Windows 管理程序平台:关闭
- 虚拟机平台:开启
- Windows Linux 的子系统:开
我这边的类似问题已通过禁用几个 Windows 功能(见图)得到解决。
TLDR:我为 Windows 安装了 Docker
,它导致虚拟化和 VT-x
技术出现问题。
我禁用了:
- 容器
- Hyper-V
- 虚拟机平台
- Windows 管理程序平台
- Windows Linux
的子系统
删除这些后,我发现 Intel Processor Identification Utility
和 CPU-Z
都再次将我的 CPU 识别为 VT-x
和 VT-x Extended Page Tables
。
我知道我的解决方案是核方法,但我还没有缩小我可以安全 re-enable 而不破坏 vagrant
和 VirtualBox
的功能...只是给一个 heads-up :)
我是 Vagrant 的新手。我正在尝试获得合适的开发环境以创建一个 symfony 项目,但出于某种原因,我似乎无法正常工作。无论我制造什么机器,我总是卡在 "SSH auth method: private key" 行。
这两天我看了很多书,这个问题似乎是由于各种原因而发生的。我在 satck overflow 上尝试了所有方法,但似乎无法确定导致我的设置失败的原因。
我的笔记本电脑上有 windows 10。我有 VirtualBox 6.0.8 和 Vagrant 2.2.4。
我尝试了 4 个不同的盒子,包括一个我使用 Chef 构建的盒子和一个更通用的盒子,应该可以正常工作 (hashicorp/precise64)
所以我确信问题出在 vagrantfile 中的其他地方。
我的 BIOS 中启用了虚拟化...检查了两次。
我尝试使用 git 控制台、具有和不具有管理员权限的 windows cmd 以及 powershell(以防万一)并得到相同的结果。
ssh-config 表示如下:
Host default
HostName 127.0.0.1
User vagrant
Port 2200
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile "C:/Users/Utilisateur 1/.vagrant.d/insecure_private_key"
IdentitiesOnly yes
LogLevel FATAL
我在配置部分的 VirtualBox gui 内部进行了检查,电缆盒被选中,端口似乎被转发 2200 到访客 22 或转发 2222 到访客 22,具体取决于我正在尝试的盒子。远方总是匹配 ssh-config
还尝试在 vagrant 文件中添加 cableconnected1,即使在 gui 配置中选中了该框...
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--cableconnected1", "on"]
end
我检查了 insecure_private_key 是否存在于正确的位置并且确实存在 C:/Users/Utilisateur 1/.vagrant.d/insecure_private_key
我尝试使用密码验证而不是 ssh 密钥,但它也冻结了,所以我将其转回使用 ssk 密钥。
我也尝试删除 .ssh 文件夹中的 knowhost 文件,但它什么也没做
每次我尝试我用过的新东西 vagrant destroy 然后 vagrant up --provision
我尝试在盒子停止时通过 SSH 进入盒子 ssh vagrant@127.0.0.1 -p 2200 -i ~/.vagrant.d/insecure_private_key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o IdentitiesOnly=yes 但这给了我 ssh_exchange_identification:阅读:连接由对等方重置
从 VB gui 启动 VM 时出现黑屏并停在同一个地方
我卸载了 VirtualBox 和 Vagrant 两次,销毁并重新加载超过 15 次,但无论我使用什么盒子,仍然出现相同的错误。
那么,我尝试了以下方框 hashicorp/precise64 bento/ubuntu-18.04 Homestead 还有 1 个我删除了,不记得名字了 所有这些 baxes 都声称可以工作。
我尝试在 vagrantfile 中添加 port_forward 因为这似乎帮助其他成员解决了同样的问题但我最终得到了 2 个端口转发并且仍然停滞在同一个地方......
这是我的 bento/ubuntu-18.04 VM 上的日志 vagrant up --debug &> vagrant.log https://transferxl.com/08vvkdTr6YJ5B2
我尝试将 vagrant 文件简化到最低限度,但这没有帮助
目前我的 vagrant 文件如下所示:
Vagrant.configure("2") do |config|
#berkshelf
config.berkshelf.enabled = true
#box
config.vm.box = 'bento/ubuntu-18.04'
config.vm.network :private_network, ip: '192.168.33.200'
#network
config.vm.network :forwarded_port, guest: 80, host: 8080
#chef
chef_repo_path = './chef'
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = 'chef/cookbooks'
chef.data_bags_path = 'chef/data_bags'
chef.environments_path = 'chef/environments'
chef.roles_path = 'chef/roles'
chef.environment = 'vagrant'
chef.run_list = [
'role[webserver]'
]
end
end
-- 编辑
正如 Strom 在下面的评论中所说,如果我的 windows 用户名中的 space 是问题,我在 vagrant
中添加了以下内容config.ssh.private_key_path = ["C:/Users/Utilisateur\ 1/.vagrant.d/insecure_private_key"]
config.ssh.insert_key = true
但那又回来了
vagrant destroy
==> default: Loading Berkshelf datafile...
==> default: Sharing cookbooks with VM
==> default: Running cleanup tasks for 'berkshelf'...
default: Are you sure you want to destroy the 'default' VM? [y/N] y
There are errors in the configuration of this machine. Please fix
the following errors and try again:
SSH:
* `private_key_path` file must exist: C:/Users/Utilisateur\ 1/.vagrant.d/insecure_private_key
所以我把它改成了
config.ssh.private_key_path = ["~/.vagrant.d/insecure_private_key"]
config.ssh.insert_key = true
但是并没有解决我原来的问题
经过将近 4 天的时间,我终于开始工作了...我的硬盘坏了所以我不得不更换它并重新安装 windows 和我所有的东西。我做的第一件事就是再次尝试 vagrant 和 virtualbox。第一次尝试就成功了。我怀疑有什么问题 VirtualBox 和网络(指我的物理接口)。不幸的是,这就是我所能说的,因为我从来没有深入了解这个问题。如果像我一样,您尝试了所有方法但仍然遇到与我相同的问题,那么您应该检查一下您的网络。我不会告诉你重新安装 windows ... 那太疯狂了 ... 但是某个地方的东西坏了,现在一切都按预期工作。奇怪但真实!
我对 Vagrant (Homestead) 的解决方案总结挂在“SSH 身份验证方法:私钥”:
vagrant box update
(对我来说,到 v2.2.5)vagrant box add laravel/homestead
(对我来说,升级宅基地到8.0.1)- VirtualBox GUI:停止 Vagrant 机器,然后 "Remove" 它及其所有文件。
vagrant up --provision
更长的解释
在没有进行任何已知系统更改的情况下,我的 Vagrant / Homestead 机器上的 SSH 突然停止工作。一整天尝试了很多东西。 vagrant up
将在 SSH auth method: private key
冻结而不会出现更多错误。
我不能vagrant destroy
因为脚本需要SSH,错误:Trigger run failed
An error occurred in the underlying SSH library that Vagrant uses
所以我不得不停止然后将其从 virtualbox GUI 中删除。
在上述步骤 1-4 之后,vagrant up
引导消息给出了这些更有见地的行:
laravel: Warning: Connection aborted. Retrying...
laravel:
laravel: Vagrant insecure key detected. Vagrant will automatically replace
laravel: this with a newly generated keypair for better security.
laravel:
laravel: Inserting generated public key within guest...
laravel: Removing insecure key from the guest if it's present...
laravel: Key inserted! Disconnecting and reconnecting using new SSH key...
==> laravel:机器已启动并准备就绪!
虽然作为我最初故障排除的一部分,我重新生成了密钥,但它们可能存在问题,新版本的 Vagrant(具有更新的 net-ssh)可能已经检测到并修复了。
Windows10
中的 Vagrant 和 Windows 管理程序平台功能似乎存在不兼容问题我遇到了这个问题,这就是我让 Vagrant 和 WSL2 并肩工作的方式
我有以下环境:
BIOS 中启用了硬件虚拟化
Windows 10(发布预览频道的内幕计划)
-- Windows 10 与 WSL 2 版本 10.0.19041 构建 19041
VirtualBox 6.1.12
-- 已安装扩展包
Vagrant 2.2.9
这些是对我有用的设置:
- Windows 管理程序平台:关闭
- 虚拟机平台:开启
- Windows Linux 的子系统:开
我这边的类似问题已通过禁用几个 Windows 功能(见图)得到解决。
TLDR:我为 Windows 安装了 Docker
,它导致虚拟化和 VT-x
技术出现问题。
我禁用了:
- 容器
- Hyper-V
- 虚拟机平台
- Windows 管理程序平台
- Windows Linux 的子系统
删除这些后,我发现 Intel Processor Identification Utility
和 CPU-Z
都再次将我的 CPU 识别为 VT-x
和 VT-x Extended Page Tables
。
我知道我的解决方案是核方法,但我还没有缩小我可以安全 re-enable 而不破坏 vagrant
和 VirtualBox
的功能...只是给一个 heads-up :)