Bagaimana cara menggunakan penerusan agen ssh dengan "vagrant ssh"?

107

Daripada membuat pasangan kunci SSH baru di kotak gelandangan, saya ingin menggunakan kembali pasangan kunci yang saya miliki di mesin host saya, menggunakan penerusan agen . Saya sudah mencoba menyetel config.ssh.forward_agent ke TRUE di Vagrantfile, lalu mem-boot ulang VM, dan mencoba menggunakan:

vagrant ssh -- -A

... tapi saya masih dimintai kata sandi ketika saya mencoba melakukan git checkout. Tahu apa yang saya lewatkan?

Matt V.
sumber
jika Anda tidak memiliki kunci ssh dengan benar, git tidak boleh meminta kata sandi, tetapi memberi tahu Anda bahwa Anda telah menolak izin. Saya kira Anda dimintai kata sandi karena Anda mengkloning dari https, bukan dari [email protected] (ssh). 2 sen saya.
alexserver

Jawaban:

89

Saya menggunakan gelandangan 2 di 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 adalah kunci pribadi lokal Anda
  2. Kunci pribadi Anda harus tersedia untuk ssh-agent lokal. Anda dapat memeriksa dengan ssh-add -L, jika tidak terdaftar menambahkannya denganssh-add ~/.ssh/id_rsa
  3. Jangan lupa untuk menambahkan kunci publik Anda ke ~/.ssh/authorized_keysVagrant VM. Anda dapat melakukannya salin dan tempel atau menggunakan alat seperti ssh-copy-id
LuizSignorelli
sumber
8
Saya perhatikan bahwa setelah saya mengatur di atas, saya dapat menggunakan pengguna "gelandangan" untuk "git clone" tetapi saya tidak dapat menggunakan "root" pengguna untuk "git clone". Tahukah Anda apa yang tampaknya menjadi masalahnya? Terima kasih
Nam Nguyen
7
config.ssh.private_key_path = "~/.ssh/id_rsa"membuat gelandangan bertahan Waiting for VM to boot.
apennebaker
14
Anda juga perlu menyimpan kunci asuransi gelandanganconfig.ssh.private_key_path = [ '~/.vagrant.d/insecure_private_key', '~/.ssh/id_rsa' ]
Calin
3
Di OS X, saya menemukan menambahkan kunci pribadi ke gantungan kunci OS X dengan ssh-add -Kbekerja (serta config.ssh.forward_agent = true). Lihat jawaban ini
Flimm
2
Saya mendapat kesalahan yang sama dengan @apennebaker. dan mengikuti langkah-langkah yang disarankan Calin tidak membantu ... Yang berhasil bagi saya adalah menambahkan kunci ke rantai kunci dari OS host saya dan menonaktifkan penugasan config.ssh.private_key_path.
alexserver
80

Tambahkan ke Vagrantfile

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

Lihat dokumennya

EnabrenTane
sumber
11
Pastikan Anda menambahkan ssh pada host yang mendasarinya dan kuncinya didekripsi.
EnabrenTane
1
Perhatikan bahwa Windows tidak memulai ssh-agent secara otomatis, yang harus Anda jalankan untuk meneruskan kunci ssh Anda. Ikuti panduan ini untuk menyiapkan ssh-agent autostarting di Windows.
nebffa
62
Jawaban ini mungkin tidak pantas mendapatkan banyak suara. OP dengan jelas menyatakan bahwa mereka menambahkan config.ssh.forward_agentke file konfigurasi mereka, jadi informasi baru apa yang disediakan jawaban ini? Bahkan tautannya sudah di pertanyaan.
Trindaz
7
@Trindaz Anda benar. Saya tidak dapat menjelaskan mengapa ini adalah salah satu jawaban saya yang paling populer. Namun ini tampaknya membantu setidaknya 52 orang, jadi saya harus menyebutnya kemenangan.
EnabrenTane
1
Jawaban ini memang tidak membawa informasi baru, tetapi di sisi lain itu adalah segala sesuatu yang perlu dikonfigurasi untuk mesin yang disediakan Vagrant. Setidaknya asalkan Anda memiliki agen forwarding yang diatur dengan benar pada mesin penghubung (mis. Penerusan bekerja untuk mesin non-gelandangan lainnya).
techraf
20

Selain menambahkan "config.ssh.forward_agent = true" ke file gelandangan, pastikan komputer host disiapkan untuk penerusan agen. Github menyediakan panduan yang bagus untuk ini. (Lihat bagian pemecahan masalah).

HipsterHobo
sumber
7

Saya telah mengerjakan ini dengan balasan di atas pada 1.4.3, tetapi berhenti mengerjakan 1.5. Sekarang saya harus menjalankan ssh-adduntuk bekerja sepenuhnya dengan 1.5.

Untuk saat ini saya menambahkan baris berikut ke skrip penyediaan yang memungkinkan. - name: Make sure ssk keys are passed to guest. local_action: command ssh-add

Saya juga telah membuat inti dari penyiapan saya: https://gist.github.com/KyleJamesWalker/9538912

Kyle James Walker
sumber
Saya selalu harus menggunakan ssh-add dengan 1.4 dan 1.5 karena jika tidak, tidak ada agen yang akan diteruskan
iheggie
2

Saat kami baru-baru ini mencoba vagrant-awsplugin dengan Vagrant 1.1.5, kami mengalami masalah dengan penerusan agen SSH. Ternyata Vagrant memaksa IdentitiesOnly=yestanpa opsi untuk mengubahnya no. Ini memaksa Vagrant untuk hanya melihat kunci pribadi yang kami daftarkan Vagrantfileuntuk penyedia AWS.

Saya menulis pengalaman kami dalam posting blog . Ini mungkin berubah menjadi permintaan tarik di beberapa titik.

Benjamin Oakes
sumber
2
Apakah ada cara untuk mengotomatiskan penyalinan kunci publik yang mendasari pada mesin host ke VM Vagrant saat pembuatan Vagrant up? Sekarang saya harus membuat mesin, masuk secara manual dan kemudian menambahkan kunci publik saya ke /home/vagrant/.ssh/authorized_keys
Noah
1

Pastikan VM tidak meluncurkan agen SSH-nya sendiri. Saya memiliki baris ini di saya~/.profile

eval `ssh-agent`

Setelah menghapusnya, penerusan agen SSH berfungsi.

Fabian Schmengler
sumber
0

Masalah sebenarnya adalah Vagrant menggunakan 127.0.0.1:2222 sebagai port-forward default. Anda dapat menambahkan satu (bukan 2222, 2222 sudah ditempati secara default)

config.vm.network "forwarded_port", tamu: 22, host: 2333, host_ip: "0.0.0.0"

"0.0.0.0" adalah cara menerima permintaan dari koneksi eksternal. lalu ssh -p 2333 [email protected] (ubah ke alamat ip host Anda sendiri, dud) akan berfungsi dengan baik. Terima kasih, panggil saja aku Leifeng!

Leifeng
sumber
0

Di Windows, masalahnya adalah Vagrant tidak tahu cara berkomunikasi dengan ssh-agent git-bash. Namun, ia tahu cara menggunakan Pageant PuTTY. Jadi, selama Pageant berjalan dan telah memuat kunci SSH Anda, dan selama Anda menyetel config.ssh.forward_agent, ini akan berfungsi.

Lihat komentar ini untuk detailnya.

Jika Anda menggunakan Pageant, maka solusi untuk memperbarui Vagrantfile untuk menyalin kunci SSH di Windows tidak lagi diperlukan.

Josh Kelley
sumber