Git klonlama / çekme "Sürekli önbellekte sakla?"


160

BitBucket hesabımdan Windows 10 dizüstü bilgisayarıma (GitBash çalıştıran) bir repo kopyalamaya çalışıyorum. Bağlanmak için gerekli tüm adımları tamamladım (SSH anahtarımı ayarladım, başarıyla SSHing git@bitbucket.org, vb. Tarafından doğrulandı). Ancak, bir repoyu klonlamaya çalıştığımda, Bitbucket'in anahtarını önbelleğe almak istediğimi onayladıktan sonra istem sürekli olarak telefonu kapatır.

User@Laptop MINGW64 /C/Repos
$ git clone git@bitbucket.org: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

Hiçbir dosya kopyalanmaz ve sonuç boş bir repo olur. Bu repodan git çekme başlangıç ​​ustası başlatmaya çalışmak da anahtarı önbelleğe almayı ister, ardından geri bildirim olmadan kilitlenir. Bir SSH testi yaptığımda anahtarın önbelleğe alınmasını istemememe rağmen, git işlemleri her zaman başarısız olmadan önce anahtarı ister.

Hiçbir hata mesajı ile çalışmak için, ben gerçekten ne yanlış için bir kayıp. Çok küçük olanlar da dahil olmak üzere birden fazla depo denedim, hiç bir başarı elde etmedim.

Yanıtlar:


189

Windows 10'da bir kopyayı klonlarken bu sorunu yaşadım.

Söz konusu sunucuya SSH'ye Putty GUI'yi kullanarak (bu durumda: bitbucket.org) daha sonra komut istemi sunucu anahtarını önbelleğe kaydetmek isteyip istemediğinizi sorduğunda 'Evet'i tıklattım. Klon komutunu tekrar çalıştırmak benim için çalıştı!


21
Bu benim için doğrudan düzeltmedi, ancak sorunun OpenSSH yerine ssh kimlik doğrulaması için Putty kullanan GitBash ile ilgili olduğunu fark etmeme neden oldu. GIT_SSH sistem değişkenini sildiğimde ve GitBash'i sıfırladığımda her şey yolunda gidiyor. Teşekkürler!
MarathonStudios

2
Kullanılması puttyeklemek için githubönbellekte anahtarı benim için çalıştı
meşe

4
Bu komut konsolunu kullanarak Win 7'de benim için çalıştı. Keşke birisi bana bunun sadece bir çözümden ziyade neden olduğunu söyleyebilseydi.
soulsabr

1
Herkes yukarıdaki çözüm nasıl yapıldığını söyleyebilir
Shreyan Mehta

2
@Shreyan Mehta sadece macunu aç, ana bilgisayar adı altında git@github.com (ya da kullandığınız herhangi bir ana bilgisayar) yapıştırın. SSH bağlantı türünü seçtiğinizden emin olun. Bağlantı noktası numarası 22 olmalıdır. Ayrıca, başlatmadan önce ssh anahtarının pageant'a yüklendiğinden emin olun.
Görünmez

111
  1. Açık Macun
  2. Ana Bilgisayar Adını yazın (beğen bitbucket.org)
  3. Aç'ı tıklayın
  4. Ana makine anahtarını önbelleğe almak için açılır pencerede evet'i tıklayın
  5. Close Macun

Ben de aynı problemi yaşadım. Git'ten çıktıya bakıldığında, git ana bilgisayar anahtarını (muhtemelen bir hata) önbelleğe almıyor gibi görünüyor. Yani bunu PuTTY GUI kullanarak yapmak zorundasınız.
cambunctious

Tüm adımları denedim ama 'y' ya da 'n'yi seçtiğimde hiçbir şey olmuyor Git Bash hiçbir şey yapmıyor
testsingh

2. adımda doğru ana bilgisayar adını yazdınız mı? Git Bash'i yeniden başlatmayı denediniz mi?
cambunctious

1
Bu, kabul edilen cevaptan nasıl farklıdır?
zb226

1
Adımlar sağladığı için bu cevaba oy verdim. Nasıl kabul edilir cevap gibi bir geçici çözüm (bağlandığınız her SSH sunucusu için bunu tekrarlamak zorunda) gibi sevmiyorum.
ShooShoSha

26

Powershell'den bunu yapmak için bir powershell penceresi açın ve aşağıdakileri yapıştırın:

echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@github.com
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@gist.github.com
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@bitbucket.org

veya PuTTY bağımsız sürümü ile:

echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@github.com
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@gist.github.com
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@bitbucket.org

Ayrıca, macunun bilinen ana bilgisayarları bir kayıt defteri anahtarı altında sakladığı da bilinmelidir :

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys

