it-swarm.com.de

Git-Fehler: "Host-Schlüsselüberprüfung fehlgeschlagen", wenn Verbindung zum Remote-Repository hergestellt wird

Ich versuche, eine Verbindung zu einem entfernten Git-Repository herzustellen, das sich auf meinem Webserver befindet, und es auf meinem Computer zu klonen.

Ich verwende folgendes Format für meinen Befehl:

git clone ssh://[email protected]/repository.git

Das hat für die meisten meiner Teammitglieder gut funktioniert. Normalerweise fragt Git nach dem Ausführen dieses Befehls nach dem Kennwort des Benutzers und führt dann das Klonen aus. Wenn ich jedoch auf einem meiner Rechner laufe, erhalte ich folgende Fehlermeldung:

Hostschlüsselüberprüfung fehlgeschlagen 

fatal: Konnte nicht aus der Ferne gelesen werden Repository.

Wir verwenden keine SSH-Schlüssel, um eine Verbindung zu diesem Repository herzustellen. Ich bin mir also nicht sicher, warum Git auf diesem Computer nach einem Schlüssel sucht.

121
bootsz

Sie verbinden sich über das SSH-Protokoll. Bei Verwendung von SSH verfügt jeder Host über einen Schlüssel. Clients erinnern sich an den Host-Schlüssel, der einer bestimmten Adresse zugeordnet ist, und verweigern die Verbindung, wenn sich ein Host-Schlüssel zu ändern scheint. Dies verhindert, dass Menschen in der Mitte angreifen.

Der Host-Schlüssel für domain.com wurde geändert. Wenn Ihnen das nicht fies erscheint , können Sie den alten Schlüssel aus Ihrem lokalen Cache entfernen

$ ssh-keygen -R domain.com

Ich empfehle Ihnen dringend, darüber nachzudenken, ob Benutzer sich auch mit Schlüsseln authentifizieren. Auf diese Weise kann ssh-agent das Schlüsselmaterial zur Vereinfachung speichern (und nicht, dass jeder für jede Verbindung zum Server ein Kennwort eingeben muss). Kennwörter werden nicht über das Netzwerk gesendet.

76
Greg Bacon

Wie ich bereits in in Klonen geantwortet habe - Klonen git repo verursacht Fehler - Hostschlüsselüberprüfung fehlgeschlagen fatal: Das Remote-Ende hat unerwartet aufgelegt , füge den GitHub der Liste der autorisierten Hosts hinzu:

ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts

227
Tupy

Ich hatte das ähnliche Problem, aber mit SSH-Schlüsseln. Aus Tupys Antwort oben habe ich herausgefunden, dass das Problem darin besteht, dass die Datei known_hosts nicht vorhanden ist oder dass github.com nicht in der Liste der bekannten Hosts enthalten ist. Hier sind die Schritte, die ich befolgt habe, um das Problem zu lösen - 

  1. mkdir -p ~/.ssh
  2. ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts 
  3. ssh-keygen -t rsa -C "user.email" 
  4. Fügen Sie den Schlüssel id_rsa.pub zur Liste der SSH-Schlüssel in Ihrem GitHub-Profil hinzu. 
32
Saran

Dies geschieht, da sich github derzeit nicht in Ihren bekannten Hosts befindet.

Sie sollten aufgefordert werden, github zu Ihren bekannten Hosts hinzuzufügen. Wenn dies nicht der Fall ist, können Sie ssh -T [email protected] ausführen, um die Eingabeaufforderung erneut zu erhalten.

17
Powderham

Für mich musste ich nur "yes" an der Eingabeaufforderung eingeben. anstatt nur Enter zu drücken.

9
Code-Apprentice

Ich hatte das gleiche Problem auf einem neu installierten System, aber dies war ein udev-Problem. Es gab keinen /dev/tty-Knoten, also musste ich Folgendes tun:

mknod -m 666 /dev/tty c 5 0
7
Geoffroy

Wenn Sie sich im Büro-Intranet befinden (sonst gefährlich), das immer durch Firewalls geschützt ist, müssen Sie einfach die folgenden Zeilen in ~/.ssh/config eingeben

Gastgeber *
StrictHostKeyChecking-Nr 
UserKnownHostsFile =/dev/null 

5
sunil

Was für mich funktionierte, war, zuerst meinen SSH-Schlüssel des neuen Computers hinzuzufügen. Ich folgte diesen Anweisungen von GitLab - SSH-Schlüssel hinzufügen . Beachten Sie, dass ich seit Win10 alle diese Befehle in Git Bash unter Windows ausführen musste (es funktionierte nicht in der normalen DOS-Cmd-Shell).

