przekazywanie agenta ssh dla Vagrant VM


12

Jestem obecnie patrząc na utworzenie Vagrant środowiska na moim komputerze Mac, dzięki czemu mogę uruchomić vagrant upi będzie następnie zainstalować rbenvi rubyi wszystko muszę. Następnie mam skrypt Bash, który pobierze wszystkie moje repo z github.

Jedyną rzeczą jest to, że mój nowy włóczęga vm musi teraz wygenerować klucz ssh, a następnie połączyć go z moim kontem Github. Może to być kłopotliwe. Zwłaszcza, że ​​chciałbym udostępnić mój plik Vagrant wszystkim, którzy mają dostęp do naszych repozytoriów, aby mogli zrobić to samo.

Pomyślałem więc, że mogę spróbować przekierować mój host ssh na maszynę wirtualną, aby maszyna wirtualna mogła przekazać mojego hosta ssh do Github. Po tym artykule: Githubs solucja , ustawiłem ssh config moich hostów:

Host localhost
    ForwardAgent yes

i ustawić w moim zbłąkanym pliku

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

a kiedy loguję się do mojej maszyny wirtualnej i uruchamiam następujące polecenie, pojawia się ten błąd:

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

Czy jest ktoś, kto próbował podobnej konfiguracji? VM to precyzyjna skrzynka64.

EDYTOWAĆ:

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
Jakie są wyniki envpo wejściu na maszynę wirtualną?
Chris Down

SSH_AUTH_SOCK=/tmp/ssh-aDGJQD2812/agent.2812. Wygląda na to, że działa. Czy na pewno nie masz agenta SSH powodującego konflikt na innym komputerze, a klucz jest poprawny?
Chris Down

tak, działa ssh -T git@github.comdziała i ssh-add -Lpokazuje klucz, a ja mam tylko jeden z nich.
TheLegend

1
@TheLegend To strzał w ciemność, ale czy sprawdziłeś, czy ssh-agent zdecydowanie działa?
djf

Odpowiedzi:


10

Po kilku wyczerpujących godzinach zrobiłem postęp

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

config.ssh.private_key_pathjest twoim lokalnym kluczem prywatnym Twój klucz prywatny musi być dostępny dla lokalnego agenta ssh. Możesz to sprawdzić ssh-add -L, jeśli nie ma go na liście, dodaj ssh-add ~/.ssh/id_rsa. Nie zapomnij dodać swojego klucza publicznego do ~/.ssh/authorized_keysVagrant VM.

Następnie vagrant destroyprzebuduj go, używając nowej konfiguracji Vagrant. to powinno działać przetestować hosta i włóczęgę za pomocą

$ ssh -T git@github.com

włóczęga powinien wrócić po raz pierwszy

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.

Jeśli nie dodałeś klucza publicznego do ~/.ssh/authorized_keysVagrant VM.

Tam po tym należy przeczytać jako

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

Dziękuję wszystkim, co mi pomogło. to przez ciebie zacząłem kopać dalej :)


3
Mój nie mówi „Cześć Ruberto!”. Czy jest w porządku, jeśli zawiera tam inną nazwę?
Darth Egregious,

1
Tak @ user973810 to tylko odpowiedź od Githuba, więc powinna to być nazwa, którą zarejestrowałeś w Githubie.
TheLegend,

1
Ostrzeż o implikacjach vagrant destroy. Właśnie straciłem tydzień pracy z tego powodu, myślałem, że to tylko zniszczy konfigurację.
A1rPun
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.