Yukarı kısayolu kısaltmak için aşağıdakileri bir .regdosyaya koyabilir ve çalıştırabilirsiniz:

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"

macun-hosts.reg gist


2
Ayrıca plink'in bu yönü hakkında daha önceki soru ve cevaplara bakın: serverfault.com/questions/420526/…
Josip Rodin

2
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)
Azimut

Uzaktan kumandanızın 22 dışında bir bağlantı noktasında çalışması durumunda, bağlantı noktasını bir -P <port>argüman ileterek plink çalıştırmanız gerekir .
PitaJ

20

Ben doğrudan plink çalıştırarak çalışmayı başardı, pageant çalıştırdıktan plink.exe -agent -v git@github.comsonra doğrudan plink komutunu kullanın - sonra bu git asılı olmadan çalışır.


3
Güzel çözüm! Bu bir cevap olarak işaretlenmiş olmalıdır
ZenithS

Bu en iyi cevap.
Brian Lacy

5

Bu soruna geçici bir çözüm bulmak için GitBash'ı plink with -batchoption kullanacak şekilde yapılandırdım . Seçenek tüm istemleri devre dışı bırakır - plink asılı olmadan sonlanır ve önbelleğe herhangi bir anahtar parmak izi eklemez.

-batchGitBash tarafından yürütülen plink komutuna parametre eklemek için bir git config seçeneği belirleyebilirsiniz:

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

Veya GIT_SSH_COMMANDortam değişkenini ayarlayın .

Bilinmeyen ana bilgisayardan bir repo kopyaladığınızda çıktı şu şekilde olacaktır:

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.

Bu mesajdan sonra önbellek komutuyla bir anahtar ekleyebilirsiniz:

echo y | plink git@bitbucket.org

HATIRLATMA : plink Gözlerinde farklı olup olmadığını kontrol edin PATH. Alternatif olarak GitBash yapılandırma seçeneğinde UNIX benzeri yolu kullanın, örn:

/c/Program\ Files/PuTTY/plink.exe -batch

1
HI Bu iletiyi alıyorum: FATAL ERROR: Disconnected: Desteklenen kimlik doğrulama yöntemi yok (sunucu gönderildi: publickey)
pungggi

4

Diğer yanıtlarda belirtilen geçici çözümü gerçekleştirdikten sonra bile, aşağıdaki gibi bir hatayla karşılaşabilirsiniz:

FATAL HATASI: Bağlantı kesildi: Desteklenen kimlik doğrulama yöntemi yok (sunucu gönderildi: publickey)

Her iki sorunu da aynı anda çözmek için, ~/.profiledosyanıza aşağıdakileri ekleyerek git bash değerini PuTTY yerine SSH kullanacak şekilde değiştirin ( C:\Users\<Username>\.profile). Bu dosyaya sahip değilseniz, bu satırla yeni bir dosya oluşturun.

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

Ardından yeni bir git bash penceresi açın git cloneve git pulltekrar ya da deneyin .

Bunun, henüz yoksa bir SSH anahtarı oluşturmanızı gerektirebileceğini unutmayın. Bunu yapmak için, Bitbucket sitesindeki talimatları izleyin .

İlgili bilgi için bu SO sorusuna bakın .


1

Git bash kabuğunuzda GIT_SSH varlığını kontrol edin:
echo $GIT<tab><tab>
Varsa ve macun olarak ayarlanmışsa, yürütün:
unset GIT_SSH
Muhtemelen bunu git bash başlangıç ​​komut dosyalarından birine koymak isteyeceksiniz.
Bu evrensel bir çözüm DEĞİLDİR. Bizim özel durumumuzda işe yaradı.


'git bash startup script' nedir / nerede? Ben sadece gerçek linux'u tanıyorum.
Jeff K

Birden fazla başlatma komut dosyası vardır. Bazıları / etc dizininde bulunur; diğerleri ana dizininizde olabilir. Hangi başlatma komut dosyalarının yürütüldüğü, kabuğunuzdaki komut satırı seçeneklerine (etkileşimli ve oturum açma) bağlıdır. Bunlar, kabuğun üstünde çalıştığı işletim sistemine bakılmaksızın ilgilidir.
Richard Jessop

Windows'un '/ etc' dizini yok.
Jeff K

Windows altında çalışan Bash kabukları bunu yapar. Genellikle kabuğun base (veya install) dizininden bir yere eşlenirler. Git bash ve Cygwin bash'a bir göz atın. Unutmayın, bunlar linux sisteminde bir kabuk gibi görünen ve çok çalışan kabuklardır.
Richard Jessop

0

Biraz aptalca geliyor, ancak yukarıdakilerin hepsini denedikten sonra, Git Bash'ı varsayılan seçeneklerle yeniden yüklemeye karar verdim ve işe yaradı.

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.