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 Datei auf dem Gast verschoben authorized_keys
. Und ich habe ein passwortloses SSH ausprobiert.
vagrant ssh
Wenn ich mit passwortgeschützten SSH-Schlüsseln tippe, passieren ein paar Dinge :
- Ich muss meine Schlüsselphrase auf dem Hostcomputer eingeben, um per SSH auf die Gast-VM zuzugreifen.
- Jedes Mal, wenn ich dierichtigSchlüsselphrase wird nicht akzeptiert.
Das führt dazu, dass ich die folgende Fehlermeldung erhalte:
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 SSH ohne Passwort ausprobiert.
vagrant ssh
[email protected]'s password:
??
Ich habe nie einen Vagrant-Benutzer eingerichtet! Es sollte user@hostname
so sein, wie ich es eingerichtet habe, und ich kann bestätigen, dass es funktioniert, wenn ich die VM in VirtualBox boote.
Wie kann ich erreichen, dass private SSH-Schlüssel mit Vagrant richtig funktionieren? Was muss auf dem Host und was auf dem Gast getan werden?
Aktualisieren
In VirtualBox ist die VM live, aber ich kann zusätzlich zu den Problemen mit keinen der folgenden Befehle von der Vagrant-Konsole aus ausführen vagrant ssh
:
vagrant up
vagrant halt
Der einzige Vagrant-Befehl, der funktioniert, ist vagrant suspend
. Wenn ich ihn verwende, kann ich die Maschine tatsächlich über 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.
Antwort1
Ich füge diese Lösung für jeden hinzu, der diesen Thread besucht:
Öffnen Sie zuerst diese Datei auf dem Hostcomputer:
$ sudo vim ~/.vagrant.d/boxes/<yourbox>/include/_Vagrantfile
Überprüfen Sie, ob config.ssh.private_key_path
Ihre private Schlüsseldatei eingestellt ist. Wenn nicht, aktualisieren Sie diese
SSH zur Vagrant-Box mit Standardkennwort
$ 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 verlassen Sie das Fenster
vagrant@lucid64:~$ exit
Zurück zum lokalen Computer
$ vagrant halt
$ vagrant up
Das hat bei mir funktioniert
Antwort2
Ich hatte das gleiche Problem, obwohl es nicht an Problemen mit dem SSH-Schlüssel lag. Beim Starten der Maschine funktionierte Virtualbox und brachte den Gast problemlos hoch. Ich konnte mich selbst per SSH mit der Maschine verbinden, und vagrant ssh
es funktionierte, obwohl ich nach einem Passwort gefragt wurde. Ich loggte mich ein und fand Folgendes in /var/log/auth.log auf dem Gast:
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, das 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 heruntergefahren, neu gestartet und Vagrant hat seine Arbeit problemlos erledigt. :-)
Antwort3
Versuchen Sie, dieVagrant unsicherer öffentlicher Schlüsselin die Datei .ssh/authorized_keys
in die Gästebox.
Hoffe, dies löst Ihr SSH-Problem.
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 das Setzen der
config.ssh.private_key_path = "~/.ssh/id_rsa"
in Ihrer Vagrant-Datei.
Antwort4
Ich hatte ähnliche Probleme. Schließlich habe ich es wie folgt gelöst: