Як перевірити автентифікацію на VM за допомогою програми Vagrant?


9

Помилка аутентифікації під час роботи Vagrant Up, тоді як vagrant ssh та ssh vagrant @ localhost -p2222 працює

Я хотів би виконати скрипт оболонки, використовуючи Vagrant під час завантаження. 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можливо автентифікувати VM за допомогою 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

Питання

Як аутентифікувати VM за допомогою vagrant up?

Відповіді:


6

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

Перший варіант - створити нову коробку Vagrant за допомогою Packer. Додайте наступний фрагмент до файлу 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

Це працювало для мене! Для тих, хто цікавиться, це змушує 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 на вміст власного приватного ключа системи


1

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

за замовчуванням: метод auth SSH: приватний ключ

Коли я використовував GUI VirtualBox, він сказав мені, що існує невідповідність процесора ОС.

Щоб продовжувати прогресувати далі, у налаштуваннях BIOS мені довелося протидіяти інтуїтивно:

Вимкнути: віртуалізація

Увімкнено: VT-X

Спробуйте переключити ці налаштування у вашій BIOS.


Увімкнення віртуалізації в BIOS вирішило мою проблему, пов’язану з "Vagrant SSH"
Firoz Sabaliya

0

Дуже багато сценаріїв, які я бачу, використовують це для витягнення відкритого ключа:

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

Я бачив те, що gitub SSL cert призначений 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

0

Переконайтесь, що у вашого віртуального комп'ютера доступ до мережі Якщо ви використовуєте Virtual Box, перейдіть до налаштування машини, вкладки мережі та переконайтесь, що кабель Connected Connected.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.