Como se autenticar em uma VM usando o Vagrant up?

9

Falha na autenticação durante o Vagrant Up, enquanto vagrant ssh e ssh vagrant @ localhost -p2222 funciona

Eu gostaria de executar um script de shell usando o Vagrant na inicialização. O Vagrant não consegue autenticar, enquanto a VM foi iniciada usando 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...
    ...

Depois de executar CTRL + C , é possível autenticar para a VM usando vagrant ssh e ssh vagrant@localhost -p2222

arquivo do Vagrant

Eu uso o Vagrantfile padrão e só mudei o hostname:

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

Versão do Vagrant

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

Pergunta

Como se autenticar na VM usando vagrant up ?

    
por 030 25.04.2014 / 12:25

5 respostas

6

O problema foi causado porque nenhuma chave pública reside na caixa Vagrant. Uma das duas opções a seguir resolve o problema.

A primeira opção é criar uma nova caixa Vagrant usando o Packer. Adicione o snippet a seguir ao ficheiro json e construa a caixa Vagrant.

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

O conteúdo deste script vagrant é da seguinte forma:

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

A segunda opção é reempacotar ( vagrant package ) a caixa do Vagrant assim que os seguintes comandos especificarem aqui foram executados:

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
    
por 25.04.2014 / 16:53
5

Primeiro, tente: para ver qual chave privada vagrant na sua configuração de máquina

$ vagrant ssh-config

Exemplo:

$ 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

link

Em segundo lugar, faça: Alterar o conteúdo do arquivo insecure_private_key com o conteúdo do seu próprio sistema chave privada

    
por 09.05.2014 / 02:50
1

Eu também não pude ir além:

padrão: método de autenticação SSH: chave privada

Quando usei a GUI do VirtualBox, ele me disse que havia uma incompatibilidade de processador do sistema operacional.

Para fazer com que o vagrant progredisse ainda mais, nas configurações da BIOS eu tive que contra-intuitivamente:

Desativar: Virtualização

Ativar: VT-X

Tente alterar essas configurações na sua BIOS.

    
por 11.03.2016 / 15:54
0

Muitos dos scripts que vejo usam isso para extrair a chave pública:

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

O problema que tenho visto é que o certificado SSL do github é para www.github.com , não raw.github.com . Portanto, você acaba recebendo um erro 400 . Você pode verificar isso observando o conteúdo do arquivo /home/vagrant/.ssh/authorized_keys .

Tente usar a opção -k para ignorar a verificação do certificado SSL:

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

Certifique-se de que sua VM tenha acesso à rede. No caso de você usar o Virtual Box, entre na configuração da máquina, na guia de rede e verifique se o cabo conectado está marcado.

    
por 06.10.2016 / 11:29