Kann nicht in die neue Vagrant-Installation vom 13.04 ssh

9

Ich habe das Vagrant-Image für 13.04 von http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box verwendet , um eine neue virtuelle Maschine zu erstellen, und habe versucht, eine Verbindung herzustellen es mit ssh. Der SSH wurde jedoch immer sofort getrennt, ohne das Stadium zu erreichen, in dem er versuchte, sich zu authentifizieren.

Ich habe die VM in der VirtualBox-GUI geöffnet und mir die SSH-Protokolldatei (auth.log) angesehen. Es war voller Zeilen wie diese:

Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: fatal: No supported key exchange algorithms [preauth]

Das Problem wurde durch Ausführen der folgenden Befehle gelöst:

sudo ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -N '' -t ecdsa
sudo ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa
sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa

Ich würde davon ausgehen, dass diese irgendwann automatisch ausgeführt werden sollten, insbesondere angesichts der Tatsache, dass (a) ich sie nicht selbst ausführen musste, als ich Ubuntu von einem ISO-Image installiert habe, und (b) weil Vagrant so konzipiert sein soll, dass Sie sie ausführen vagrant upSie können die VM sofort ohne zusätzliche Konfiguration verwenden.

Möglicherweise muss ich in naher Zukunft eine große Anzahl virtueller Maschinen erstellen, und ich hatte gehofft, dass ich Vagrant verwenden kann, um dies zu tun, aber ich kann es nicht tun, wenn ich SSH auf jeder manuell reparieren muss.

Weiß jemand, warum dies passiert und was getan werden kann, um es zu beheben? Soll ich es als Fehler melden?

Moshe Katz
quelle
Haben Sie die neueste Version vagrantauf Ihrem Host installiert ? Wie wäre es, das Vagabund-Debug einzuschalten und zu sehen, was passiert? vagrant sshVerwendet das unsichere Schlüsselpaar von Vagrant für die Authentifizierung von Pub-Schlüsseln.
Terry Wang
Ja, das ist der neueste Landstreicher. Beachten Sie, dass mein Problem nicht das vagabundierende Schlüsselpaar ist, sondern der Maschinenschlüssel des SSH-Servers, der nicht festgelegt ist. Wenn der SSH-Server keinen Computerschlüssel hat, kann keine Verbindung hergestellt werden.
Moshe Katz
Ich habe gerade eine neue 12.10 VM ausprobiert und das gleiche ist passiert.
Moshe Katz
Entschuldigung, habe die Frage nicht sorgfältig gelesen. Ich war sshd Host Key Problem nicht Public Key Authentifizierung. Es sieht so aus, als ob das Ubuntu-Cloud-Image beim ersten Start die neuen Host-Schlüssel nicht generieren konnte (falls NICHT gefunden). Dies kann durch test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-serveroder ssh-keygenzum Generieren der Schlüssel erfolgen.
Terry Wang
Es sollte test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-serverim /etc/rc.localSkript sein.
Terry Wang

Antworten:

5

Dies ist ein Problem mit dem SSH-Hostschlüssel (NICHT im Zusammenhang mit der Authentifizierung mit öffentlichem Schlüssel).

Es sieht so aus, als ob das Problem darin bestand, dass das Vagunt-Image der Ubuntu-Cloud /etc/ssh/beim ersten Start ( vagrant up) die neuen Host-Schlüssel (falls sie nicht vorhanden sind) nicht generieren konnte .

Zusätzlich zum manuellen Generieren der von Moshe erwähnten SSH-Hostschlüssel

sudo ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -N '' -t ecdsa
sudo ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa
sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa

Dies kann auch durch Hinzufügen des folgenden Befehls im Feld erfolgen /etc/rc.local

test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server

Ich hoffe es hilft.

Terry Wang
quelle
1
Das ist eine vorübergehende Lösung, aber sollten wir sie nicht als Fehler in diesem Bild melden? Sollten nicht alle Schlüssel bereits vorgeneriert sein?
Radek Simko
5

Workaroud:

  • Importieren Sie die Appliance ~ / .vagrant.d / boxs / raring / box.ovf in VirtualBox

    VBoxManage import ~/.vagrant.d/boxes/raring/box.ovf
    
  • VM-Namen abrufen

    VBoxManage list vms
    
  • Starten Sie die VM

    VBoxManage startvm ubuntu-cloudimg-raring-vagrant-amd64
    
  • Fügen Sie die folgende Zeile in /etc/rc.local ein (natürlich in der VM selbst!):

    test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
    
  • VM herunterfahren

    sudo halt
    
  • Alte Bilder löschen

    rm ~/.vagrant.d/boxes/raring/box.ovf ~/.vagrant.d/boxes/raring/box-disk1.vmdk
    
  • Exportieren Sie die VM im .ovf-Format

    VBoxManage export ubuntu-cloudimg-raring-vagrant-amd64 --output ~/.vagrant.d/boxes/raring/box.ovf
    

Getan :)

Habe auch einen Bugreport gemacht: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1217950

S0me0ne
quelle
3

Dies scheint ein Fehler in den älteren Basisboxen gewesen zu sein. In den aktuellen Basisbox-Bildern (generiert am 20. August 2013) scheinen die Schlüssel automatisch erstellt zu werden, wenn die Box zum ersten Mal gestartet wird.

Moshe Katz
quelle
Ich stoße gerade (wieder) auf diesen Fehler, und laut @ S0me0nes Fehlerbericht scheinen es auch andere Leute zu sein. Ich habe in / etc / ssh bestätigt, dass die Schlüsseldateien nicht vorhanden sind. Hierbei wurden die Bilder vom 24. September verwendet.
Malvim
Okay, sie haben gerade eine weitere "Charge" von Maschinen veröffentlicht (ab dem 28. September 2013), die die fehlenden Schlüssel korrekt erstellen. Ich konnte dies überprüfen, indem ich die Boxen mit VBoxManage importierte. Seltsamerweise sind die Dateien nicht da, wenn ich "vagrant up" verwende! Gibt es einen Unterschied zwischen dem direkten Import in VB und der Verwendung von Vagrant?
Malvim