Git sagt "Warnung: Wird dauerhaft zur Liste der bekannten Hosts hinzugefügt"


192

Jedes Mal, wenn ich git verwende, um mit einer Fernbedienung zu interagieren, z. B. beim Ziehen oder Drücken, wird die folgende Meldung angezeigt:

Warnung: Der Liste der bekannten Hosts wurde dauerhaft '...' (RSA) hinzugefügt.

Wie kann ich verhindern, dass diese nervige Meldung angezeigt wird? Es ist nur ein Ärger - alles funktioniert richtig.


1
Meinst du wirklich jedes Mal? Gibt es Ihnen eine Eingabeaufforderung des Formulars The authenticity of host '...' can't be established. RSA key fingerprint is .... Are you sure you want to continue connecting (yes/no)?oder haben Sie das unterdrückt? Wenn ja, ist es jedes Mal der gleiche Fingerabdruck? Wenn nicht, ist das wirklich beängstigend . Die weniger beängstigende Option wäre, dass es irgendwie nicht gelingt, in die Hosts-Datei zu schreiben, sodass es jedes Mal erneut versucht wird. Schau mal rein ~/.ssh/known_hosts?
Cascabel

1
Ja. <i> Jedes </ i> Mal. Ich sehe jedoch nicht die Meldung "Sind Sie sicher ..." - vielleicht habe ich sie unterdrückt.
Donald Taylor

Ist der Host in aufgeführt ~/.ssh/known_hosts? (Ist es 5000 mal aufgeführt?) Existiert ~/.ssh/config/ enthält es etwas (insbesondere einen Wert für StrictHostKeyChecking)?
Cascabel

Der Host wird einmal in dieser Datei aufgeführt und ist der einzige Eintrag.
Donald Taylor

2
Ich vermute, der Inhalt Ihrer known_hostsDatei ist schlecht. Es sollte der Host-Schlüssel in einer schrecklich langen Zeile sein. Wenn Sie dort nur den Hostnamen haben (zum Beispiel), funktioniert dies nicht. Ich empfehle, dass Sie diese Datei entfernen (wenn sie tatsächlich nur die Informationen für diesen einzelnen Host enthält) und SSH erlauben, sie beim nächsten Herstellen einer Verbindung zu erstellen. Danach sollte es still sein.
Tripleee

Antworten:


240

Lösung: Erstellen Sie eine ~/.ssh/configDatei und fügen Sie die Zeile ein:

UserKnownHostsFile ~/.ssh/known_hosts

Beim nächsten Zugriff auf Github wird die Nachricht angezeigt. Danach wird sie nicht mehr angezeigt, da der Host zur known_hostsDatei hinzugefügt wird. Dies behebt das Problem, anstatt nur die Protokollnachricht auszublenden.

Dieses Problem nervte mich schon seit einiger Zeit. Das Problem tritt auf, weil der für Windows kompilierte OpenSSH-Client die Datei unknown_hosts nicht eincheckt~/.ssh/known_hosts

ssh -vvvvvvvvvvvvvvvvvvv git@github.com

debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.

9
Ja, ich halte das Unterdrücken von Warnungen oder Fehlern nicht für eine angemessene Lösung eines Problems. ;)
Jeremiah Gowdy

1
Vor kurzem hatte ich das gleiche Problem auf meinem Ubuntu-Computer. Es begann sich so zu verhalten, nachdem ich einen anderen (als meinen Standardschlüssel ~/.ssh/id_rsa) Schlüssel verwendet hatte, um eine Verbindung zu einem Server herzustellen. Wie @JeremiahGowdy erwähnte, habe ich debug3: load_hostkeys: loading entries for host "172.16.3.101" from file "/dev/null". Warum wird SSH nach /dev/nulldem Ändern des Schlüssels als bekannte_Hosts verwendet?
m-ric

6
Funktioniert super! Schließlich hörte die dumme Warnung auf. Btw auf Windows, das ~in ~/.ssh/configist der Stammordner des Benutzers. Um es einfach zu öffnen, drücken Sie Win-R und geben Sie die cmd Eingabetaste ein . Die Eingabeaufforderung sollte bereits in Ihrem Home-Ordner geöffnet sein. Geben Sie cd .ssh Enter und dann start . Geben Sie den Ordner in Windows Explorer zu öffnen. Anschließend können Sie die Konfigurationsdatei im Editor erstellen ( beim Speichern keine TXT- Erweiterung). (Pro-Benutzer können direkt an der Eingabeaufforderung selbst eine neue Datei anzeigen. ;)) Führen Sie einen Git-Befehl mit Remote zweimal aus (wie git fetch), und Sie sind fertig.
ADTC

