encaminhamento de ssh-agent para uma VM Vagrant


12

Atualmente estou olhando para a criação de um Vagrant ambiente na minha máquina Mac, para que eu possa correr vagrant upe vai em seguida, instalar rbenve rubye todos necessidade I. Então eu tenho um script Bash que buscará todos os meus repositórios no github.

A única coisa é que meu novo vagabundo vm agora precisa gerar uma chave ssh e vinculá-la à minha conta do Github. Isso pode ser complicado. Especialmente porque eu gostaria de compartilhar meu arquivo do Vagrant com todos aqueles que têm acesso aos nossos repositórios para que eles possam fazer o mesmo.

Por isso, pensei em tentar encaminhar meus hosts ssh para a VM para que a VM possa encaminhar meu host ssh para o Github. Seguindo este artigo: Passo a passo do Githubs , defino meus hosts ssh config:

Host localhost
    ForwardAgent yes

e definido no meu arquivo vagrant

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

e quando entro na minha VM e executo o seguinte comando, recebo este erro:

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

Existe alguém que tentou uma configuração semelhante? A VM é uma caixa64 precisa.

EDITAR:

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
Qual é o resultado de envuma vez que você entrou na máquina virtual?
Chris Baixo

SSH_AUTH_SOCK=/tmp/ssh-aDGJQD2812/agent.2812. Parece estar funcionando. Tem certeza de que não possui um agente SSH conflitante na outra máquina e a chave está correta?
Chris Down

Sim, funciona ssh -T git@github.comfunciona e ssh-add -Lmostra a chave e eu só tenho um deles. coisas contundentes no cérebro
TheLegend 27/05

1
@TheLegend É um tiro no escuro, mas você verificou se o agente ssh está definitivamente funcionando?
Djf 27/05

Respostas:


10

Depois de algumas horas cansativas, fiz progressos

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

config.ssh.private_key_pathé sua chave privada local Sua chave privada deve estar disponível para o agente ssh local. Você pode verificar com ssh-add -L, se não estiver listado, adicioná-lo ssh-add ~/.ssh/id_rsa. Não esqueça de adicionar sua chave pública ~/.ssh/authorized_keysna VM do Vagrant.

Em seguida, vagrant destroyreconstrua-o usando a nova configuração vagrant. então deve funcionar testar o hospedeiro e o vagabundo usando

$ ssh -T git@github.com

vagabundo deve retornar pela primeira vez

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.

Se você não adicionou sua chave pública ~/.ssh/authorized_keysna VM do Vagrant.

Lá depois deve ler como

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

Obrigado a todos que me ajudaram. foi por sua causa que eu fui cavando mais :)


3
O meu não diz "Oi Ruberto!". Tudo bem se diz um nome diferente lá?
Darth Egregious #

1
Sim, user973810 é apenas uma resposta do Github, portanto, esse deve ser o nome com o qual você se registrou no Github.
TheLegend

1
Por favor, avise sobre as implicações de vagrant destroy. Acabei de perder uma semana de trabalho por causa disso, pensei que isso destruiria apenas a configuração.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.