web-dev-qa-db-fra.com

Comment utiliser la transmission d'agent ssh avec "vagrant ssh"?

Plutôt que de créer une nouvelle paire de clés SSH sur une boîte vagrant, j'aimerais réutiliser la paire de clés que j'ai sur ma machine hôte, en utilisant agent forwarding . J'ai essayé de définir config.ssh.forward_agent sur TRUE dans le fichier Vagrant, puis de redémarrer la machine virtuelle et d'essayer d'utiliser:

vagrant ssh -- -A

... mais je suis toujours en train de demander un mot de passe lorsque j'essaie de faire un paiement git. Une idée de ce que je manque?

96
Matt V.

J'utilise vagrant 2 sur OS X Mountain Lion.

Vagrant.configure("2") do |config|
  config.ssh.private_key_path = "~/.ssh/id_rsa"
  config.ssh.forward_agent = true
end
  1. config.ssh.private_key_path est votre clé privée locale
  2. Votre clé privée doit être disponible pour l'agent ssh local. Vous pouvez vérifier avec ssh-add -L, s'il n'est pas répertorié, ajoutez-le avec ssh-add ~/.ssh/id_rsa
  3. N'oubliez pas d'ajouter votre clé publique à ~/.ssh/authorized_keys sur la VM Vagrant. Vous pouvez le copier-coller ou utiliser un outil tel que ssh-copy-id
84
LuizSignorelli

Ajoutez-le au fichier Vagrant

Vagrant::Config.run do |config|
   # stuff
   config.ssh.forward_agent = true
end

http://vagrantup.com/v1/docs/config/ssh/forward_agent.html

80
EnabrenTane

En plus d'ajouter "config.ssh.forward_agent = true" au fichier vagrant, assurez-vous que l'ordinateur hôte est configuré pour le transfert d'agent. Github fournit un bon guide pour cela. (Consultez la section de dépannage).

18
HipsterHobo

J'avais ce travail avec les réponses ci-dessus sur 1.4.3, mais j'ai arrêté de travailler sur 1.5. Je dois maintenant exécuter ssh-add pour pouvoir utiliser pleinement la version 1.5.

Pour le moment, j'ajoute la ligne suivante à mon script de mise en service ansible . - name: Make sure ssk keys are passed to guest. local_action: command ssh-add

J'ai également créé un résumé de ma configuration: https://Gist.github.com/KyleJamesWalker/9538912

6
Kyle James Walker

Si vous êtes sous Windows, le transfert SSH dans Vagrant ne fonctionne pas correctement par défaut (à cause d'un bogue dans net-ssh). Voir ce rapport de bogue Vagrant particulier: https://github.com/mitchellh/vagrant/issues/1735

Cependant, il existe une solution de contournement! Copiez simplement votre clé SSH locale sur le Vagrant VM via un simple script d'approvisionnement dans votre VagrantFile. Voici un exemple: https://github.com/mitchellh/vagrant/issues/1735#issuecomment-25640783

5
Tim Donohue

Le vrai problème est Vagrant qui utilise 127.0.0.1:2222 comme port-forward par défaut . Vous pouvez en ajouter un (pas 2222, 2222 est déjà occupé par défaut)

config.vm.network "forwarded_port", invité: 22, hôte: 2333, hôte_ip: "0.0.0.0"

"0.0.0.0" signifie que nous prenons la demande d'une connexion externe . Alors Ssh -p 2333 [email protected] (changez de votre propre adresse IP hôte, raté). Remerciez-moi, appelez-moi simplement Leifeng!

1
Leifeng

Lorsque nous avons récemment essayé le plugin vagrant-aws avec Vagrant 1.1.5, nous avons rencontré un problème avec le transfert d’agent SSH. Il s'est avéré que Vagrant forçait IdentitiesOnly=yes sans pouvoir le changer en no. Cela a obligé Vagrant à ne regarder que la clé privée répertoriée dans la variable Vagrantfile du fournisseur AWS.

J'ai écrit nos expériences dans un article de blog . Cela peut se transformer en une demande d'extraction à un moment donné.

1
Benjamin Oakes

Sous Windows, le problème est que Vagrant ne sait pas comment communiquer avec ssh-agent de git-bash. Cependant, il sait comment utiliser la reconstitution historique de PuTTY. Donc, tant que Pageant est en cours d’exécution et a chargé votre clé SSH, et tant que vous avez défini config.ssh.forward_agent, cela devrait fonctionner.

Voir ce commentaire pour plus de détails.

Si vous utilisez Pageant, la solution de contournement consistant à mettre à jour Vagrantfile afin de copier les clés SSH sous Windows n'est plus nécessaire.

0
Josh Kelley

Assurez-vous que VM ne lance pas son propre agent SSH. J'ai eu cette ligne dans mon ~/.profile

eval `ssh-agent`

Après l'avoir retiré, le transfert d'agent SSH a fonctionné.

0
Fabian Schmengler