1
warum hast du 20 v's für ssh?
Bubakazouba

3
@bubakazouba Je mehr vs, desto ausführlicher das Protokoll wird, überprüfen Sie die Dokumente darauf. Drei würden ausreichen, zwanzig sind ein Overkill: D
Petr Mánek

90

Fügen Sie Ihrer ssh-Konfigurationsdatei ($ HOME / .ssh / config) die folgende Zeile hinzu:

LogLevel=quiet

Wenn Sie ssh über die Befehlszeile ausführen, fügen Sie der Befehlszeichenfolge die folgende Option hinzu:

-o LogLevel=quiet

Im Folgenden wird beispielsweise die auf machine.example.org installierte gcc-Version ausgedruckt (und keine Warnung):

ssh -o UserKnownHostsFile=/dev/null \
    -o StrictHostKeyChecking=no \
    -o LogLevel=quiet \
    -i identity_file \
    machine.example.org \
    gcc -dumpversion

1
Das Hinzufügen von "LogLevel = quiet" zur "config" -Datei hat funktioniert. Danke dir.
Donald Taylor

3
Um die Sicherheit zu gewährleisten, sollten Sie "LogLevel = quiet" in einen Abschnitt "Host" einfügen.
Joe

39
LogLevel=quietist eine schlechte Idee, er möchte, dass alle Fehler angezeigt werden, er möchte nur diesen spezifischen abscheulichen Fehler vermeiden. Wahrscheinlich, weil er ssh ausgetrickst hat, um es /dev/nullals known_hostsDatei zu verwenden, wahrscheinlich weil er die known_hostsÜberprüfung von Fingerabdrücken deaktivieren wollte, dies aber nicht konnte, weil ssh-Overlords es ihm nicht erlaubten.
Elazar Leibovich

@bukzor loglevel=errorzeigt immer noch "Verbindung zu <Server> geschlossen" an, wenn die Verbindung beendet wird, was auch für die Skripterstellung sehr ärgerlich ist.
Guss

Ich habe dies abgelehnt, da es das Problem nicht wirklich löst. Es verbirgt es einfach.
Alaboudi

60

In LogLevelder Datei auf ERROR(nicht QUIET) setzen ~/.ssh/config, um folgende Fehler zu vermeiden:

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile /dev/null
   LogLevel ERROR

2
Dies funktionierte am besten in meinem Fall - oder Sie können "-oLogLevel = ERROR" in der Befehlszeile angeben
Brad

5

Diese Nachricht stammt von SSH und warnt Sie, dass Sie eine Verbindung zu einem Host herstellen, mit dem Sie noch nie zuvor eine Verbindung hergestellt haben. Ich würde nicht empfehlen, es auszuschalten, da dies bedeuten würde, dass Sie möglicherweise eine Warnung über eine Änderung des Hostschlüssels verpassen, die auf einen MITM-Angriff auf Ihre SSH-Sitzung hinweisen kann.


1
Aber ich verbinde mich jeden Tag 10-15 Mal damit und erhalte trotzdem diese Warnung.
Donald Taylor

@ JackB. Schauen ~/.ssh/known_hostsSie nach, ob Ihr Gastgeber dort drin ist.
Borealid

Ändert sich der Schlüssel aus irgendeinem Grund? Überprüfen Sie den Fingerabdruck in der Datei mit dem von ssh ausgegebenen Fingerabdruck. Ist der Modus Ihres .ssh-Verzeichnisses auf 0700 eingestellt?
Jason Carreiro

2
@JasonCarreiro, ich bin ein großer Junge, ich weiß, dass niemand MITM-Angriffe in meinem Rack ausführen wird, Sicherheit ist ein Kompromiss, und ich möchte, dass neue Computer mit vorinstalliertem Schlüssel sofort funktionieren, ohne dass eine Zertifizierungsstelle oder ein CA verwaltet werden muss ssh-keyscan.
Elazar Leibovich

4

Um Warnmeldungen für sshSie zu unterdrücken , können Sie die folgenden Zeilen hinzufügen ~/.ssh/config:

Host *
LogLevel error

