Comment s'authentifier auprès d'une VM en utilisant Vagrant up?

9

Échec de l'authentification pendant Vagrant Up, alors que vagrant ssh et ssh vagrant @ localhost -p2222 fonctionnent

Je voudrais exécuter un script shell en utilisant Vagrant au démarrage. Vagrant ne peut pas s'authentifier, alors que la machine virtuelle a été démarrée à l'aide de 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...
    ...

Après l'exécution, CTRL + Cil est possible de s'authentifier auprès de la machine virtuelle à l'aide de vagrant sshetssh vagrant@localhost -p2222

Fichier Vagrant

J'utilise le Vagrantfile par défaut et je n'ai changé que le nom d'hôte:

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

Version vagabonde

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

Question

Comment s'authentifier auprès de VM en utilisant vagrant up?

030
la source

Réponses:

6

Le problème est dû au fait qu'aucune clé publique ne réside sur la boîte Vagrant. L'une des deux options suivantes résout le problème.

La première option consiste à créer une nouvelle boîte Vagrant à l'aide de Packer. Ajoutez l' extrait de code suivant au fichier json et créez la zone Vagrant.

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

Le contenu de ce script vagabond est le suivant:

#!/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 deuxième option consiste à reconditionner ( vagrant package) la boîte Vagrant une fois que les commandes suivantes spécifiées ici ont été exécutées:

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
la source
Cela a fonctionné pour moi! Pour ceux qui se demandent, cela fait que Vagrant génère une nouvelle clé sécurisée, au lieu d'utiliser l'ancienne invalide (si elle en a même une).
Nebojsac, le
5

Tout d'abord, essayez: pour voir quelle clé privée vagabonde dans votre configuration de machine

$ vagrant ssh-config

Exemple:

$ 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

Deuxièmement, faites: Modifiez le contenu du fichier insecure_private_key avec le contenu de votre propre clé privée système

shilovk
la source
1

Je ne pouvais pas non plus aller au-delà:

par défaut: méthode d'authentification SSH: clé privée

Lorsque j'ai utilisé l'interface graphique de VirtualBox, il m'a dit qu'il y avait une incompatibilité du processeur du système d'exploitation.

Pour continuer à vagabonder, dans les paramètres du BIOS, j'ai dû contre-intuitivement:

Désactiver: virtualisation

Activer: VT-X

Essayez de basculer ces paramètres dans votre BIOS.

Onshop
la source
L'activation de la virtualisation à partir du BIOS a résolu mon problème lié à "Vagrant SSH"
Firoz Sabaliya
0

Beaucoup de scripts que je vois utilisent ceci pour extraire la clé publique:

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

Le problème que j'ai vu est que le certificat SSL github est pour www.github.com, non raw.github.com. Par conséquent, vous finissez par obtenir une 400erreur. Vous pouvez le vérifier en regardant le contenu du /home/vagrant/.ssh/authorized_keysfichier.

Essayez d'utiliser l' -koption pour ignorer la vérification du certificat SSL:

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

Assurez-vous que votre machine virtuelle a accès au réseau. Dans le cas où vous utilisez Virtual Box, accédez aux paramètres de votre machine, onglet réseau et assurez-vous que votre câble connecté est coché.

paulalexandru
la source