Как пройти аутентификацию на ВМ, используя Vagrant up?

9

Ошибка аутентификации во время Vagrant Up, пока работает vagrant ssh и ssh vagrant @ localhost -p2222

Я хотел бы выполнить сценарий оболочки, используя Vagrant при загрузке. Vagrant не может аутентифицироваться, хотя виртуальная машина была запущена с использованием 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

Бродячий файл

Я использую 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"
  ...

Бродячая версия

c:\temp\helloworld>vagrant --version
Vagrant 1.5.1

Вопрос

Как пройти аутентификацию на ВМ с помощью vagrant up?

+030
источник

Ответы:

6

Проблема возникла из-за отсутствия открытого ключа в окне Vagrant. Один из следующих двух вариантов решает проблему.

Первый вариант - создать новую коробку Vagrant с помощью Packer. Добавьте следующий фрагмент в файл json и создайте Vagrant box.

"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
+030
источник
Это сработало для меня! Для тех, кто интересуется, это заставляет Vagrant генерировать новый безопасный ключ вместо того, чтобы использовать старый недействительный ключ (если он вообще есть).
Небойсак
5

Сначала попробуйте: посмотреть, какой бродячий закрытый ключ в вашей конфигурации машины

$ 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

Во-вторых, выполните: измените содержимое файла insecure_private_key на содержимое личного ключа вашей системы

shilovk
источник
1

Я также не мог выйти за рамки:

по умолчанию: SSH метод аутентификации: закрытый ключ

Когда я использовал графический интерфейс VirtualBox, он сказал мне, что есть несоответствие процессора ОС.

Для дальнейшего продвижения бродяги, в настройках BIOS мне пришлось нелогично:

Отключить: виртуализация

Включить: VT-X

Попробуйте включить эти настройки в вашем BIOS.

Onshop
источник
Включение виртуализации из BIOS решило мою проблему, связанную с "Vagrant SSH"
Firoz Sabaliya
0

Многие сценарии, которые я вижу, используют это для извлечения открытого ключа:

curl -L https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -o /home/vagrant/.ssh/authorized_keys

Проблема, которую я видел, заключается в том, что SSL-сертификат github предназначен для www.github.com, а не для raw.github.com. Следовательно, вы получите 400ошибку. Вы можете убедиться в этом, посмотрев содержимое /home/vagrant/.ssh/authorized_keysфайла.

Попробуйте использовать -kопцию, чтобы игнорировать проверку сертификата SSL:

curl -L -k https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -o /home/vagrant/.ssh/authorized_keys
cjcdoomed
источник
0

Убедитесь, что у вашей виртуальной машины есть доступ к сети. Если вы используете Virtual Box, зайдите в настройки вашего компьютера, вкладку сети и убедитесь, что ваш Cable Connected установлен.

paulalexandru
источник