Làm thế nào để sử dụng chuyển tiếp tác nhân ssh với “vagrant ssh”?


107

Thay vì tạo một cặp khóa SSH mới trên hộp vagrant, tôi muốn sử dụng lại cặp khóa mà tôi có trên máy chủ của mình bằng cách sử dụng chuyển tiếp tác nhân . Tôi đã thử đặt config.ssh.ionary_agent thành TRUE trong Vagrantfile, sau đó khởi động lại máy ảo và thử sử dụng:

vagrant ssh -- -A

... nhưng tôi vẫn nhận được nhắc nhập mật khẩu khi tôi cố gắng thực hiện thanh toán git. Bất kỳ ý tưởng những gì tôi đang thiếu?


nếu bạn không có khóa ssh của mình đúng cách, git không nên hỏi mật khẩu mà cho bạn biết rằng bạn đã từ chối quyền. Tôi đoán bạn đang được hỏi mật khẩu vì bạn đang truy cập từ https thay vì git@github.com (ssh). 2 xu của tôi.
alexserver

Câu trả lời:


89

Tôi đang sử dụng vagrant 2 trên OS X Mountain Lion.

Vagrant.configure("2") do |config|
  config.ssh.private_key_path = "~/.ssh/id_rsa"
  config.ssh.forward_agent = true
end
  1. config.ssh.private_key_path là khóa cá nhân cục bộ của bạn
  2. Khóa cá nhân của bạn phải có sẵn cho ssh-agent địa phương. Bạn có thể kiểm tra ssh-add -L, nếu nó không được liệt kê, hãy thêm nó vớissh-add ~/.ssh/id_rsa
  3. Đừng quên thêm khóa công khai của bạn ~/.ssh/authorized_keysvào Vagrant VM. Bạn có thể sao chép và dán hoặc sử dụng một công cụ như ssh-copy-id

8
Tôi nhận thấy rằng sau khi thiết lập ở trên, tôi có thể sử dụng người dùng "vagrant" để "git clone" nhưng tôi không thể sử dụng người dùng "root" để "git clone". Bạn có biết những gì dường như là vấn đề? Cảm ơn
Nam Nguyen

7
config.ssh.private_key_path = "~/.ssh/id_rsa"khiến Vagrant bị treo Waiting for VM to boot.
apennebaker

14
Bạn cũng cần giữ chìa khóa bảo hiểm của người lang thangconfig.ssh.private_key_path = [ '~/.vagrant.d/insecure_private_key', '~/.ssh/id_rsa' ]
Calin

3
Trên OS X, tôi thấy việc thêm khóa cá nhân vào chuỗi khóa OS X ssh-add -Kđã hoạt động (cũng như config.ssh.forward_agent = true). Xem câu trả lời này
Flimm

2
Tôi gặp lỗi tương tự như @apennebaker. và làm theo các bước mà Calin đề xuất không giúp ích được gì ... Điều phù hợp với tôi là thêm khóa vào chuỗi khóa từ hệ điều hành máy chủ của tôi và vô hiệu hóa việc gán config.ssh.private_key_path.
alexserver

80

Thêm nó vào Vagrantfile

Vagrant::Config.run do |config|
   # stuff
   config.ssh.forward_agent = true
end

Xem tài liệu


11
Đảm bảo bạn ssh-add trên máy chủ cơ bản và khóa được giải mã.
EnabrenTane

1
Lưu ý rằng Windows không tự động khởi động ssh-agent mà bạn cần chạy để chuyển tiếp các khóa ssh của mình. Làm theo hướng dẫn này để thiết lập tự động khởi động lại ssh-agent trên Windows.
nebffa

62
Câu trả lời này có lẽ không đáng được bình chọn nhiều như vậy. OP nói rõ họ đã thêm vào config.ssh.forward_agenttệp cấu hình của mình, vậy câu trả lời này cung cấp thông tin mới nào? Ngay cả liên kết đã có trong câu hỏi.
Trindaz

7
@Trindaz bạn hoàn thành đúng. Tôi không thể giải thích tại sao đây là một trong những câu trả lời phổ biến nhất của tôi. Tuy nhiên, điều này dường như đã giúp ít nhất 52 người, vì vậy tôi phải gọi đó là một chiến thắng.
EnabrenTane

