chuyển tiếp ssh-agent cho VM Vagrant


12

Tôi hiện đang xem xét thiết lập một Vagrant môi trường trên máy Mac của tôi, để tôi có thể chạy vagrant upvà sau đó nó sẽ cài đặt rbenvrubyvà tất cả những gì cần thiết. Sau đó, tôi có một tập lệnh Bash sẽ lấy tất cả các repos của tôi từ github.

Điều duy nhất là vm vagrant mới của tôi bây giờ phải tạo khóa ssh và sau đó liên kết nó với tài khoản Github của tôi. Điều này có thể là cồng kềnh. Đặc biệt là vì tôi muốn chia sẻ tệp Vagrant của mình với tất cả những người có quyền truy cập vào kho của chúng tôi để họ có thể làm như vậy.

Vì vậy, tôi nghĩ rằng tôi có thể thử chuyển tiếp ssh máy chủ của mình sang VM để VM có thể chuyển tiếp ssh máy chủ của tôi đến Github. Sau bài viết này: Github walk walk , tôi đặt máy chủ ssh config:

Host localhost
    ForwardAgent yes

và thiết lập trong tập tin mơ hồ của tôi

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

và khi tôi đăng nhập vào VM và chạy lệnh sau, tôi gặp lỗi này:

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

Có ai đã thử một thiết lập tương tự? VM là một hộp chính xác64.

BIÊN TẬP:

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
Đầu ra của envmột khi bạn đã vào máy ảo là gì?
Chris Xuống

SSH_AUTH_SOCK=/tmp/ssh-aDGJQD2812/agent.2812. Nó xuất hiện để được làm việc. Bạn có chắc chắn rằng bạn không có tác nhân SSH xung đột trên máy kia và khóa là chính xác?
Chris Xuống

yeah chạy ssh -T git@github.comhoạt động và ssh-add -Lhiển thị chìa khóa và tôi chỉ có một trong số họ. công cụ bash não
TheLegend

1
@TheLegend Đó là một phát súng trong bóng tối, nhưng bạn đã kiểm tra rằng ssh-agent chắc chắn đang chạy chưa?
djf

Câu trả lời:


10

Sau một vài giờ mệt mỏi, tôi đã đi đầu

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

config.ssh.private_key_pathlà khóa riêng cục bộ của bạn Khóa riêng của bạn phải có sẵn cho đại lý ssh cục bộ. Bạn có thể kiểm tra với ssh-add -L, nếu nó không được liệt kê, hãy thêm nó vào ssh-add ~/.ssh/id_rsa. Đừng quên thêm khóa công khai của bạn ~/.ssh/authorized_keysvào VM Vagrant.

Sau đó vagrant destroyvà xây dựng lại nó bằng cách sử dụng cấu hình vagrant mới. sau đó nó nên hoạt động kiểm tra cả máy chủ và người sử dụng

$ ssh -T git@github.com

mơ hồ nên trở lại lần đầu tiên

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.

Nếu bạn không thêm khóa công khai ~/.ssh/authorized_keysvào VM Vagrant.

Ở đó sau nó nên đọc là

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

Cảm ơn tất cả những gì đã giúp tôi. Đó là vì bạn mà tôi đã đi đào thêm :)


3
Của tôi không nói "Chào Ruberto!". Có ổn không nếu nó nói một cái tên khác ở đó?
Darth Egregious 7/10/2015

1
Yeah @ user973810 nó chỉ là một phản hồi từ Github, vì vậy nó phải là tên bạn đã đăng ký với Github.
TheLegend

1
Hãy cảnh báo về những tác động của vagrant destroy. Tôi vừa mất một tuần làm việc vì điều này, tôi nghĩ rằng nó sẽ chỉ phá hủy cấu hình.
A1rPun
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.