Wie authentifiziere ich mich bei einer VM mit Vagrant up?

9

Authentifizierungsfehler während Vagrant Up, während vagrant ssh und ssh vagrant @ localhost -p2222 funktionieren

Ich möchte ein Shell-Skript mit Vagrant beim Booten ausführen. Vagrant kann sich nicht authentifizieren, während die VM gestartet wurde mit 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...
    ...

Nach der Ausführung ist CTRL + Ces möglich, sich mit vagrant sshund bei der VM zu authentifizierenssh vagrant@localhost -p2222

Vagrant-Datei

Ich verwende die Standard-Vagrant-Datei und habe nur den Hostnamen geändert:

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

Vagrant Version

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

Frage

Wie authentifiziere ich mich bei VM mit vagrant up?

030
quelle

Antworten:

6

Das Problem wurde verursacht, weil sich kein öffentlicher Schlüssel in der Vagrant-Box befindet. Eine der beiden folgenden Optionen löst das Problem.

Die erste Möglichkeit besteht darin, mit Packer eine neue Vagrant-Box zu erstellen. Fügen Sie der JSON-Datei das folgende Snippet hinzu und erstellen Sie die Vagrant-Box.

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

Der Inhalt dieses vagabundierenden Skripts lautet wie folgt:

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

Die zweite Möglichkeit besteht darin, vagrant packagedie Vagrant-Box neu zu verpacken ( ), sobald die folgenden hier angegebenen Befehle ausgeführt wurden:

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
quelle
Das hat bei mir funktioniert! Für diejenigen, die sich fragen, führt dies dazu, dass Vagrant einen neuen sicheren Schlüssel generiert, anstatt den alten ungültigen zu verwenden (falls er überhaupt einen hat).
Nebojsac
5

Versuchen Sie zunächst: zu sehen, welcher vagabundierende private Schlüssel in Ihrer Computerkonfiguration enthalten ist

$ vagrant ssh-config

Beispiel:

$ 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

Zweitens: Ändern Sie den Inhalt der Datei unsicherer_privater Schlüssel mit dem Inhalt Ihres eigenen privaten Systemschlüssels

shilovk
quelle
1

Ich konnte auch nicht darüber hinaus kommen:

Standard: SSH-Authentifizierungsmethode: privater Schlüssel

Als ich die VirtualBox-Benutzeroberfläche verwendete, wurde mir mitgeteilt, dass ein Betriebssystemprozessor nicht übereinstimmt.

Um weiter voranzukommen, musste ich in den BIOS-Einstellungen kontraintuitiv vorgehen:

Deaktivieren: Virtualisierung

Aktivieren: VT-X

Versuchen Sie, diese Einstellung in Ihrem BIOS umzuschalten.

Onshop
quelle
Durch Aktivieren der Virtualisierung über das BIOS wurde mein Problem im Zusammenhang mit "Vagrant SSH"
Firoz Sabaliya
0

Viele der Skripte, die ich sehe, verwenden dies, um den öffentlichen Schlüssel abzurufen:

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

Das Problem, das ich gesehen habe, ist, dass das Github-SSL-Zertifikat www.github.comnicht für ist raw.github.com. Daher wird am Ende ein 400Fehler angezeigt. Sie können dies überprüfen, indem Sie sich den Inhalt der /home/vagrant/.ssh/authorized_keysDatei ansehen.

Versuchen Sie, die -kOption zum Ignorieren der SSL-Zertifikatsprüfung zu verwenden:

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

Stellen Sie sicher, dass Ihre VM über Netzwerkzugriff verfügt. Wenn Sie Virtual Box verwenden, rufen Sie Ihre Computereinstellung und die Registerkarte Netzwerk auf und stellen Sie sicher, dass Ihre Kabelverbindung aktiviert ist.

paulalexandru
quelle