Impossible de ssh dans la nouvelle installation Vagrant de 13.04

9

J'ai utilisé l'image Vagrant pour 13.04 à partir de http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box pour créer une nouvelle machine virtuelle et essayé de me connecter à en utilisant ssh. Cependant, le SSH s'est toujours déconnecté immédiatement, sans même atteindre le stade où il a tenté de s'authentifier.

J'ai ouvert la machine virtuelle dans l'interface graphique de VirtualBox et j'ai regardé le fichier journal SSH (auth.log). Il était plein de lignes comme celle-ci:

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]

Le problème a été résolu en exécutant les commandes suivantes:

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

Je suppose que ceux-ci devraient s'exécuter automatiquement à un moment donné, d'autant plus que (a) je n'ai pas eu à les exécuter moi-même lorsque j'ai installé Ubuntu à partir d'une image ISO, et (b) parce que Vagrant est censé être conçu après avoir exécuté vagrant upvous pouvez immédiatement utiliser la machine virtuelle sans configuration supplémentaire.

Je devrai peut-être créer un grand nombre de machines virtuelles dans un proche avenir et j'espérais pouvoir utiliser Vagrant pour le faire, mais je ne peux pas le faire si je dois réparer manuellement SSH sur chacune d'elles.

Quelqu'un sait-il pourquoi cela se produit et que peut-on faire pour y remédier? Dois-je le signaler comme un bug?

Moshe Katz
la source
Avez-vous installé la dernière version vagrantsur votre hôte? Que diriez-vous d'activer le débogage vagabond et de voir ce qui se passe? vagrant sshutilise la paire de clés non sécurisée de vagrant pour l'authentification par clé de pub.
Terry Wang
Oui, c'est le dernier vagabond. Notez que mon problème n'est pas la paire de clés vagabonde, c'est la clé machine du serveur SSH qui n'est pas définie. Si le serveur SSH n'a pas de clé machine, il n'y a aucun moyen de s'y connecter.
Moshe Katz
Je viens d'essayer une nouvelle machine virtuelle 12,10 et la même chose s'est produite.
Moshe Katz
Désolé, je n'ai pas lu attentivement la question. J'étais problème de clé d'hôte sshd pas d'authentification de clé publique. Il semble que lors du premier démarrage, l'image cloud d'Ubuntu n'a pas pu générer les nouvelles clés d'hôte (si elles ne sont PAS trouvées). Cela peut être fait par test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-serverou utiliser le ssh-keygenpour générer les clés.
Terry Wang
Il devrait y test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-serveren avoir dans le /etc/rc.localscript.
Terry Wang

Réponses:

5

Il s'agit d'un problème de clé d'hôte SSH (NON lié à l'authentification par clé publique).

Il semble que le problème était que l'image vagabonde du cloud ubuntu n'a pas pu générer les nouvelles clés d'hôte (si elles ne s'y trouvent pas /etc/ssh/) lors du premier démarrage ( vagrant up).

En plus de générer manuellement les clés d'hôte SSH mentionnées par Moshe

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

Cela peut également être fait en ajoutant la commande suivante dans le /etc/rc.local

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

J'espère que cela aide.

Terry Wang
la source
1
C'est une solution temporaire, mais ne devrions-nous pas la signaler comme un bug dans cette image? Toutes les clés ne devraient-elles pas être déjà prégénérées?
Radek Simko
5

Workaroud:

  • Importez l'appliance ~ / .vagrant.d / boxes / raring / box.ovf dans VirtualBox

    VBoxManage import ~/.vagrant.d/boxes/raring/box.ovf
    
  • Obtenir le nom de la machine virtuelle

    VBoxManage list vms
    
  • Démarrez la VM

    VBoxManage startvm ubuntu-cloudimg-raring-vagrant-amd64
    
  • Incluez la ligne suivante dans /etc/rc.local (bien sûr dans la VM elle-même!):

    test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
    
  • Arrêter la machine virtuelle

    sudo halt
    
  • Supprimer les anciennes images

    rm ~/.vagrant.d/boxes/raring/box.ovf ~/.vagrant.d/boxes/raring/box-disk1.vmdk
    
  • Exporter la VM au format .ovf

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

Terminé :)

A également fait un rapport de bogue: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1217950

S0me0ne
la source
3

Cela semble avoir été un bug dans les anciennes boîtes de base. Dans les images actuelles de la boîte de base (générées le 20 août 2013), les clés semblent être créées automatiquement lorsque la boîte démarre pour la première fois.

Moshe Katz
la source
Je rencontre ce bug (encore) en ce moment, et il semble d'après le rapport de bug de @ S0me0ne que d'autres personnes le sont aussi. J'ai confirmé dans / etc / ssh que les fichiers de clés n'étaient pas là. C'était en utilisant les images du 24 septembre.
malvim
D'accord, ils viennent de sortir un autre "lot" de machines (à partir du 28 septembre 2013) qui créent correctement les clés manquantes. J'ai pu vérifier cela en important les boîtes à l'aide de VBoxManage. Bizarrement, quand j'utilise "vagrant up", les fichiers ne sont pas là! Y a-t-il une différence entre importer directement dans VB et utiliser vagabond?
malvim