Git klon / tarik terus-menerus membeku di "Simpan kunci dalam cache?"

160

Saya mencoba untuk mengkloning repo dari akun BitBucket saya ke laptop Windows 10 saya (menjalankan GitBash). Saya telah menyelesaikan semua langkah yang diperlukan untuk menghubungkan (mengatur kunci SSH saya, diverifikasi oleh SSHing sukses [email protected], dll). Namun, setiap kali saya mencoba untuk mengkloning repo, prompt terus menutup setelah mengkonfirmasi bahwa saya ingin cache kunci Bitbucket.

User@Laptop MINGW64 /C/Repos
$ git clone [email protected]:mygbid/test.git
Cloning into 'test'...
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y

Tidak ada file yang dikloning, dan hasilnya adalah repo kosong. Mencoba untuk memulai master git pull asal dari repo ini juga meminta untuk men-cache kunci, lalu hang tanpa umpan balik. Meskipun tidak meminta kunci untuk di-cache ketika saya melakukan tes SSH, operasi git selalu meminta kunci setiap kali sebelum gagal.

Dengan tidak ada pesan kesalahan untuk bekerja, saya benar-benar bingung apa yang salah. Saya sudah mencoba beberapa repo, termasuk yang sangat kecil, tetapi tidak berhasil sama sekali.

MarathonStudios
sumber

Jawaban:

189

Saya punya masalah ini ketika kloning repo di Windows 10 juga.

Saya menyiasatinya dengan menggunakan Putty GUI ke SSH ke server yang dimaksud (dalam kasus Anda: bitbucket.org) lalu mengklik 'Ya' ketika prompt bertanya apakah Anda ingin menyimpan kunci server ke cache. Menjalankan perintah clone lagi lalu bekerja untukku!

theChumpus
sumber
21
Ini tidak secara langsung memperbaikinya untuk saya, tetapi itu membuat saya menyadari bahwa masalahnya terkait dengan GitBash menggunakan Putty untuk otentikasi ssh, bukan OpenSSH. Ketika saya menghapus variabel sistem GIT_SSH dan mengatur ulang GitBash semuanya berfungsi dengan baik. Terima kasih!
MarathonStudios
2
Menggunakan puttyuntuk menambahkan githubkunci dalam cache bekerja untuk saya
oak
4
Ini bekerja untuk saya di Win 7 menggunakan konsol perintah. Saya berharap seseorang dapat memberi tahu saya mengapa ini terjadi dan bukan hanya solusi.
soulsabr
1
Adakah yang bisa mengatakan bagaimana melakukan solusi di atas
Shreyan Mehta
2
@Shreyan Mehta cukup buka dempul, di bawah nama host paste [email protected] (atau host apa pun yang Anda gunakan). Pastikan untuk memilih jenis koneksi SSH. Nomor port harus 22. Juga pastikan kunci ssh dimuat ke dalam kontes sebelum meluncurkan ini.
Mr.Invisible
111
  1. Buka Dempul
  2. Ketikkan Nama Host (seperti bitbucket.org)
  3. Klik Buka
  4. Klik ya di jendela sembulan untuk menyimpan kunci host
  5. Tutup Dempul
cambunctious
sumber
Saya memiliki masalah yang sama. Melihat output dari git, sepertinya git gagal untuk me-cache kunci host (mungkin bug). Jadi, Anda harus melakukannya menggunakan GUI Putty.
cambunctious
Saya mencoba semua langkah, tetapi ketika saya memilih 'y' atau 'n' tidak ada yang terjadi Git Bash tidak melakukan apa
tes
Apakah Anda mengetik nama host yang tepat di langkah 2? Apakah Anda mencoba memulai ulang Git Bash?
cambunctious
1
Bagaimana ini berbeda dari jawaban yang diterima?
zb226
1
Saya memilih jawaban ini karena menyediakan langkah-langkah. Saya tidak suka bagaimana ini solusinya (Anda harus mengulang ini untuk setiap server SSH yang Anda hubungkan) seperti jawaban yang diterima.
ShooShoSha
26

Untuk melakukan ini dari PowerShell, buka jendela PowerShell dan rekatkan sebagai berikut:

echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh [email protected]

atau dengan versi mandiri Putty:

echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh [email protected]

Juga perlu diketahui adalah bahwa dempul menyimpan host yang dikenal di bawah kunci registri :

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys

Untuk pintas di atas, Anda bisa memasukkan yang berikut ini dalam .regfile dan menjalankannya:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys]
"rsa2@22:github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:gist.github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:bitbucket.org"="0x23,0xb9b88df3578371a7eb80c78bcda14fb30da436f11ca932a5fd5a8b6adfcc681df7a59cb4cb7ac966d9eac11daa38ebdbc0a6582a210ed4ee95a8d101c4abc925e942ab47535d64f9a5b3b68035c2ea1e900d709a1e8ea938718f532f9805a190446b92bac3040126225ae9d8374bc2008f106979d631734c7453f78c70091f4783b288869cb3c1941a784cd9baad823be27333833dc1f488a45b85952be75cf0a64965662302e3915378dcd5cfcd3ec903d804a29dff2fdf19df5deba4534b09e4dea6e44f152e339b3c43be98ddadfc56533192e216a3d673f00b4aa9cc9e7870acd8b6adb7e0feb77f2292fc2dede94819def3eb1e785541a06ab31ccf725f"

