Git klonen / ziehen ständig einfrieren bei "Schlüssel im Cache speichern?"

159

Ich versuche, ein Repo von meinem BitBucket-Konto auf meinen Windows 10-Laptop zu klonen (mit GitBash). Ich habe alle für die Verbindung erforderlichen Schritte ausgeführt (Richten Sie meinen SSH-Schlüssel ein, der durch erfolgreiches SSHing von [email protected] usw. überprüft wurde). Wenn ich jedoch versuche, ein Repo zu klonen, wird die Eingabeaufforderung ständig aufgelegt, nachdem bestätigt wurde, dass ich den Bitbucket-Schlüssel zwischenspeichern möchte.

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

Es werden keine Dateien geklont und das Ergebnis ist ein leeres Repo. Wenn Sie versuchen, einen Git-Pull-Origin-Master aus diesem Repo zu initiieren, werden Sie auch aufgefordert, den Schlüssel zwischenzuspeichern, und hängen dann ohne Rückmeldung. Obwohl bei einem SSH-Test nicht gefragt wird, ob der Schlüssel zwischengespeichert werden soll, fragen Git-Operationen jedes Mal nach dem Schlüssel, bevor sie fehlschlagen.

Da es keine Fehlermeldungen gibt, mit denen ich arbeiten kann, weiß ich wirklich nicht, was falsch ist. Ich habe mehrere Repos ausprobiert, darunter auch sehr kleine, ohne Erfolg.

MarathonStudios
quelle

Antworten:

188

Ich hatte dieses Problem beim Klonen eines Repos auch unter Windows 10.

Ich habe es umgangen, indem ich die Putty-GUI für SSH auf dem betreffenden Server verwendet habe (in Ihrem Fall: bitbucket.org) und dann auf "Ja" geklickt habe, als Sie in der Eingabeaufforderung gefragt wurden, ob Sie den Serverschlüssel im Cache speichern möchten. Das erneute Ausführen des Klonbefehls hat dann bei mir funktioniert!

theChumpus
quelle
20
Dies hat es nicht direkt für mich behoben, aber es hat mich zu der Erkenntnis geführt, dass das Problem mit GitBash zusammenhängt, das Putty für die SSH-Authentifizierung anstelle von OpenSSH verwendet. Wenn ich die Systemvariable GIT_SSH gelöscht und GitBash zurückgesetzt habe, funktioniert alles einwandfrei. Vielen Dank!
MarathonStudios
2
Das puttyHinzufügen eines githubSchlüssels im Cache hat bei mir funktioniert
Eiche
4
Dies funktionierte bei Win 7 unter Verwendung der Befehlskonsole. Ich wünschte, jemand könnte mir sagen, warum dies passiert ist und nicht nur eine Problemumgehung.
Soulsabr
1
kann jemand sagen, wie oben genannte Lösung zu tun
Shreyan Mehta
2
@Shreyan Mehta öffnen Sie einfach den Kitt unter dem Hostnamen und fügen Sie [email protected] (oder den von Ihnen verwendeten Host) ein. Stellen Sie sicher, dass Sie den Verbindungstyp von SSH auswählen. Die Portnummer sollte 22 sein. Stellen Sie außerdem sicher, dass der SSH-Schlüssel in den Festzug geladen ist, bevor Sie diesen starten.
Mr.Invisible
110
  1. Kitt öffnen
  2. Geben Sie den Hostnamen ein (wie bitbucket.org)
  3. Klicken Sie auf Öffnen
  4. Klicken Sie im Popup auf Ja, um den Hostschlüssel zwischenzuspeichern
  5. Kitt schließen
cambunctious
quelle
Ich hatte das gleiche Problem. Wenn man sich die Ausgabe von git ansieht, scheint es, als ob git den Hostschlüssel nicht zwischenspeichern kann (wahrscheinlich ein Fehler). Sie müssen dies also über die PuTTY-GUI tun.
Cambunctious
Ich habe alle Schritte ausprobiert, aber wenn ich entweder 'y' oder 'n' auswähle, passiert nichts. Git Bash tut nichts
testet
Haben Sie in Schritt 2 den richtigen Hostnamen eingegeben? Haben Sie versucht, Git Bash neu zu starten?
Cambunctious
1
Wie unterscheidet sich das von der akzeptierten Antwort?
zb226
1
Ich habe diese Antwort gewählt, da sie Schritte enthält. Mir gefällt nicht, wie es eine Problemumgehung ist (Sie müssen dies für jeden SSH-Server wiederholen, den Sie verbinden), genau wie die akzeptierte Antwort.
ShooShoSha
26

Öffnen Sie dazu ein Powershell-Fenster und fügen Sie Folgendes ein:

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]

oder mit PuTTY Standalone-Version:

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]

Wissenswert ist auch, dass Putty bekannte Hosts unter einem Registrierungsschlüssel speichert :

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys

Um das oben Gesagte zu verknüpfen, können Sie Folgendes in eine .regDatei einfügen und ausführen:

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"

putty-hosts.reg Kern

