Jawab ya dalam skrip bash


24

Saya mencoba melakukan git clonepalung skrip bash, tetapi pertama kali saya menjalankan skrip dan server belum diketahui skrip gagal. Saya punya sesuatu seperti ini:

yes | git clone git@github.com:repo/repoo.git
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? 

Tapi itu mengabaikan yes. Apakah Anda tahu cara memaksa git cloneuntuk menambahkan kunci ke host yang dikenal?


Bagaimana dengan echo yes | git clone git@github.com:repo/repoo.git?
asfallows

3
@asfallows, @Rafael: echo yesbukan pendekatan yang baik: kedua kalinya Anda menjalankan perintah, ssh tidak akan bertanya apakah Anda ingin melanjutkan karena kunci server sudah diketahui.
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:


21

Tambahkan yang berikut ke ~/.ssh/configfile Anda :

Host github.com
    StrictHostKeyChecking no

Apa pun yang menggunakan klien open-ssh untuk membuat shell jarak jauh (dengan klien git melakukannya) harus melewati pemeriksaan kunci ke github.com.

Ini sebenarnya ide yang buruk karena segala bentuk melewatkan cek (apakah Anda secara otomatis menekan ya atau melewatkan cek di tempat pertama) menciptakan ruang bagi seorang pria dalam kompromi keamanan menengah. Cara yang lebih baik adalah dengan mengambil dan memvalidasi sidik jari dan menyimpannya dalam known_hostsfile sebelum perlu menjalankan beberapa skrip yang secara otomatis terhubung.


2
Dengan preferensi yang kuat untuk mengambil dan memvalidasi sidik jari dan menyimpannya dalam known_hostsfile sebelumnya .
Gilles 'SANGAT berhenti menjadi jahat'

1
Terima kasih banyak atas jawaban Anda, saya akhirnya mengikuti pendekatan menambahkan sidik jari di known_hosts. Ini seperti lebih aman :)
Rafael

Oh saya menggunakan boneka untuk melakukan ini. Jika seseorang tertarik untuk menggunakannya di sini adalah resepnya: gist.github.com/1155725
Rafael

5

yesoutput y. Kebutuhan penerimaan kunci RSA yes. Anda bisa mencoba yes yes | git clone git@github.com:repo/repoo.gitjadi bukan yeskeluaran .yesy


5
Untuk beberapa alasan, itu tidak berhasil untuk git clone, untukku.
Matt V.

Tidak ada yang berhasil untuk saya. Juga echo "yes" | ...tidak. Saya pikir gittidak menerima perpipaan. Mungkin hanya dalam beberapa versi?
udondan

3

Menjalankan ssh-keyscan -H github.com >> ~/.ssh/known_hostssebelum kloning akan menambah kunci dan mencegah muncul prompt.

Tentu saja pendekatan ini juga rentan terhadap serangan MITM.


1

Saya pernah mengalami masalah ini sebelumnya. Meskipun itu pada mesin Windows tapi kami harus menggunakan ssh untuk terhubung ke host jarak jauh. Kami mengalami masalah yang sama dengan koneksi pertama yang selalu gagal karena tidak mengenali kunci.

Saya menyelesaikannya dengan menghubungkan secara manual dan menemukan kunci registri dan mengimpornya di awal skrip. Di Linux seharusnya ide yang sama: Anda ingin menambahkan server ini ke daftar host tepercaya sehingga ssh tidak akan bertanya apakah Anda memercayainya setiap saat.

Setelah Anda terhubung secara manual, cari file kunci dan tambahkan ke file known_hosts Anda. Dengan cara ini ssh akan memeriksa file itu, menganggap Anda tahu apa yang Anda lakukan dan melanjutkan tanpa bertanya tentang sidik jari.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.