inti putty-hosts.reg

Tim Abell
sumber
2
Lihat juga pertanyaan dan jawaban sebelumnya tentang aspek ini: serverfault.com/questions/420526/…
Josip Rodin
2
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)
Azimuth
Dalam hal remote Anda beroperasi pada port selain 22, Anda perlu menjalankan plink dengan port dengan mengirimkannya -P <port>argumen.
PitaJ
20

Saya berhasil membuatnya bekerja dengan menjalankan plink secara langsung, setelah kontes berjalan menggunakan perintah plink secara langsung - plink.exe -agent -v [email protected]kemudian setelah git ini bekerja tanpa menggantung.

benjaminRRR
sumber
3
Solusi bagus! Ini seharusnya ditandai sebagai jawaban
ZenithS
Ini jawaban terbaik.
Brian Lacy
5

Untuk mengatasi masalah ini, saya mengkonfigurasi GitBash untuk menggunakan -batchopsi plink with . Opsi ini menonaktifkan semua prompt - plink akan berhenti tanpa menggantung dan tidak akan menambahkan sidik jari kunci apa pun ke cache.

Untuk menambahkan -batchparameter ke perintah plink yang dijalankan oleh GitBash, Anda dapat mengatur opsi konfigurasi git:

git config --global core.sshCommand "plink -batch"

Atau atur GIT_SSH_COMMANDvariabel lingkungan.

Output ketika Anda mengkloning repo dari host yang tidak dikenal akan mirip dengan ini:

The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
Connection abandoned.
fatal: Could not read from remote repository.

Setelah pesan ini, Anda dapat menambahkan kunci ke cache dengan perintah:

echo y | plink [email protected]

KETERANGAN : Tolong periksa apakah plink ada di Anda PATH. Atau gunakan jalur seperti UNIX di opsi konfigurasi GitBash, mis:

/c/Program\ Files/PuTTY/plink.exe -batch
frenchu
sumber
1
HI saya mendapatkan pesan ini: KESALAHAN FATAL: Terputus: Tidak tersedia metode autentikasi yang didukung (server mengirim: publickey)
pungggi
4

Bahkan setelah melakukan solusi yang disebutkan dalam jawaban lain, Anda mungkin mengalami kesalahan seperti:

KESALAHAN FATAL: Terputus: Tidak tersedia metode otentikasi yang didukung (server terkirim: publickey)

Untuk menyelesaikan kedua masalah sekaligus, ubah git bash untuk menggunakan SSH daripada Putty dengan menambahkan berikut ini ke ~/.profilefile Anda ( C:\Users\<Username>\.profile). Jika Anda belum memiliki file ini, buat file baru dengan baris ini.

GIT_SSH="/usr/bin/ssh.exe"

Kemudian buka jendela git bash baru dan coba git cloneatau git pulllagi.

Perhatikan bahwa ini mungkin mengharuskan Anda untuk membuat kunci SSH jika Anda belum memilikinya. Untuk melakukan ini, ikuti instruksi di situs Bitbucket .

Lihat pertanyaan SO ini untuk info terkait.

Schparky
sumber
1

Di git bash shell Anda, periksa keberadaan GIT_SSH:
echo $GIT<tab><tab>
Jika ada dan diatur ke dempul, jalankan:
unset GIT_SSH
Anda mungkin ingin memasukkan ini ke dalam salah satu skrip startup git bash.
Ini BUKAN solusi universal. Ini berhasil dalam kasus khusus kami.

Richard Jessop
sumber
apa / di mana 'skrip startup git bash'? Saya hanya akrab dengan linux sungguhan.
Jeff K
Ada beberapa skrip start up. Beberapa berada di direktori / etc; yang lain bisa di direktori home Anda. Script start up yang dijalankan tergantung pada opsi baris perintah ke shell Anda (interaktif vs login). Ini relevan terlepas dari OS yang dijalankan oleh shell.
Richard Jessop
Windows tidak memiliki direktori '/ etc'.
Jeff K
Kerang Bash yang berjalan di bawah Windows lakukan. Biasanya dipetakan untuk menggantikan direktori dasar shell (atau instal). Lihatlah bash git dan bash Cygwin. Ingat, ini adalah shell yang mirip dan beroperasi sangat mirip shell pada sistem linux.
Richard Jessop
0

Kedengarannya agak konyol, tetapi setelah mencoba semua hal di atas, saya memutuskan untuk menginstal ulang Git Bash dengan opsi default dan berhasil.

Vlad
sumber