"Vagrant ssh" ile ssh agent forwarding nasıl kullanılır?


107

Bir serseri kutuda yeni bir SSH anahtar çifti oluşturmak yerine, ana makinemde sahip olduğum anahtar çiftini ajan iletimini kullanarak yeniden kullanmak istiyorum . Ben ayarlama denedim config.ssh.forward_agent Vagrantfile içinde DOĞRU, daha sonra VM yeniden ve kullanarak çalıştı:

vagrant ssh -- -A

... ama git kontrolünü yapmaya çalıştığımda hala bir şifre soruluyor. Ne kaçırdığım hakkında bir fikrin var mı?


ssh anahtarlarınızı düzgün bir şekilde almadıysanız, git bir parola sormamalı, size izinleri reddettiğinizi söylemelidir. Git@github.com (ssh) yerine https'den klonlama yaptığınız için sizden bir şifre isteniyor sanırım. benim 2 sentim.
alexserver

Yanıtlar:


89

OS X Mountain Lion'da serseri 2 kullanıyorum.

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 yerel özel anahtarınız mı
  2. Özel anahtarınız yerel ssh aracısı tarafından kullanılabilir olmalıdır. ssh-add -LListede yoksa, ile kontrol edebilirsiniz.ssh-add ~/.ssh/id_rsa
  3. Sizi ~/.ssh/authorized_keysVagrant VM'ye genel anahtar eklemeyi unutmayın . Kopyalayıp yapıştırarak veya ssh-copy-id gibi bir araç kullanarak yapabilirsiniz.

8
Yukarıda kurulumumu yaptıktan sonra "serseri" kullanıcıyı "git clone" yapmak için kullanabileceğimi ancak "root" kullanıcısını "git clone" yapmak için kullanamadığımı fark ettim. Sorunun ne olduğunu biliyor musun? Teşekkürler
Nam Nguyen

7
config.ssh.private_key_path = "~/.ssh/id_rsa"Vagrant'ı tutturuyor Waiting for VM to boot.
apennebaker

14
Ayrıca serseri sigorta anahtarını da saklamanız gerekiyorconfig.ssh.private_key_path = [ '~/.vagrant.d/insecure_private_key', '~/.ssh/id_rsa' ]
Calin

3
OS X'te, özel anahtarları OS X anahtar zincirine ssh-add -Kçalışarak (ve aynı zamanda config.ssh.forward_agent = true) eklemeyi buldum . Bu cevabı görün
Flimm

2
@ Apennebaker ile aynı hatayı aldım. ve Calin'in önerdiği adımları takip etmek yardımcı olmadı ... Benim için işe yarayan şey, ana işletim sistemimden anahtar zincirine anahtarlar eklemek ve config.ssh.private_key_path atamasını devre dışı bırakmaktı.
alexserver

80

Vagrantfile'a ekleyin

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

Dokümanlara bakın


11
Temel ana bilgisayarda ssh-add yaptığınızdan ve anahtarın şifresinin çözüldüğünden emin olun.
EnabrenTane

1
Windows'un ssh anahtarlarınızı iletmek için çalıştırmanız gereken ssh-agent'ı otomatik olarak başlatmadığını unutmayın. Windows'ta ssh-agent otomatik başlatmayı ayarlamak için bu kılavuzu izleyin .
nebffa

62
Bu cevap muhtemelen çok fazla oyu hak etmiyor. OP config.ssh.forward_agent, yapılandırma dosyalarına eklediklerini açıkça belirtir , bu durumda bu yanıt hangi yeni bilgileri sağlıyor? Bağlantı bile zaten söz konusu.
Trindaz

7
@Trindaz tamamladınız. Bunun neden en popüler cevaplarımdan biri olduğunu açıklayamıyorum. Yine de bu görünüşe göre en az 52 kişiye yardımcı oldu, bu yüzden buna galibiyet demeliyim.
EnabrenTane

1
Bu cevap aslında herhangi bir yeni bilgi getirmez, ancak diğer yandan Vagrant tarafından sağlanan bir makine için yapılandırılması gereken her şeydir. En azından aracı iletiminin bağlantı makinesinde doğru bir şekilde ayarlanması koşuluyla (yani, diğer, serseri olmayan makineler için yönlendirme işleri).
techraf

20

Serseri dosyasına "config.ssh.forward_agent = true" eklemeye ek olarak, ana bilgisayarın ajan iletimi için ayarlandığından emin olun. Github bunun için iyi bir rehber sağlar. (Sorun giderme bölümüne bakın).


7

Bunu 1.4.3'te yukarıdaki yanıtlarla çalışırken yaptım, ancak 1.5'te çalışmayı bıraktım. Şimdi ssh-addtam 1.5 ile çalışmak için koşmam gerekiyor.

Şimdilik yanıtlanabilir ön hazırlık betiğime aşağıdaki satırı ekliyorum. - name: Make sure ssk keys are passed to guest. local_action: command ssh-add

Ayrıca kurulumumun bir özünü de oluşturdum: https://gist.github.com/KyleJamesWalker/9538912


Her zaman 1.4 ve 1.5 ile ssh-add kullanmak zorunda kaldım, aksi halde yönlendirilecek bir ajan yoktu
iheggie


2

Yakın zamanda vagrant-awseklentiyi Vagrant 1.1.5 ile denediğimizde , SSH ajan yönlendirme ile ilgili bir sorunla karşılaştık. Vagrant'ın IdentitiesOnly=yesdeğiştirmeye bir seçenek olmadan zorladığı ortaya çıktı no. Bu, Vagrant'ı yalnızca VagrantfileAWS sağlayıcısı için listelediğimiz özel anahtara bakmaya zorladı .

Deneyimlerimizi bir blog yazısında yazdım . Bir noktada bir çekme talebine dönüşebilir.


2
Oluşturma sırasında ana makinedeki altta yatan genel anahtarın Vagrant VM'ye kopyalanmasını otomatikleştirmenin bir yolu var mı Vagrant up? Şu anda makineyi oluşturmam, manuel olarak oturum açmam ve ardından genel anahtarımı /home/vagrant/.ssh/authorized_keys
Noah

1

Sanal makinenin kendi SSH aracısını başlatmadığından emin olun. Bu çizgi benim~/.profile

eval `ssh-agent`

Kaldırdıktan sonra, SSH ajan iletimi çalıştı.


0

Gerçek sorun, Vagrant'ın varsayılan port yönlendirme olarak 127.0.0.1:2222 kullanması. Bir tane ekleyebilirsiniz (2222 değil, 2222 varsayılan olarak zaten dolu)

config.vm.network "forwarded_port", misafir: 22, ana bilgisayar: 2333, host_ip: "0.0.0.0"

"0.0.0.0", harici bağlantıdan istek alma yoludur. sonra ssh -p 2333 vagrant@192.168.2.101 (kendi ana bilgisayar ip adresinizi değiştirin, dud) gayet iyi çalışacaktır. Bana teşekkür edin, bana Leifeng deyin!


0

Windows'ta sorun, Vagrant'ın git-bash'ın ssh aracısıyla nasıl iletişim kuracağını bilmemesidir. Bununla birlikte, PuTTY'nin Yarışması'nı nasıl kullanacağını biliyor. Dolayısıyla, Pageant çalıştığı ve SSH anahtarınızı yüklediği ve config.ssh.forward_agent ayarladığınız sürece bu çalışmalıdır.

Ayrıntılar için bu yoruma bakın.

Pageant kullanıyorsanız , Windows'ta SSH anahtarlarını kopyalamak için Vagrantfile'ı güncellemenin geçici çözümü artık gerekli değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.