SSH-Grundlagen zu Vagrant-VMs

23

Ich baue eine Vagrant-Maschine (Ubuntu 12.04) mit den folgenden Anforderungen:

  • SSH-Zugriff über Vagrant auf einen Benutzer mit Sudo-Berechtigungen.

Ich habe öffentliche / private Schlüssel (über ssh-keygen) auf dem Host generiert und den öffentlichen Schlüssel in die authorized_keysDatei auf dem Gast verschoben . Und ich habe ein passwortloses SSH ausprobiert.

Ein paar Dinge passieren, die ich vagrant sshmit passwortaktivierten SSH-Schlüsseln eingebe:

  • Ich muss meine Schlüsselphrase auf dem Hostcomputer für SSH in die Gast-VM eingeben.
  • Jedes Mal, wenn ich die richtige Tastenkombination eingebe, wird sie nicht akzeptiert.

Was dazu führt, dass ich folgende Fehlermeldung bekomme:

SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.

Dann habe ich es mit passwortlosem ssh versucht.

vagrant ssh
[email protected]'s password: 

??

Ich habe nie einen vagabunden Benutzer eingerichtet! Es sollte so sein, user@hostnamewie ich es eingerichtet hatte und kann bestätigen, dass es funktioniert, wenn ich die VM in VirtualBox starte.

Wie bringe ich private SSH-Schlüssel dazu, mit Vagrant richtig zusammenzuarbeiten? Was ist auf dem Host zu tun, was auf dem Gast zu tun?

Aktualisieren

In VirtualBox ist die VM live, aber ich kann keine der folgenden Befehle von der Vagrant-Konsole aus ausführen, zusätzlich zu den Problemen mit vagrant ssh:

vagrant up vagrant halt

Der einzige vagabundierende Befehl, der funktioniert, ist vagrant suspend. Wenn ich es benutze, kann ich die Maschine über tatsächlich anhalten vagrant halt. Hier ist die Ausgabe:

$ vagrant halt
[default] Attempting graceful shutdown of VM...
SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.
Rhodee
quelle

Antworten:

21

Ich füge diese Lösung für jeden hinzu, der zu diesem Thread kommt:

Öffnen Sie zuerst diese Datei auf dem Host-Computer:

$ sudo vim ~/.vagrant.d/boxes/<yourbox>/include/_Vagrantfile

Stellen Sie sicher, dass config.ssh.private_key_pathIhre private Schlüsseldatei festgelegt ist. Wenn nicht, aktualisieren Sie das

ssh to vagrant box mit voreingestellter pwd

$ vagrant ssh (default pwd = ‘vagrant’]

Einmal in der Box:

vagrant@lucid64:~$ sudo visudo -f .ssh/authorized_keys

Fügen Sie dieser Datei Ihren öffentlichen Schlüssel hinzu, speichern Sie die Datei und schließen Sie das Fenster

vagrant@lucid64:~$ exit

Zurück zum lokalen Rechner

$ vagrant halt
$ vagrant up

Das hat bei mir funktioniert

Suchit Parikh
quelle
Vielen Dank dafür - ich frage mich, was ist, wenn es möglich ist, als Benutzer in eine andere Box zu ssh vagrantund das Schlüsselpaar pub / priv zu verwenden? Weiter können Sie den Pfad zum gewünschten privaten SSH-Schlüssel aus der Vagrant-Datei so einstellen ?
Rhodee
2
Ich kann den Ordner 'include' nicht finden. Ich finde nur Ordner 0, dann virtualbox, dann 4 Dateien - box.ovf, box-disk1.vmdk, metadata.json, Vagranfile. Irgendwelche Ideen, was zu tun ist?
Darius.V
3

Ich hatte das gleiche Problem, obwohl es nicht an SSH-Schlüsselproblemen lag. Beim Starten der Maschine funktionierte Virtualbox und brachte den Gast in Ordnung. Ich konnte selbst eine SSH-Verbindung zum Computer herstellen und vagrant ssharbeitete, obwohl ich nach einem Passwort gefragt wurde. Ich habe mich angemeldet und Folgendes in /var/log/auth.log auf dem Gast gefunden:

