SSH-Grundlagen auf Vagrant-VMs

SSH-Grundlagen auf Vagrant-VMs

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 sshWenn 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@hostnameso 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_pathIhre 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 sshes 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_keysin 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:

  • Sicherstellen, dass Vagrant und Virtualbox beide auf dem neuesten Stand sind
  • Sicherstellen, dass die VirtualBox Guest Additions auf dem neuesten Stand sind, indem Sie vagrant-vbguestdas Plugin installierenGitHubRubyGems:

    vagrant plugin install vagrant-vbguest
    

verwandte Informationen