Saya mencoba melakukan git clone
palung 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 clone
untuk menambahkan kunci ke host yang dikenal?
echo yes | git clone [email protected]:repo/repoo.git
?echo yes
bukan pendekatan yang baik: kedua kalinya Anda menjalankan perintah, ssh tidak akan bertanya apakah Anda ingin melanjutkan karena kunci server sudah diketahui.Jawaban:
Tambahkan yang berikut ke
~/.ssh/config
file Anda :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_hosts
file sebelum perlu menjalankan beberapa skrip yang secara otomatis terhubung.sumber
known_hosts
file sebelumnya .yes
outputy
. Kebutuhan penerimaan kunci RSAyes
. Anda bisa mencobayes yes | git clone [email protected]:repo/repoo.git
jadi bukanyes
keluaran .yes
y
sumber
echo "yes" | ...
tidak. Saya pikirgit
tidak menerima perpipaan. Mungkin hanya dalam beberapa versi?Menjalankan
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
sebelum kloning akan menambah kunci dan mencegah muncul prompt.Tentu saja pendekatan ini juga rentan terhadap serangan MITM.
sumber
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.
sumber