Principes de base de SSH sur les VM Vagrant

23

Je crée une machine vagabonde (Ubuntu 12.04) avec les exigences suivantes:

  • Accès SSH via Vagrant à un utilisateur avec des privilèges sudo.

J'ai généré des clés publiques / privées (via ssh-keygen) sur l'hôte et j'ai déplacé la clé publique dans le authorized_keysfichier sur l'invité. Et j'ai essayé un SSH sans mot de passe.

Deux choses se produisent que je tape vagrant sshavec des clés SSH activées par mot de passe:

  • Je dois taper ma phrase clé sur la machine hôte pour SSH dans la machine virtuelle invitée.
  • Chaque fois que je tape la phrase clé correcte, elle n'est pas acceptée.

Ce qui entraîne le message d'erreur suivant:

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.

Ensuite, j'ai essayé ssh sans mot de passe.

vagrant ssh
[email protected]'s password: 

??

Je n'ai jamais mis en place un utilisateur vagabond! Il devrait être user@hostnamecomme je l'avais configuré et peut confirmer les travaux lorsque je démarre la machine virtuelle dans VirtualBox.

Comment obtenir des clés ssh privées pour qu'elles fonctionnent correctement avec vagabond? Que faire sur l'hôte, que faire sur l'invité?

Mise à jour

Dans VirtualBox, la machine virtuelle est active, mais je ne peux exécuter aucune des commandes suivantes à partir de la console vagabonde en plus des problèmes avec vagrant ssh:

vagrant up vagrant halt

La seule commande vagabonde qui fonctionne est vagrant suspend. Lorsque je l'utilise, je peux arrêter la machine via vagrant halt. Voici la sortie:

$ 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
la source

Réponses:

21

J'ajoute cette solution pour tous ceux qui viennent sur ce fil:

Ouvrez d'abord ce fichier sur la machine hôte:

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

Vérifiez qu'il config.ssh.private_key_pathest défini sur votre fichier de clé privée. Si ce n'est pas mis à jour

ssh vers vagrant box avec défaut pwd

$ vagrant ssh (default pwd = ‘vagrant’]

Une fois dans la boîte:

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

Ajoutez votre clé publique à ce fichier et enregistrez le fichier et quittez la boîte

vagrant@lucid64:~$ exit

Retour à la machine locale

$ vagrant halt
$ vagrant up

Cela a fonctionné pour moi

Suchit Parikh
la source
Merci pour cela - je me demande bien s'il est possible de ssh dans une boîte en tant qu'utilisateur différent de vagrantet d'utiliser la paire de clés pub / priv? De plus, vous pouvez définir le chemin d'accès à la clé ssh privée souhaitée à partir du fichier Vagrant comme ça ?
rhodee
2
Je ne trouve pas le dossier «include». Je trouve juste le dossier 0, puis virtualbox, puis 4 fichiers - box.ovf, box-disk1.vmdk, metadata.json, Vagranfile. Des idées que faire alors?
Darius.V
3

J'ai eu le même problème, mais ce n'était pas dû à des problèmes clés SSH. Lors du démarrage de la machine, Virtualbox a fonctionné et a bien invité l'invité. J'ai pu entrer SSH dans la machine moi-même et vagrant sshj'ai travaillé même si cela m'a demandé un mot de passe. Je me suis connecté et j'ai trouvé ce qui suit dans /var/log/auth.log sur l'invité:

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

Je suis allé voir les autorisations pour / home / vagrant:

drwxrwxrwx  6 vagrant vagrant 4096 Feb 13 10:15 vagrant

Pas bon, quelque chose d'autre que j'avais fait avait changé par inadvertance les permissions du répertoire / home / vagrant. Les problèmes suivants ont résolu le problème:

# chmod 755 vagrant

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

Après cela, j'ai éteint la machine, je l'ai redémarrée et le vagabond a bien fonctionné. :-)

Sam Critchley
la source
Bon conseil. Je devais aussi fairechmod -R 755 /home/vagrant/.ssh
wisbucky
2

Essayez de copier la clé publique non sécurisée vagabonde dans le fichier .ssh/authorized_keysdans la boîte d'invité.

J'espère que cela résout votre problème ssh.

Si vous souhaitez le sécuriser, vous pouvez le faire en copiant votre propre fichier .ssh / id_rsa.pub dans le fichier susmentionné. Et en définissant

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

dans votre Vagrantfile.

Gaurav Agarwal
la source
2

Pour tous ceux qui ont ce problème. ça m'a pris du temps à réparer. (Pourtant, le correctif est facile !!) Ainsi, selon la documentation de Vagrant, il existe un mot de passe par défaut pour l'utilisateur «vagrant» qui est «vagrant» sans les guillemets simples. vous pouvez en savoir plus sur le même sur leur site officiel http://docs.vagrantup.com/v2/boxes/base.html

Denn
la source
2

J'ai eu des problèmes similaires. Finalement, je l'ai résolu en:

  • S'assurer que Vagrant et Virtualbox étaient tous les deux à jour
  • S'assurer que VirtualBox Guest Additions était à jour en installant le vagrant-vbguestplugin :GitHub RubyGems

    vagrant plugin install vagrant-vbguest
    
Flimm
la source
0

Suivez les étapes pour résoudre le problème dans Mac OS High Sierra: -

  1. J'utilise la version vagrant 5.X
  2. tout d'abord, téléchargez la boîte virtuelle et ne l'installez pas.
  3. Accédez à Préférences Système -> confidentialité et cliquez sur autoriser le téléchargement par l'Amérique.
  4. Verrouillez les modifications ci-dessus et installez la boîte virtuelle.
  5. Vous obtiendrez le message d'installation réussie pour votre boîte virtuelle.
  6. Maintenant, passez au type de terminal vagabond - provision
  7. Il commencera à exécuter des scripts si vous en avez et téléchargera la boîte virtuelle pour vous. 8.Vous obtiendrez le message «Terminé»

  8. Assurez-vous que la boîte virtuelle est installée correctement, puis exécutez uniquement la commande vagrant. si vous êtes confronté à un problème de désinstallation de la boîte virtuelle en exécutant le script de désinstallation fourni avec le package et essayez de réinstaller.

Dibyajyoti Nayak
la source