Come autenticarsi su una VM usando Vagrant up?


9

Errore di autenticazione durante Vagrant Up, mentre vagrant ssh e ssh vagrant @ localhost -p2222 funzionano

Vorrei eseguire uno script di shell usando Vagrant all'avvio. Vagrant non è in grado di autenticarsi, mentre la VM è stata avviata utilizzando 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...
    ...

Dopo l'esecuzione CTRL + Cè possibile eseguire l'autenticazione nella VM usando vagrant sshessh vagrant@localhost -p2222

File vagabondo

Uso il Vagrantfile predefinito e ho cambiato solo il nome host:

# -*- 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"
  ...

Versione vagabonda

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

Domanda

Come autenticarsi su VM usando vagrant up?

Risposte:


6

Il problema è stato causato perché nessuna chiave pubblica risiede nella casella Vagrant. Una delle due opzioni seguenti risolve il problema.

La prima opzione è quella di creare una nuova scatola di Vagrant usando Packer. Aggiungi il seguente frammento al file json e crea la casella Vagrant.

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

Il contenuto di questo script vagabondo è il seguente:

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

La seconda opzione è quella di riconfezionare ( vagrant package) la casella Vagrant una volta eseguiti i seguenti comandi specificati qui :

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

Questo ha funzionato per me! Per coloro che si chiedono, questo fa sì che Vagrant generi una nuova chiave sicura, invece di usare quella vecchia non valida (se ne ha anche una).
Nebojsac,

5

Per prima cosa, prova: per vedere quale vagrant chiave privata nella configurazione della tua macchina

$ vagrant ssh-config

Esempio:

$ 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

In secondo luogo, eseguire: modificare il contenuto del file insecure_private_key con il contenuto della propria chiave privata di sistema


1

Inoltre non potrei andare oltre:

impostazione predefinita: metodo di autenticazione SSH: chiave privata

Quando ho usato la GUI di VirtualBox, mi ha detto che c'era una mancata corrispondenza del processore del sistema operativo.

Per fare in modo che il vagabondo progredisca ulteriormente, nelle impostazioni del BIOS ho dovuto contro-intuitivamente:

Disabilita: virtualizzazione

Abilita: VT-X

Prova a cambiare queste impostazioni nel tuo BIOS.


L'attivazione della virtualizzazione dal BIOS ha risolto il mio problema relativo a "Vagrant SSH"
Firoz Sabaliya,

0

Molti degli script che vedo usano questo per estrarre la chiave pubblica:

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

Il problema che ho visto è che il certificato SSL github è per www.github.com, no raw.github.com. Pertanto, si ottiene un 400errore. Puoi verificarlo guardando il contenuto del /home/vagrant/.ssh/authorized_keysfile.

Prova a utilizzare l' -kopzione per ignorare il controllo certificato SSL:

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

0

Assicurarsi che la macchina virtuale disponga dell'accesso alla rete. Se si utilizza Virtual Box, accedere alle impostazioni della macchina, alla scheda di rete e assicurarsi che Cable Connected sia selezionato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.