Jak uwierzytelnić się na maszynie wirtualnej przy użyciu Vagrant up?

9

Błąd uwierzytelnienia podczas Vagrant Up, podczas gdy błędne ssh i ssh vagrant @ localhost -p2222 działa

Chciałbym wykonać skrypt powłoki przy użyciu Vagrant przy rozruchu. Vagrant nie może się uwierzytelnić, podczas gdy maszyna wirtualna została uruchomiona przy użyciu 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...
    ...

Po wykonaniu CTRL + Cmożliwe jest uwierzytelnienie na maszynie wirtualnej za pomocą vagrant sshissh vagrant@localhost -p2222

Vagrant file

Używam domyślnego pliku Vagrant i zmieniłem tylko nazwę hosta:

# -*- 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 version

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

Pytanie

Jak uwierzytelnić się za pomocą VM vagrant up?

030
źródło

Odpowiedzi:

6

Problem został spowodowany, ponieważ w polu Vagrant nie ma klucza publicznego. Jedna z dwóch poniższych opcji rozwiązuje problem.

Pierwszą opcją jest utworzenie nowego pudełka Vagrant za pomocą Packera. Dodaj następujący fragment kodu do pliku json i zbuduj pudełko Vagrant.

"provisioners": [{
    "type": "shell",
    "scripts": [
      "scripts/vagrant.sh"
    ]
}]

Treść tego błędnego skryptu jest następująca:

#!/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

Drugą opcją jest przepakowanie ( vagrant package) pola Vagrant po uruchomieniu następujących poleceń tutaj określonych :

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
źródło
To zadziałało dla mnie! Dla tych, którzy się zastanawiają, Vagrant generuje nowy bezpieczny klucz, zamiast używać starego, nieprawidłowego klucza (jeśli w ogóle go posiada).
Nebojsac,
5

Najpierw spróbuj: sprawdzić, jaki błędny klucz prywatny znajduje się w konfiguracji komputera

$ vagrant ssh-config

Przykład:

$ 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

Po drugie, wykonaj: zmień zawartość pliku security_private_key na zawartość klucza prywatnego swojego systemu

Shilovk
źródło
1

Nie mogłem też wyjść poza:

domyślnie: metoda autoryzacji SSH: klucz prywatny

Kiedy korzystałem z interfejsu GUI VirtualBox, powiedział mi, że wystąpiło niedopasowanie procesora systemu operacyjnego.

Aby włóczyć się coraz dalej, w ustawieniach BIOS musiałem przeciwdziałać intuicyjnie:

Wyłącz: wirtualizacja

Włącz: VT-X

Spróbuj przełączyć te ustawienia w systemie BIOS.

Onshop
źródło
Włączenie wirtualizacji z systemu BIOS rozwiązało mój problem związany z „Vagrant SSH”
Firoz Sabaliya
0

Wiele skryptów, które widzę, używają tego do pobrania klucza publicznego:

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

Kwestia Widziałem to, że cert github SSL jest za www.github.comnie raw.github.com. W rezultacie pojawia się 400błąd. Możesz to sprawdzić, przeglądając zawartość /home/vagrant/.ssh/authorized_keyspliku.

Spróbuj użyć -kopcji, aby zignorować sprawdzenie certyfikatu SSL:

curl -L -k https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -o /home/vagrant/.ssh/authorized_keys
cjcdoomed
źródło
0

Upewnij się, że maszyna wirtualna ma dostęp do sieci. W przypadku korzystania z Virtual Box, przejdź do ustawień urządzenia, zakładki sieci i upewnij się, że kabel podłączony jest zaznaczony.

paulalexandru
źródło