Ich versuche, Änderungen von meinem lokalen Repo auf ein Remote-Repo zu übertragen. Wenn ich tippe:
git push origin
Ich erhalte folgende Fehlermeldung:
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 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Connection abandoned.
fatal: The remote end hung up unexpectedly
Wie kann ich das lösen? Ich verwende Git über die Befehlszeile in Windows 7.
Bearbeiten
Wenn ich versuche, ein einfaches ssh zu machen
ssh user@hostname
Ich erhalte folgende Fehlermeldung:
Could not create directory '/c//%HOMEDRIVE%%HOMEPATH%/.ssh'.
percent_expand: unknown key %H
Irgendwie wird das Verzeichnis nicht erstellt, da der Pfad ungültig ist. Wie kann ich das beheben?
@eckes: Edit2
Mein Zuhause ist auf %HOMEDRIVE%%HOMEPATH%
richtig eingestellt?
$HOME
nicht richtig eingerichtet zu sein. Versuchen Sie, dieHOME
Umgebungsvariable unter Windows mitMy Computer
-> Rechtsklick ->Properties
-> TabAdvanced
-> ButtonEnvironment Variables
/c//
(vermutlich einem Laufwerksbuchstaben) immer noch%HOMEDRIVE%
... Sie könnten sich Zeit sparen, indem Sie selbst an dem Wert herumspielen und ihn wiederholen?HOMEDRIVE
undHOMEPATH
und setzen SieHOME
auf den resultierenden Wert ...Antworten:
Die Nachricht bedeutet, dass der Hostschlüssel von
origin
nicht in Ihrer vertrauenswürdigen Hosts-Datei vorhanden ist.Um dies zu
origin
umgehen , öffnen Sie eine einfache SSH-Verbindung zu und SSH fragt Sie, ob Sie dem Remote-Host (über die Git-Konsole) vertrauen möchten:Wenn Sie dem Remote-Host (dh dem Typ
yes
) vertrauen , fügt SSH seinen Schlüssel der Liste der bekannten Hosts hinzu.Danach sollten Sie in der Lage sein, Ihre
git push origin
.Als Alternative können Sie auch manuell den Schlüssel der
origin
zu ,.ssh/known_hosts
aber dies erfordert , dass Sie das Format der haftenknown_hosts
Datei wie in der Manpage von beschriebensshd
(Abschnitt authorized_keys FORMAT ).quelle
known_hosts
Datei.Für diejenigen unter Ihnen, die MSYS Git unter Windows mit PuTTY über die Standard-Eingabeaufforderung einrichten, besteht die Möglichkeit, einen Host zum PuTTY-Cache hinzuzufügen
Beispielsweise:
Antworte einfach
y
und dann Strg + C den Rest.Überprüfen Sie jedoch den Fingerabdruck. Diese Warnung gibt es aus gutem Grund. Fingerabdrücke für einige Git-Dienste (bitte bearbeiten, um weitere hinzuzufügen):
16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
7e:af:8d:ec:f0:39:5e:ba:52:16:ce:19:fa:d4:b8:7d
quelle
plink
indem Sie es ausführen$ set | grep GIT_SSH
und nachGIT_SSH='C:\Program Files (x86)\PuTTY\plink.exe'
-P
, wählen Sie den Port aus, zplink.exe example.com -P 2222
. Ich konnte von Github klonen, aber nicht von meinem persönlichen Server, und das verwirrte mich bis zum Äußersten.Versuchen Sie, an der Git Bash-Eingabeaufforderung ein "set | grep -i ssh" auszuführen
Wenn Ihr Setup meinem entspricht, haben Sie wahrscheinlich folgende Einstellungen:
Ich habe ein
und es hat danach funktioniert. Ich denke, Putty speichert seine Schlüssel woanders als $ HOME / .ssh oder so ... (Ich hatte auch ein Problem mit einer Box, in der $ HOME auf "C: \ Users \" gesetzt war usrnam "anstelle von" / C / Users / usrnam / "
Trotzdem kann Ihr Kilometerstand variieren, aber das hat es für mich behoben. :-)
(Wahrscheinlich reicht es aus, nur das nicht gesetzte GIT_SSH zu machen, aber ich war auf einer Rolle)
Hinweis: Wenn unset nicht für Sie funktioniert, versuchen Sie Folgendes:
quelle
unset GIT_SSH
hat auch für mich funktioniert, obwohl ich es jedes Mal tun muss, wenn ich Git Bash starte, was ziemlich langweilig ist. Irgendeine Idee, wie man das automatisiert?Ich vermute, dass Ihre
GIT_SSH
Umgebungsvariable auf gesetzt ist%ProgramFiles(x86)%\putty\plink.exe
. Aus irgendeinem Grund verwendet PLink die.ssh/known_hosts
Datei in Ihrem Benutzerverzeichnis nicht zum Speichern der Remote-Hosts-Schlüssel.Wenn dies tatsächlich der Fall ist und dies möglicherweise absichtlich der Fall ist, wenn Sie einen Festzug verwenden möchten, müssen Sie zuerst PLink verwenden, um eine Verbindung zum Host herzustellen.
Sie sollten eine ähnliche Nachricht erhalten
Sobald Sie
y
die Frage beantwortet und erfolgreich eine Verbindung zum Remote-Host hergestellt haben, sollten Sie fertig sein. Fahren Sie fort und versuchen Sie es erneut.quelle
"$GIT_SSH" -P 7999 [email protected]
Nur auf den Host zuzugreifen, reicht zumindest unter Windows nicht aus. Das fügt den Host-Schlüssel hinzu,
ssh/known_hosts
aber der Fehler bleibt bestehen.Sie müssen das Git-Bash-Fenster schließen und ein neues öffnen. Dann wird der Registrierungscache geleert und das Push / Pull funktioniert dann.
quelle
ssh/known_hosts
ist relativ zu was?,% USERPROFILE% Ich habe dieses Problem unter Win 7 und keine Lösung ...Rene, deine
HOME
Variable ist nicht richtig eingestellt. Entweder ändern Sie es zuc:\Users\(your-username)
oder nur zu%USERNAME%
.quelle
Lösung mit Plink
Speichern Sie dieses Python-Skript unter
known_hosts.py
:Getestet unter Win7x64 und Python 2.7 .
Dann renne:
Und wählen Sie den Import in die Registrierung. Der Keyscan ruft den öffentlichen Schlüssel für die Domain ab (ich hatte Probleme mit Bitbucket), und das Python-Skript konvertiert ihn dann in das Plink-Format.
quelle
Hatte das gleiche Problem und vergiss, eine Verbindung zu SSH an dem Port herzustellen , an dem sich das eigentliche Repository befindet , nicht nur der allgemeine SSH-Port, dann ist der Hostschlüssel anders!
quelle
Öffnen Sie einfach Putty und versuchen Sie, eine Verbindung zu dem Remote-Server herzustellen, auf den Sie Ihren Code übertragen möchten. Wenn der Dialog angezeigt wird, drücken Sie Ja (Sie vertrauen Remote), dann ist alles in Ordnung.
quelle
Arbeitsumfeld:
Erstens: Löschen Sie Putty bekannte_Hosts in der Registrierung gemäß dem Regedit.
Dann: Das Ausführen des Befehls
%GIT_SSH% user@hostname
in Window's cmd löst das Problem.Hoffe es hilft euch allen.
quelle
Ich hatte auch das gleiche Problem, als ich versuchte, ein Repository auf meinem Windows 7-Computer zu klonen. Ich habe die meisten der hier genannten Antworten ausprobiert. Keiner von ihnen hat für mich gearbeitet.
Was für mich funktionierte, war das Ausführen des Programms Pageant (Putty Authentication Agent). Sobald der Festzug im Hintergrund lief, konnte ich klonen, schieben und vom / zum Repository ziehen. Dies hat bei mir möglicherweise funktioniert, weil ich meinen öffentlichen Schlüssel so eingerichtet habe, dass bei jeder erstmaligen Verwendung ein Kennwort erforderlich ist und der Festzug gestartet wird.
quelle
Connection abandoned
, aber so etwas wieAccess denied (private key)
Der Wechsel von PuTTY zu OpenSSH hat dieses Problem für mich behoben, ohne dass GIT_SSH usw. deaktiviert werden musste.
quelle
Ich löste ähnliches Problem dies mit Abhilfe .
Sie müssen nur zu Embedded Git wechseln, drücken, die Ja-Taste drücken und dann wieder zu System Git wechseln.
Sie finden diese Option in
quelle
C:\Users\{UserName}\AppData\Local\SourceTree\app-2.5.5\tools\putty> .\plink.exe {YourNewHost}
Wie von Roman Starkov beantwortet ,
plink
muss der Host zu seinem Cache hinzugefügt werden.Für Benutzer von Git Extensions :
(durch die tatsächlichen Pfade ersetzen)
z.B
Hinweis : Stellen Sie sicher, dass Sie denselben Plink / Klink verwenden, den Git Extensions verwendet!
quelle
Das direkte Hinzufügen des Hosts mit Bash hat das Problem nicht behoben. Der Fehler trat dennoch auf, wenn in Git Extensions 'Alle abrufen' verwendet wurde. Durch die Verwendung von 'Pull' für einen Zweig wurde der erforderliche Host automatisch von Git Extensions mit einem Bash-Popup-Bildschirm hinzugefügt. Danach konnte ich 'Fetch All' wieder verwenden. Ich bin mir nicht sicher, was Git Extensions anders macht.
quelle
Ich habe alle oben genannten Methoden ausprobiert, aber keine davon konnte das gleiche Problem auf meinem Laptop beheben. Anstatt den Zweig in git bash auf den Ursprung zu verschieben, verwende ich die Push-Option von TortoiseGit, um das Pushing durchzuführen. Anschließend wird ein Fenster angezeigt, in dem ich aufgefordert werde, den neuen Hostschlüssel zum Cache hinzuzufügen. Nachdem ich auf die Schaltfläche "Ja" geklickt habe, ist alles möglich gut jetzt.
Hoffe es hilft euch allen.
quelle
Ich habe eine Festplatte gewechselt und Windows installiert. Beim Versuch, Dateien hochzuladen, wurde dieses Befehlsfenster empfangen.
Ich drückte "y", dann Strg + C. Geöffnet
putty.exe
, fügte einen alten Schlüssel hinzu, kehrte zu git zurück und schob Dateien.quelle
Deinstallieren Sie einfach Git Extensions und installieren Sie es erneut, indem Sie stattdessen OpenSSH wählen
quelle
In Windows 7 oder 10 hat der Trick, der bei mir funktioniert hat, das Löschen der Systemvariablen GIT_SSH. Es wurde zuvor für die Verwendung von Plink festgelegt und jetzt durch Putty ersetzt. Dies verursachte einen Plink.exe-Fehler
Es gab auch eine alte Installation von Git (32-Bit-Version) und ein Update auf Git (z. B. Git-2.20.1-64-bit.exe), da der PC ein 64-Bit-Betriebssystem war.
Auf jeden Fall wurde der Putty / Plink nicht einmal von Git verwendet, da in der Git-Installation standardmäßig Open SSH verwendet wurde.
quelle
Wenn Sie die Nachricht über den nicht erkannten Hostschlüssel erhalten, während Sie Git-Push / Pull-Operationen mit ATLASSIAN SOURCETREE ausführen, können Sie nicht mit j / n antworten, und die Push / Pull-Operation wird abgebrochen, ohne die Taste zwischenzuspeichern. Wenn Sie jedoch zu SourceTree Tools-> Optionen (Registerkarte Allgemein) gehen und den SSH-Client unter (unter SSH-Client-Konfiguration) von PuTTY in OpenSSH ändern, kann der Schlüssel zwischengespeichert werden, ohne dass etwas anderes geändert wird.
quelle