Dann wieder in Git Bash, ich musste einen git clone des Repos machen, mit dem ich Probleme hatte, und in meinem Fall musste ich ihn unter einem anderen Namen klonen, da ich ihn bereits lokal hatte und meine Verpflichtungen nicht verlieren wollte. Zum Beispiel 

git clone ssh://[email protected]/myRepo.git myRepo2

Dann bekam ich die Aufforderung, es zur Liste der bekannten Hosts hinzuzufügen. Die Frage könnte folgende sein:

Möchten Sie die Verbindung fortsetzen (Ja/Nein)?

Ich habe "yes" eingegeben und es hat endlich funktioniert. Sie sollten normalerweise eine Nachricht erhalten, die der folgenden ähnelt:

Warnung: '[Ihr Repo-Link]' (ECDSA) wurde dauerhaft zur Liste der bekannten Hosts hinzugefügt.

Note: Wenn Sie Windows verwenden, stellen Sie sicher, dass Sie Git Bash für alle Befehle verwenden. Dies funktionierte nicht in der normalen Cmd-Shell oder Powershell. Ich musste dies wirklich in Git Bash tun. 

Zuletzt löschte ich das zweite Klon-Repo (myRepo2 im Beispiel) und ging zurück zu meinem ersten Repo, und ich konnte endlich alle Git-Sachen wie in meinem Lieblingseditor VSCode machen. 

4
ghiscoding

Wenn Sie Git für Windows verwenden.

  • Öffnen Sie die Git-GUI.
  • Öffnen Sie das lokale Git-Repository in der Git-GUI.
  • Fügen Sie die Fernbedienung hinzu oder drücken Sie Push, wenn die Fernbedienung bereits vorhanden ist.
  • Beantworten Sie die Frage, ob Sie fortfahren möchten, mit "Ja".

Der GUI-Client fügt den Schlüssel für Sie zu ~/.ssh/known_hosts hinzu. Dies ist einfacher zu merken, wenn Sie es nicht oft tun, und vermeidet die Verwendung der git-Befehlszeile (die Standard-Windows-Befehlszeilen enthalten nicht die ausführbare Datei ssh-keyscan).

2
Julian Knight

Auf die Frage:

Are you sure you want to continue connecting (yes/no)?

Geben Sie als Antwort yes ein

So habe ich mein Problem gelöst. Aber wenn Sie versuchen, nur die Eingabetaste zu drücken, wird es nicht funktionieren!

2
shutsuke

Wenn der Remote-Server eine Verbindung zum privaten Repository herstellen möchte, authentifiziert er sich über ssh. Erstellen Sie das Private-Public-Schlüsselpaar mit ssh-keygen oder wenn Sie bereits über den Public-Private-Schlüssel verfügen. Kopieren Sie den öffentlichen Schlüssel und fügen Sie ihn in die Einstellungen des privaten Repos ein.

YourPrivateRepo -> Einstellungen -> Schlüssel bereitstellen -> Bereitstellungsschlüssel hinzufügen -> Den öffentlichen Schlüssel einfügen.

Jetzt kann der Remote-Server eine Verbindung zum privaten Repository herstellen.

HINWEIS: Die Bereitstellungsschlüssel haben nur Zugriff zum Lesen des Repos. Schreibzugriff muss explizit zugelassen werden.

1
Sandy

Dies bedeutet, dass Ihr Remote-Host-Schlüssel geändert wurde.

Ihr Terminal hat vorgeschlagen, diesen Befehl als Root-Benutzer auszuführen

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]

Sie müssen diesen Hostnamen aus der Hostliste auf Ihrem PC/Server entfernen. Kopieren Sie den vorgeschlagenen Befehl und führen Sie ihn als Root-Benutzer aus.

$ Sudo su                                                        // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]    // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                           // Exist from root user

Versuchen Sie es noch einmal, hoffen Sie, dass dies funktioniert.

1
Jay Patel

Ich hatte eine ähnliche Ausgabe, leider habe ich die GitExtensions-HMI verwendet und vergessen, dass ich eine Passphrase geschrieben habe. Geben Sie kein Passwort ein, wenn Sie Ihren Schlüssel generieren!

0
Jerome Vacher

Während der Build-Zeit war der gleiche Fehler in DockerFile aufgetreten, während das Image öffentlich war. Ich habe in Dockerfile wenig geändert.

 RUN git clone  https://github.com/kacole2/express-node-mongo-skeleton.git /www/nodejs

Dies liegt daran, dass mit der Syntax [email protected]: ... am Ende SSH zum Klonen verwendet wird und Ihr privater Schlüssel im Container nicht verfügbar ist. Verwenden Sie stattdessen RUN git clone> https://github.com/edenhill/librdkafka.git .

0
Adiii

Sie können Ihre "git url" im "https" URL-Format in der Jenkins-Datei oder an jedem beliebigen Ort verwenden.

git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'

0
Nitin