¿Cómo autenticarse en una VM usando Vagrant up?

9

Fallo de autenticación durante Vagrant Up, mientras que vagrant ssh y ssh vagrant @ localhost -p2222 funciona

Me gustaría ejecutar un script de shell usando Vagrant en el arranque. Vagrant no puede autenticarse, mientras que la VM se ha comenzado a usar 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...
    ...

Después de ejecutar CTRL + C, es posible autenticarse en la VM usando vagrant sshyssh vagrant@localhost -p2222

Archivo vagabundo

Uso el Vagrantfile predeterminado y solo cambié el nombre de 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"
  ...

Versión vagabunda

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

Pregunta

¿Cómo autenticar a VM usando vagrant up?

030
fuente

Respuestas:

6

El problema fue causado porque ninguna clave pública reside en el cuadro Vagrant. Una de las siguientes dos opciones resuelve el problema.

La primera opción es crear un nuevo cuadro Vagrant usando Packer. Agregue el siguiente fragmento al archivo json y cree el cuadro Vagrant.

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

El contenido de este script vagabundo es el siguiente:

#!/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 segunda opción es volver a empaquetar ( vagrant package) el cuadro Vagabundo una vez que se hayan ejecutado los siguientes comandos especificados aquí :

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
fuente
¡Esto funcionó para mí! Para aquellos que se preguntan, esto hace que Vagrant genere una nueva clave segura, en lugar de usar la antigua clave inválida (si es que tiene una).
Nebojsac
5

Primero, intente: para ver qué clave privada vagabunda en la configuración de su máquina

$ vagrant ssh-config

Ejemplo:

$ 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

En segundo lugar, hacer: cambiar el contenido del archivo insecure_private_key con el contenido de su propia clave privada del sistema

shilovk
fuente
1

Tampoco pude ir más allá:

predeterminado: método de autenticación SSH: clave privada

Cuando usé la GUI de VirtualBox, me dijo que había un desajuste del procesador del sistema operativo.

Para avanzar progresivamente, en la configuración del BIOS tuve que contrarrestar intuitivamente:

Deshabilitar: virtualización

Habilitar: VT-X

Intente alternar esta configuración en su BIOS.

Onshop
fuente
Habilitar la virtualización desde el BIOS resolvió mi problema relacionado con "Vagrant SSH"
Firoz Sabaliya
0

Muchos de los scripts que veo usan esto para extraer la clave pública:

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

El problema que he visto es que el certificado github SSL es para www.github.com, no raw.github.com. Por lo tanto, terminas recibiendo un 400error. Puede verificar esto mirando el contenido del /home/vagrant/.ssh/authorized_keysarchivo.

Intente usar la -kopción para ignorar la verificación del certificado SSL:

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

Asegúrese de que su VM tenga acceso a la red. En caso de que use Virtual Box, ingrese a la configuración de su máquina, a la pestaña de red y asegúrese de que su Cable conectado esté marcado.

paulalexandru
fuente