Tim Abell
quelle
2
Siehe auch frühere Fragen und Antworten zu diesem Aspekt von plink: serverfault.com/questions/420526/…
Josip Rodin
2
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)
Azimuth
Für den Fall, dass Ihre Fernbedienung an einem anderen Port als 22 betrieben wird, müssen Sie plink mit dem Port ausführen, indem Sie ihm ein -P <port>Argument übergeben.
PitaJ
19

Ich habe es geschafft, es zum Laufen zu bringen, indem ich plink direkt ausgeführt habe. Nachdem pageant ausgeführt wurde, benutze den Befehl plink direkt - plink.exe -agent -v [email protected]dann, nachdem dieser Git funktioniert, ohne zu hängen.

benjaminRRR
quelle
3
Schöne Lösung! Dies sollte als Antwort markiert sein
ZenithS
Dies ist die beste Antwort.
Brian Lacy
5

Um dieses Problem zu umgehen, habe ich GitBash so konfiguriert, dass plink mit -batchOption verwendet wird. Die Option deaktiviert alle Eingabeaufforderungen. Der Plink wird beendet, ohne zu hängen, und fügt dem Cache keinen wichtigen Fingerabdruck hinzu.

Um dem -batchvon GitBash ausgeführten Plink-Befehl Parameter hinzuzufügen, können Sie eine Git-Konfigurationsoption festlegen:

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

Oder setzen Sie die GIT_SSH_COMMANDUmgebungsvariable.

Die Ausgabe beim Klonen eines Repos von einem unbekannten Host sieht folgendermaßen aus:

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.

Nach dieser Nachricht können Sie einen Schlüssel zum Cache mit dem folgenden Befehl hinzufügen:

echo y | plink [email protected]

BEMERKUNG : Bitte überprüfen Sie, ob Plink in Ihrem ist PATH. Alternativ können Sie einen UNIX-ähnlichen Pfad in der GitBash-Konfigurationsoption verwenden, z.

/c/Program\ Files/PuTTY/plink.exe -batch
Französisch
quelle
1
HI ich bekomme diese Nachricht: FATAL ERROR: Disconnected: Keine unterstützten Authentifizierungsmethoden verfügbar (Server gesendet: publickey)
Pungggi
4

Selbst nachdem Sie die in anderen Antworten erwähnte Problemumgehung ausgeführt haben, kann ein Fehler wie der folgende auftreten:

FATAL ERROR: Disconnected: Keine unterstützten Authentifizierungsmethoden verfügbar (Server gesendet: publickey)

Um beide Probleme gleichzeitig zu lösen, ändern Sie git bash so, dass SSH anstelle von PuTTY verwendet wird, indem Sie Ihrer ~/.profileDatei Folgendes hinzufügen ( C:\Users\<Username>\.profile). Wenn Sie diese Datei noch nicht haben, erstellen Sie eine neue Datei mit dieser Zeile.

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

Dann öffnen Sie ein neues git bash Fenster und versuchen Sie , git cloneoder git pullwieder.

Beachten Sie, dass Sie möglicherweise einen SSH-Schlüssel erstellen müssen, falls Sie noch keinen haben. Befolgen Sie dazu die Anweisungen auf der Bitbucket- Site.

Siehe diese SO-Frage für verwandte Informationen.

Schparky
quelle
1

Überprüfen Sie in Ihrer Git-Bash-Shell, ob GIT_SSH vorhanden ist:
echo $GIT<tab><tab>
Wenn es vorhanden ist und auf Kitt gesetzt ist, führen
unset GIT_SSH
Sie Folgendes aus: Sie möchten dies wahrscheinlich in eines der Git-Bash- Startskripte einfügen .
Dies ist KEINE universelle Lösung. In unserem speziellen Fall hat es funktioniert.

Richard Jessop
quelle
Was / Wo ist ein 'Git Bash Startskript'? Ich kenne mich nur mit echtem Linux aus.
Jeff K
Es gibt mehrere Startskripte. Einige befinden sich im Verzeichnis / etc; andere können sich in Ihrem Home-Verzeichnis befinden. Welche Startskripte ausgeführt werden, hängt von den Befehlszeilenoptionen Ihrer Shell ab (interaktiv oder login). Diese sind unabhängig vom Betriebssystem relevant, auf dem die Shell ausgeführt wird.
Richard Jessop
Windows hat kein '/ etc'-Verzeichnis.
Jeff K
Bash-Shells, die unter Windows ausgeführt werden, tun dies. Sie werden normalerweise einem Ort außerhalb des Basisverzeichnisses (oder Installationsverzeichnisses) der Shell zugeordnet. Schauen Sie sich einen Git Bash und einen Cygwin Bash an. Denken Sie daran, dies sind Shells, die wie eine Shell auf einem Linux-System aussehen und funktionieren.
Richard Jessop
0

Es klingt ein bisschen albern, aber nachdem ich all das ausprobiert hatte, entschied ich mich, Git Bash mit den Standardoptionen neu zu installieren und es funktionierte.

Vlad
quelle