transfert ssh-agent pour une machine virtuelle Vagrant


12

Je cherche actuellement à mettre en place un Vagrant environnement sur ma machine Mac, afin que je puisse courir vagrant upet il installera ensuite rbenvet rubyet tout besoin I. Ensuite, j'ai un script Bash qui récupérera tous mes dépôts depuis github.

La seule chose est que mon nouveau vm vagabond doit maintenant générer une clé ssh puis la lier à mon compte Github. Cela peut être lourd. D'autant plus que je voudrais partager mon fichier Vagrant avec tous ceux qui ont accès à nos repos afin qu'ils puissent faire de même.

J'ai donc pensé que je pouvais essayer de transférer mes hôtes ssh vers la machine virtuelle afin que la machine virtuelle puisse transférer mes hôtes ssh vers Github. Suite à cet article: Procédure pas à pas avec Githubs , j'ai défini la configuration ssh de mes hôtes:

Host localhost
    ForwardAgent yes

et mis dans mon dossier vagabond

Vagrant.configure("2") do |config|
  config.ssh.forward_agent = true
  ...
end

et lorsque je me connecte à ma machine virtuelle et exécute la commande suivante, j'obtiens cette erreur:

$ ssh -T git@github.com`
Permission denied (publickey)

Y a-t-il quelqu'un qui a essayé une configuration similaire? La VM est une box précise64.

ÉDITER:

env:

vagrant@precise64:~$ env
TERM=xterm-256color
SHELL=/bin/bash
SSH_CLIENT=10.0.2.2 53068 22
SSH_TTY=/dev/pts/0
LC_ALL=en_US
USER=vagrant
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
RBENV_ROOT=/opt/rbenv
SSH_AUTH_SOCK=/tmp/ssh-aDGJQD2812/agent.2812
MAIL=/var/mail/vagrant
PATH=/opt/rbenv/shims:/opt/rbenv/bin:/opt/rbenv/bin/rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/vagrant_ruby/bin
PWD=/home/vagrant
SHLVL=1
HOME=/home/vagrant
LOGNAME=vagrant
SSH_CONNECTION=10.0.2.2 53068 10.0.2.15 22
LC_CTYPE=UTF-8
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/env

1
Quelle est la sortie envune fois que vous êtes entré dans la machine virtuelle?
Chris Down

SSH_AUTH_SOCK=/tmp/ssh-aDGJQD2812/agent.2812. Cela semble fonctionner. Êtes-vous sûr de ne pas avoir d'agent SSH en conflit sur l'autre ordinateur et la clé est correcte?
Chris Down

ouais courir ssh -T git@github.comfonctionne et ssh-add -Lmontre la clé et je n'en ai qu'un. brain bashing stuff
TheLegend

1
@TheLegend C'est un coup dans le noir, mais avez-vous vérifié que l'agent ssh est définitivement en cours d'exécution?
djf

Réponses:


10

Après quelques heures exténuantes, j'ai fait des progrès

Vagrant.configure("2") do |config|
  config.ssh.private_key_path = "~/.ssh/id_rsa"
  config.ssh.forward_agent = true
end

config.ssh.private_key_pathest votre clé privée locale 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. N'oubliez pas d'ajouter votre clé publique ~/.ssh/authorized_keyssur la VM Vagrant.

Ensuite vagrant destroy, reconstruisez-le en utilisant la nouvelle configuration vagabonde. alors il devrait fonctionner tester à la fois l'hôte et le vagabond en utilisant

$ ssh -T git@github.com

vagabond devrait revenir la première fois

The authenticity of host 'github.com (204.232.175.90)' can't be established.
RSA key fingerprint is 16:27:ac:a5:7c:28:2d:36:63:2b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,205.232.175.93' (RSA) to the list of known hosts.

Si vous n'avez pas ajouté votre clé publique ~/.ssh/authorized_keyssur la machine virtuelle Vagrant.

Là après, il devrait se lire comme

vagrant@precise64:~$ ssh -T git@github.com
Hi Ruberto! You've successfully authenticated, but GitHub does not provide shell access.

Merci à tous ceux qui m'ont aidé. c'est à cause de toi que je suis allé creuser plus loin :)


3
Le mien ne dit pas "Salut Ruberto!". Est-ce que ça va si on dit un nom différent là-bas?
Dark Egregious

1
Ouais @ user973810 c'est juste une réponse de Github, donc ce devrait être le nom avec lequel vous vous êtes enregistré avec Github.
TheLegend

1
Veuillez mettre en garde contre les implications de vagrant destroy. Je viens de perdre une semaine de travail à cause de cela, je pensais que cela ne ferait que détruire la configuration.
A1rPun
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.