Dadurch werden Warnungen deaktiviert, jedoch keine Fehlermeldungen. Wie bei den anderen Einstellungen in ~/.ssh/configkönnen Sie die Einstellungen für LogLeveljeden Host einzeln konfigurieren, wenn Sie eine feinere Steuerung wünschen.


2

Dies bedeutet hauptsächlich, dass der Schlüssel für diesen Host geändert ~/.ssh/known_hostswurde und nicht automatisch aktualisiert wird. Daher jedes Mal, wenn Sie diese Warnmeldung erhalten.

Dies geschieht häufig beim Herstellen einer Verbindung zu den neu erstellten virtuellen Maschinen, wodurch der Schlüssel mit derselben IP-Adresse geändert wird

Lösung

Wenn Sie nur einen Eintrag haben, können Sie die ~/.ssh/known_hostsDatei löschen und nach der ersten Verbindung, dass der Schlüssel vorhanden ist, und danach keine Warnmeldungen mehr.

Wenn Sie mehrere Einträge haben, können Sie den folgenden Befehl verwenden, um sie zu entfernen

$ ssh-keygen -R <hostname>

Es funktioniert gut für mich


0

Wenn Sie ein Repository von GitHub verwenden, sollten Sie stattdessen die HTTPS- Version der URL verwenden, um dieses Problem vollständig zu umgehen:

Klicken Sie auf die Schaltfläche HTTP und klonen Sie stattdessen diese URL

Wenn Sie Ihr Repository aus der Windows GitHub-Anwendung heraus klonen, wird dies für die Remote-URL verwendet. Vielleicht wissen sie etwas, was wir nicht wissen.


Hinweis: Wenn Sie die Authentifizierung mit privatem Schlüssel verwenden, können Sie kein HTTP (S) verwenden.
qwertzguy

0

Ich habe die gleiche Frage und habe festgestellt, dass sich keine .sshDatei in meiner befindet ~. Also erstelle ich einfach das .sshVerzeichnis unter ~Pfad und das Problem ist behoben.



0

SSH-Schlüssel hinzufügen

ssh-keygen -t rsa -b 4096 -C "abc@abc.com"

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/bitbucket_rsa

Kisten-Konfigurationsdatei

crate ~/.ssh/config

unter der Zeile hinzufügen.

UserKnownHostsFile ~/.ssh/known_hosts

Fügen Sie dann den Pub-Schlüssel hinzu und klonen Sie Ihr Repository ... Fertig .....


0

Ich hatte den gleichen Fehler in Linux / Cent OS VM und es war, weil sich die IP nach dem Neustart änderte. Um dieses Problem zu umgehen, habe ich eine statische IP im Netzwerk definiert und diesen Eintrag zur Datei / etc / hosts hinzugefügt. Geben Sie für statische IP einen etwas höheren Bereichswert an. Wenn Ihre aktuelle IP-Adresse (ipconfig / ifconfig) beispielsweise 192.168.0.102 lautet, kann dies beim nächsten Neustart 192.168.0.103 sein. Definieren Sie Ihre statische IP in den IPV4-Einstellungen als 192.168.0.181, was den Trick machen sollte.


Versuchen Sie, die Schlüsselwörter hervorzuheben, und geben Sie das Format an, mit dem Sie Ihre Antwort für andere erreichen können
Agilanbu,

0

In meinem Fall lag es daran, dass der Administrator, der den Server eingerichtet hat, diese Optionen aktiviert hat ~/.ssh/config

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

Was in den meisten Fällen gut funktionierte, wenn die ~/.ssh/known_hostsDatei nicht verwendet wurde . Aber für das Enterprise Gitlab Repo gab es jedes Mal die Meldung "Warnung: Permanent hinzugefügt ... zur Liste der bekannten Hosts".

Meine Lösung bestand darin, die UserKnownHostsFile /dev/nullZeile zu kommentieren , die die Erstellung von ermöglichte ~/.ssh/known_hosts. Danach gab es keine Warnungen mehr.

Möglicherweise haben Sie auch alte / ungültige Einträge in Ihrem known_hosts.

# find entry in ~/.ssh/known_hosts
ssh-keygen -F <hostname>

# delete entry in ~/.ssh/known_hosts
ssh-keygen -R <hostname>

-1

Ich nehme meine Lösung wegen anhaltender Abstimmungen ab.
Es war die beste Lösung, ohne den Quellcode des SSH-Clients selbst zu hacken.
Wenn jemand interessiert ist, überprüfen Sie den Bearbeitungsverlauf.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.