Como autenticar em uma VM usando o Vagrant up?

9

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

Eu gostaria de executar um script de shell usando o Vagrant na inicialização. O Vagrant não pode se 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...
    ...

Após a execução CTRL + C, é possível autenticar na VM usando vagrant sshessh vagrant@localhost -p2222

Arquivo Vagrant

Eu uso o Vagrantfile padrão e mudei apenas o nome do 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"
  ...

Versão Vagrant

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

Questão

Como autenticar na VM usando vagrant up?

030
fonte

Respostas:

6

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

A primeira opção é criar uma nova caixa do Vagrant usando o Packer. Adicione o seguinte trecho ao arquivo json e crie a caixa Vagrant.

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

O conteúdo desse script vagante é o seguinte:

#!/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 é reembalar ( vagrant package) a caixa do Vagrant depois que os seguintes comandos especificados aqui forem 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
030
fonte
Isso funcionou para mim! Para quem se pergunta, isso faz com que o Vagrant gere uma nova chave segura, em vez de usar a antiga inválida (se é que ela possui uma).
Nebojsac
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

http://docs.vagrantup.com/v2/cli/ssh_config.html

Segundo, faça: Altere o conteúdo do arquivo insecure_private_key pelo conteúdo da sua chave privada do sistema

shilovk
fonte
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 no processador do SO.

Para ficar mais vagaroso, progredindo nas configurações do BIOS, eu tive que contra-intuitivamente:

Desativar: virtualização

Ativar: VT-X

Tente alternar essas configurações no seu BIOS.

Onshop
fonte
Permitindo virtualização de BIOS resolvido meu problema relacionado "Vagrant SSH"
Firoz Sabaliya
0

Muitos dos scripts que eu vejo usam isso para puxar 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 eu vi é que o certificado SSL do github é para www.github.com, não raw.github.com. Portanto, você acaba recebendo um 400erro. Você pode verificar isso observando o conteúdo do /home/vagrant/.ssh/authorized_keysarquivo.

Tente usar a -kopção para ignorar a verificação de certificado SSL:

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

Verifique se sua VM tem acesso à rede. Caso você use o Virtual Box, entre na configuração da máquina, na guia rede e verifique se o seu Cable Connected está marcado.

paulalexandru
fonte