Feb 13 10:14:34 spaaza-dev sshd[1468]: Accepted password for vagrant from 192.168.50.1 port 61816 ssh2
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session opened for user vagrant by (uid=0)
Feb 13 10:14:34 spaaza-dev sshd[1636]: Received disconnect from 192.168.50.1: 11: disconnected by user
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session closed for user vagrant
Feb 13 10:16:44 spaaza-dev sshd[1764]: Authentication refused: bad ownership or modes for directory /home/vagrant

Ich habe mir die Berechtigungen für / home / vagrant angesehen:

drwxrwxrwx  6 vagrant vagrant 4096 Feb 13 10:15 vagrant

Nicht gut, etwas anderes, was ich getan hatte, hatte versehentlich die Berechtigungen des Verzeichnisses / home / vagrant geändert. Folgendes hat das Problem behoben:

# chmod 755 vagrant

drwxr-xr-x  6 vagrant vagrant 4096 Feb 13 10:15 vagrant

Danach habe ich die Maschine abgeschaltet, wieder gestartet und Vagrant hat seine Sache gut gemacht. :-)

Sam Critchley
quelle
Guter Tipp. Ich musste es auch tunchmod -R 755 /home/vagrant/.ssh
wisbucky
2

Versuchen Sie, den vagabunden unsicheren öffentlichen Schlüssel in die Datei .ssh/authorized_keysin die Gästebox zu kopieren .

Hoffe, das behebt dein Problem mit ssh.

Wenn Sie es sicher machen möchten, können Sie dies tun, indem Sie Ihre eigene .ssh / id_rsa.pub in die oben genannte Datei kopieren. Und die Einstellung

config.ssh.private_key_path = '~ / .ssh / id_rsa'

in deinem Vagrantfile.

Gaurav Agarwal
quelle
2

Für alle, die dieses Problem bekommen. Ich brauchte Ewigkeiten, um es zu reparieren. (Die Lösung ist jedoch einfach !!) Gemäß der Dokumentation von Vagrant gibt es ein Standardkennwort für den Benutzer 'vagrant', das ohne die einfachen Anführungszeichen 'vagrant' ist. Weitere Informationen finden Sie auf der offiziellen Website http://docs.vagrantup.com/v2/boxes/base.html

Denn
quelle
2

Ich hatte ähnliche Probleme. Schließlich löste ich es durch:

  • Stellen Sie sicher, dass Vagrant und Virtualbox auf dem neuesten Stand sind
  • Stellen Sie sicher, dass VirtualBox Guest Additions auf dem neuesten Stand sind, indem Sie das vagrant-vbguestPlugin installieren :GitHub RubyGems

    vagrant plugin install vagrant-vbguest
    
Flimm
quelle
0

Führen Sie die folgenden Schritte aus, um das Problem in Mac OS High Sierra zu beheben:

  1. Ich benutze die vagrant 5.X Version
  2. Laden Sie zuerst die virtuelle Box herunter und installieren Sie sie nicht.
  3. Gehen Sie zu den Systemeinstellungen -> Datenschutz und klicken Sie auf Download durch America zulassen.
  4. Sperren Sie die obigen Änderungen und installieren Sie die virtuelle Box.
  5. Sie erhalten die Meldung, dass die Installation für Ihre virtuelle Box erfolgreich abgeschlossen wurde.
  6. Gehen Sie nun zu Terminal Type Vagrant Up - Provision
  7. Es werden Skripte ausgeführt, falls vorhanden, und die virtuelle Box wird für Sie heruntergeladen. 8.Sie erhalten die Meldung "Fertig"

  8. Stellen Sie sicher, dass die virtuelle Box korrekt installiert ist, und führen Sie dann nur den Befehl vagrant aus. Wenn Sie auf ein Problem stoßen, deinstallieren Sie die virtuelle Box, indem Sie das mit dem Paket gelieferte Deinstallationsskript ausführen, und versuchen Sie es erneut.

Dibyajyoti Nayak
quelle