Ich versuche, eine Verbindung zu einem Remote-Git-Repository herzustellen, das sich auf meinem Webserver befindet, und es auf meinen Computer zu klonen.
Ich verwende das folgende Format für meinen Befehl:
git clone ssh://[email protected]/repository.git
Dies hat für die meisten meiner Teammitglieder gut funktioniert. Normalerweise fordert Git nach dem Ausführen dieses Befehls zur Eingabe des Benutzerpassworts auf und führt dann das Klonen aus. Wenn ich jedoch auf einem meiner Computer laufe, wird folgende Fehlermeldung angezeigt:
Überprüfung des Hostschlüssels fehlgeschlagen.
fatal: Konnte nicht aus dem Remote-Repository lesen.
Wir verwenden keine SSH-Schlüssel, um eine Verbindung zu diesem Repository herzustellen. Daher bin ich mir nicht sicher, warum Git auf diesem bestimmten Computer nach einem sucht.
ssh://
Antworten:
Sie stellen eine Verbindung über das SSH-Protokoll her, wie durch das
ssh://
Präfix auf Ihrer Klon-URL angegeben. Bei Verwendung von SSH hat jeder Host einen Schlüssel. Clients merken sich den einer bestimmten Adresse zugeordneten Hostschlüssel und lehnen die Verbindung ab, wenn sich ein Hostschlüssel zu ändern scheint. Dies verhindert, dass der Mensch in der Mitte angreift.Der Hostschlüssel für domain.com hat sich geändert. Wenn Ihnen dies nicht
${HOME}/.ssh/known_hosts
faul erscheint , entfernen Sie den alten Schlüssel aus Ihrem lokalen Cache, indem Sie ihn bearbeiten , um die Zeile für domain.com zu entfernen, oder ein SSH-Dienstprogramm dies für Sie tun lassenNotieren Sie von hier aus den aktualisierten Schlüssel, indem Sie ihn selbst ausführen
oder äquivalent, lassen Sie
ssh
es für Sie tun nächste Verbindung mitgit fetch
,git pull
odergit push
(oder sogar ein einfaches olssh domain.com
) durch die Beantwortung ja , wenn Sie dazu aufgefordertDer Grund für diese Eingabeaufforderung ist, dass sich domain.com
known_hosts
nach dem Löschen nicht mehr in Ihrem befindet und vermutlich nicht mehr im System. Sie/etc/ssh/ssh_known_hosts
können alsossh
nicht feststellen, ob der Host am anderen Ende der Verbindung wirklich domain.com ist. (Wenn der falsche Schlüssel eingegeben wird/etc
, muss jemand mit Administratorrechten die systemweite Datei aktualisieren.)Ich empfehle Ihnen dringend, die Authentifizierung von Benutzern auch mit Schlüsseln in Betracht zu ziehen. Auf diese Weise
ssh-agent
können wichtige Informationen bequem gespeichert werden (anstatt dass jeder sein Kennwort für jede Verbindung zum Server eingeben muss), und Kennwörter werden nicht über das Netzwerk übertragen.quelle
sudo ssh-keygen -R domain.com
kann Ihre vorhandeneknown_hosts
Datei umbenennenknown_hosts.old
und eine Kopie erstellen , die nur von root gelesen werden kann . (-rw------- root root
) Sie können dies problemloschown
an den entsprechenden Benutzer zurückgeben, aber Sie könnten auch einen Nachmittag damit verschwenden, zu debuggen, warum Git kaputt ist. : DAre you sure you want to continue connecting (yes/no)?
. Mach nicht den gleichen Fehler wie ich. Sie müssen eingebenyes
.Wie ich zuvor in Cloning git repo geantwortet habe, verursacht dies einen Fehler - Die Überprüfung des Hostschlüssels ist fehlgeschlagen. fatal: Das Remote-Ende hat unerwartet aufgelegt. Fügen Sie den GitHub zur Liste der autorisierten Hosts hinzu:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
quelle
Ich hatte das ähnliche Problem, aber mit SSH-Schlüsseln. Aus der obigen Antwort von Tupy habe ich herausgefunden, dass das Problem darin besteht, dass die Datei unknown_hosts nicht vorhanden ist oder github.com nicht in der Liste der bekannten Hosts vorhanden ist. Hier sind die Schritte, die ich befolgt habe, um das Problem zu beheben:
mkdir -p ~/.ssh
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
ssh-keygen -t rsa -C "user.email"
$ cat ~/.ssh/id_rsa.pub
und kopieren Sie ihn.quelle
touch
Befehl~/.ssh
schlägt fehl, falls das Verzeichnis nicht vorhanden ist. Daher war Schritt 1 weiterhin erforderlich. Außerdem müssen Sietouch
die Datei nicht verwenden, bevor Sie die>>
Umleitung verwenden. Es wird bei Bedarf erstellt (aber nur die Datei, nicht der gesamte Pfad, wird also nochmkdir -p
benötigt). Mit dieser-p
Option funktioniert es, falls das Verzeichnis bereits vorhanden ist.ssh-keyscan
, die in den Github-Dokumenten beim Hinzufügen eines neuen SSH-Schlüssels fehlt.Dockerfile
mangelnden Erlaubnis. Das Hinzufügen des zweiten Schritts hier hat dieses Problem behoben! Vielen Dank für die großartige ArbeitDies geschieht, weil sich Github derzeit nicht in Ihren bekannten Hosts befindet.
Sie sollten aufgefordert werden, Ihren bekannten Hosts Github hinzuzufügen. Wenn dies nicht geschehen ist, können Sie
ssh -T [email protected]
die Eingabeaufforderung erneut ausführen .quelle
Für mich musste ich nur "Ja" an der Eingabeaufforderung eingeben, die fragt "Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten (Ja / Nein)?" anstatt nur die Eingabetaste zu drücken.
quelle
Ich habe das gleiche Problem auf einem neu installierten System, aber dies war ein udev-Problem. Da es keinen
/dev/tty
Knoten gab, musste ich Folgendes tun:quelle
Wenn Sie sich im Office-Intranet befinden (ansonsten gefährlich), das immer durch Firewalls geschützt ist, haben Sie einfach die folgenden Zeilen in Ihrer ~ / .ssh / config
Host *
StrictHostKeyChecking no
UserKnownHostsFile = / dev / null
quelle
Was für mich funktioniert hat, war, zuerst meinen SSH-Schlüssel des neuen Computers hinzuzufügen. Ich habe diese Anweisungen von GitLab befolgt - SSH-Schlüssel hinzufügen . . Da ich unter Win10 bin, musste ich alle diese Befehle in Git Bash unter Windows ausführen (es funktionierte nicht in der regulären DOS-Cmd-Shell).
Andererseits musste ich in Git Bash ein
git clone
Repo machen, mit dem ich Probleme hatte, und in meinem Fall musste ich es auf einen anderen Namen klonen, da ich es bereits lokal hatte und meine Commits nicht verlieren wollte. BeispielsweiseDann bekam ich die Aufforderung, es zur Liste der bekannten Hosts hinzuzufügen. Die Frage könnte folgende sein:
Ich habe "Ja" eingegeben und es hat endlich funktioniert. Normalerweise sollten Sie eine ähnliche Nachricht erhalten:
Hinweis : Wenn Sie unter Windows arbeiten, stellen Sie sicher, dass Sie Git Bash für alle Befehle verwenden. Dies funktionierte nicht in der regulären Cmd-Shell oder Powershell. Ich musste dies wirklich in Git Bash tun.
Zuletzt habe ich das zweite Klon-Repo (
myRepo2
im Beispiel) gelöscht und bin zu meinem ersten Repo zurückgekehrt, und ich konnte endlich alle Git-Sachen wie gewohnt in meinem Lieblingseditor VSCode machen.quelle
Wenn Sie Git für Windows verwenden.
Der GUI-Client fügt den Schlüssel für Sie hinzu
~/.ssh/known_hosts
. Dies ist leichter zu merken, wenn Sie es nicht oft tun, und vermeidet auch die Verwendung der Git-Befehlszeile (die Standard-Windows-Befehlszeilen enthalten keinessh-keyscan
ausführbare Datei.quelle
Wenn der Remote-Server eine Verbindung zum privaten Repo herstellen möchte, wird er über ssh authentifiziert. Erstellen Sie das privat-öffentliche Schlüsselpaar mit ssh-keygen oder wenn Sie bereits über den öffentlich-privaten Schlüssel verfügen. Kopieren Sie den öffentlichen Schlüssel und fügen Sie ihn in die Einstellungen des privaten Repos ein.
YourPrivateRepo -> Einstellungen -> Bereitstellungsschlüssel -> Bereitstellungsschlüssel hinzufügen -> Fügen Sie den öffentlichen Schlüssel ein.
Jetzt kann der Remote-Server eine Verbindung zum privaten Repo herstellen.
HINWEIS: Die Bereitstellungsschlüssel haben nur Zugriff zum Lesen des Repos. Schreibzugriff muss explizit zugelassen werden.
quelle
Dies bedeutet, dass Ihr Remote-Host-Schlüssel geändert wurde (möglicherweise eine Änderung des Host-Passworts).
Ihr Terminal hat vorgeschlagen, diesen Befehl als Root-Benutzer auszuführen
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.
Versuchen Sie es erneut. Ich hoffe, das funktioniert.
quelle
Auf die Frage:
Are you sure you want to continue connecting (yes/no)?
Typ ja als Antwort
So habe ich mein Problem gelöst. Aber wenn Sie versuchen, nur die Eingabetaste zu drücken, funktioniert es nicht!
quelle
Sie können Ihre "Git-URL" im URL-Format "https" in der Jenkins-Datei oder wo immer Sie möchten verwenden.
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
quelle
Ich hatte den gleichen Fehler in DockerFile während der Erstellungszeit, während das Image öffentlich war. Ich habe in Dockerfile wenig Änderungen vorgenommen.
quelle
Ich hatte das ähnliche Problem, leider habe ich das GitExtensions HMI verwendet und vergessen, dass ich eine Passphrase geschrieben habe. Mit HMI .... vergiss es! Geben Sie keine Passphrase ein, wenn Sie Ihren Schlüssel generieren!
quelle
Ich habe diese Nachricht erhalten, als ich versucht habe,
git clone
ein Repo zu machen, das nicht meins war. Die Lösung bestand darin, zu gabeln und dann zu klonen.quelle