J'essaie de créer un environnement qui clone un référentiel dans le répertoire de partage une fois la VM mise à niveau. Le problème est que la boîte n'a pas d'autorisation SSH sur le référentiel distant.
J'ai un script bash simple:
#!/bin/bash
cd /vagrant
if [ ! -d "repo" ]; then
git clone [email protected]:/my/repo.git
end
Je reçois l'erreur:
La vérification de la clé de l'hôte a échoué.
fatal: l'extrémité distante a raccroché de manière inattendue
Ce qui est logique car il n'y a pas de clé dans /home/vagrant/.ssh
J'ai fait pas mal de recherches en vain, j'ai essayé de définir config.ssh.forward_agent = true
ce qui me permet de cloner manuellement le référentiel lorsque je suis ssh dans la machine, mais pas lorsqu'il tente de s'exécuter lui-même. J'ai également essayé de spécifier, config.ssh.private_ssh_key = "~/.ssh/id_rsa"
mais vagrant ne finit tout simplement pas le chargement (je suppose que l'application ne peut pas entrer dans la boîte).
Ma question est donc ... Dois-je reconstruire ma boîte de base pour inclure un jeu de clés et autoriser ces clés avec mon dépôt distant? Ou y a-t-il une solution plus facile qui me manque?
Remarque: j'ai examiné les bases de SSH sur les machines virtuelles vagabondes qui semblent similaires, mais je pense qu'il s'agit davantage de configurer un utilisateur différent sur la boîte et la solution publiée est beaucoup plus manuelle que je ne le souhaiterais.
la source
vagrant up
et tout fonctionne.config.ssh.forward_agent = true
dans Vagrantfile n'a pas fonctionné pour ce problème?config ssh.forward_agent = true
maintenant et ça marche. Peut-être que la version de Vagrant que j'utilisais en 2013 était en panne.Il y a quelques trucs à ce sujet ici: https://serverfault.com/questions/107187/ssh-agent-forwarding-and-sudo-to-an-un-user-user - en résumé, le transfert SSH fonctionne via une variable d'environnement qui n'est pas conservé par
su
. Des solutions à différents niveaux d'Unix-fu sont suggérées; Je suis allé avec un pas cher et joyeux:où
CMD
est la commande que vous voulez exécuter.Cela me permet alors courir
git clone
commevagrant
lors de l' approvisionnement, donc je peux cloner GitHub / repo Bitbucket en utilisant la clé SSH publique de mon OS système hôte X sans avoir tout finissent par propriétéroot
. Et la seule autre étape requise est de pré-remplir~/.ssh/known_hosts
avec les clés requises (ce que je suppose que vous faites déjà).(Contrairement à la situation sur un système réel (voir les commentaires à la réponse suggérant ceci - https://serverfault.com/a/371788/321408 )), il n'est pas nécessaire de modifier les autorisations du socket, car il appartient déjà à
vagrant
- quelque chose dont levagrant ssh
Je suppose donc que le mécanisme ne fonctionne pas correctement. Je ne crois donc pas que cela pose un problème de sécurité.)la source