1
Câu trả lời này thực sự không mang lại bất kỳ thông tin mới nào, nhưng mặt khác, nó là mọi thứ cần được cấu hình cho một máy do Vagrant cung cấp. Ít nhất với điều kiện là bạn đã thiết lập chính xác tính năng chuyển tiếp tác nhân trên máy kết nối (tức là tính năng chuyển tiếp hoạt động cho các máy khác, không hoạt động).
techraf

20

Ngoài việc thêm "config.ssh.ionary_agent = true" vào tệp vagrant, hãy đảm bảo máy chủ được thiết lập để chuyển tiếp tác nhân. Github cung cấp một hướng dẫn tốt cho việc này. (Xem phần khắc phục sự cố).


7

Tôi đã làm việc này với các câu trả lời ở trên vào ngày 1.4.3, nhưng đã ngừng hoạt động vào ngày 1.5. Bây giờ tôi phải chạy ssh-addđể làm việc đầy đủ với 1,5.

Bây giờ tôi thêm dòng sau vào tập lệnh cấp phép có thể trả được của mình. - name: Make sure ssk keys are passed to guest. local_action: command ssh-add

Tôi cũng đã tạo một ý chính về thiết lập của mình: https://gist.github.com/KyleJamesWalker/9538912


Tôi đã luôn luôn phải sử dụng ssh-add với 1,4 và 1,5 là khác không có đại lý chạy được chuyển tiếp
iheggie

5

Nếu bạn đang sử dụng Windows, SSH Forwarding trong Vagrant không hoạt động bình thường theo mặc định (do lỗi trong net-ssh). Xem báo cáo lỗi Vagrant cụ thể này: https://github.com/mitchellh/vagrant/issues/1735

Tuy nhiên, có một cách giải quyết! Chỉ cần tự động sao chép khóa SSH cục bộ của bạn vào Vagrant VM thông qua một tập lệnh cấp phép đơn giản trong VagrantFile của bạn. Đây là một ví dụ: https://github.com/mitchellh/vagrant/issues/1735#issuecomment-25640783


2

Gần đây, khi chúng tôi dùng thử vagrant-awsplugin với Vagrant 1.1.5, chúng tôi đã gặp sự cố với chuyển tiếp tác nhân SSH. Nó chỉ ra rằng Vagrant đã buộc IdentitiesOnly=yesmà không có tùy chọn để thay đổi nó thành no. Điều này buộc Vagrant chỉ xem xét khóa riêng tư mà chúng tôi liệt kê trong Vagrantfiledành cho nhà cung cấp AWS.

Tôi đã viết kinh nghiệm của chúng tôi trong một bài đăng trên blog . Nó có thể biến thành một yêu cầu kéo vào một thời điểm nào đó.


2
Có cách nào để tự động sao chép khóa công khai nằm dưới trên máy chủ sang VM Vagrant khi tạo với Vagrant upkhông? Ngay bây giờ tôi phải tạo máy, tự đăng nhập và sau đó thêm khóa công khai của tôi để /home/vagrant/.ssh/authorized_keys
Noah

1

Đảm bảo rằng máy ảo không khởi chạy tác nhân SSH của riêng nó. Tôi đã có dòng này trong của tôi~/.profile

eval `ssh-agent`

Sau khi xóa nó, chuyển tiếp đại lý SSH đã hoạt động.


0

Vấn đề thực sự là Vagrant sử dụng 127.0.0.1:2222 làm cổng chuyển tiếp mặc định. Bạn có thể thêm một (không phải 2222, 2222 đã bị chiếm theo mặc định)

config.vm.network "forwarded_port", khách: 22, máy chủ: 2333, host_ip: "0.0.0.0"

"0.0.0.0" là cách nhận yêu cầu từ kết nối bên ngoài. thì ssh -p 2333 vagrant@192.168.2.101 (thay đổi thành địa chỉ ip máy chủ của riêng bạn, dud) sẽ hoạt động tốt. Cảm ơn tôi, chỉ cần gọi tôi là Leifeng!


0

Trên Windows, vấn đề là Vagrant không biết cách giao tiếp với ssh-agent của git-bash. Tuy nhiên, nó biết cách sử dụng PuTTY's Pageant. Vì vậy, miễn là Pageant đang chạy và đã tải khóa SSH của bạn và miễn là bạn đã đặt config.ssh.ionary_agent, điều này sẽ hoạt động.

Xem bình luận này để biết chi tiết.

Nếu bạn sử dụng Pageant, thì giải pháp cập nhật Vagrantfile để sao chép khóa SSH trên Windows không còn cần thiết nữa.

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.