Vagrant Up 期间身份验证失败,但 vagrant ssh 和 ssh vagrant@localhost -p2222 可以正常工作
我想在启动时使用 Vagrant 执行 shell 脚本。Vagrant 无法进行身份验证,而 VM 已使用以下内容启动vagrant up
:
c:\temp\helloworld>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'helloworld'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: helloworld_default_1398419922203_60603
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Error: Connection timeout. Retrying...
default: Error: Authentication failure. Retrying...
default: Error: Authentication failure. Retrying...
default: Error: Authentication failure. Retrying...
default: Error: Authentication failure. Retrying...
...
执行后,CTRL + C
可以使用vagrant ssh
和对虚拟机进行身份验证ssh vagrant@localhost -p2222
Vagrant 文件
我使用默认的 Vagrantfile 并且只更改了主机名:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# All Vagrant configuration is done here. The most common configuration
# options are documented and commented below. For a complete reference,
# please see the online documentation at vagrantup.com.
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "helloworld"
...
Vagrant 版本
c:\temp\helloworld>vagrant --version
Vagrant 1.5.1
问题
如何使用对 VM 进行身份验证vagrant up
?
答案1
此问题是由于 Vagrant 框中没有公钥而导致的。以下两个选项之一可解决此问题。
第一个选项是使用 Packer 创建一个新 Vagrant box。添加以下片段到 json 文件并构建 Vagrant 框。
"provisioners": [{
"type": "shell",
"scripts": [
"scripts/vagrant.sh"
]
}]
本内容流浪脚本如下:
#!/bin/bash
yum install wget -y
mkdir /home/vagrant/.ssh
wget --no-check-certificate \
'https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub' \
-O /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh
chmod -R go-rwsx /home/vagrant/.ssh
第二种选择是,vagrant package
在指定以下命令后重新打包()Vagrant 框这里已运行:
mkdir -p /home/vagrant/.ssh
wget --no-check-certificate https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys
chmod 0700 /home/vagrant/.ssh
chmod 0600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh
答案2
第一次尝试:看什么流浪者私钥在你的机器配置中
$ vagrant ssh-config
例子:
$ vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile C:/Users/konst/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
http://docs.vagrantup.com/v2/cli/ssh_config.html
第二,要做到: 更改文件内容不安全的私钥使用您自己的系统内容私钥
答案3
我也无法超越:
默认:SSH 身份验证方法:私钥
当我使用 VirtualBox GUI 时,它告诉我操作系统处理器不匹配。
为了让 vagrant up 继续前进,在 BIOS 设置中我必须反直觉地进行:
禁用:虚拟化
启用:VT-X
尝试在 BIOS 中切换这些设置。
答案4
确保您的虚拟机具有网络访问权限。如果您使用 Virtual Box,请进入您的机器设置、网络选项卡并确保已选中“电缆已连接”。