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?
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
config.ssh.private_key_path
est votre clé privée localessh-add -L
, s'il n'est pas répertorié, ajoutez-le avec ssh-add ~/.ssh/id_rsa
~/.ssh/authorized_keys
sur la VM Vagrant. Vous pouvez le copier-coller ou utiliser un outil tel que ssh-copy-idAjoutez-le au fichier Vagrant
Vagrant::Config.run do |config|
# stuff
config.ssh.forward_agent = true
end
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).
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
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
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!
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é.
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.
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é.