SSH: Die Authentizität von Host <Host> kann nicht festgestellt werden

83

Was bedeutet diese Nachricht? Ist das ein potentielles Problem? Ist der Kanal nicht sicher?

Oder ist dies einfach eine Standardnachricht, die immer angezeigt wird, wenn eine Verbindung zu einem neuen Server hergestellt wird?

Ich bin es gewohnt, diese Meldung bei der Verwendung von SSH in der Vergangenheit zu sehen: Ich habe mein Login immer wie gewohnt mit einem Passwort eingegeben, und es hat mir gut getan, weil ich keine privaten / öffentlichen Schlüssel verwendet habe (was viel sicherer ist) als ein kurzes Passwort). Aber dieses Mal habe ich mit ssh einen öffentlichen Schlüssel für meine Verbindung zu bitbucket eingerichtet, aber ich habe immer noch die Nachricht erhalten. Mir ist bekannt, dass die Passwortabfrage am Ende eine andere, zusätzliche Sicherheitsmaßnahme für die Entschlüsselung des privaten Schlüssels darstellt.

Ich hoffe, jemand kann eine nette Erklärung für die Bedeutung dieser Meldung "Authentizität kann nicht hergestellt werden" geben.

The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.

RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'bitbucket.org,207.223.240.181' (RSA) to the list of
known hosts.
Enter passphrase for key '/c/Users/Steven/.ssh/id_rsa':
Steven Lu
quelle
2
Dies ist wirklich eine dieser Nachrichten "bedeutet genau das, was es sagt". Es bedeutet, sshhat keine Möglichkeit zu sagen, dass Sie wirklich sprechen bitbucket.org. Wenn Sie es so konfiguriert haben, dass es es weiß, funktioniert es nicht. Wenn nicht, dann sagt es dir, dass du es nicht getan hast.
David Schwartz

Antworten:

71

Es sagt Ihnen, dass Sie noch nie eine Verbindung zu diesem Server hergestellt haben. Wenn Sie das erwartet haben, ist es völlig normal. Wenn Sie paranoid sind, überprüfen Sie die Prüfsumme / den Fingerabdruck des Schlüssels mithilfe eines alternativen Kanals. (Beachten Sie jedoch, dass jemand, der Ihre ssh-Verbindung umleiten kann, auch eine Webbrowsersitzung umleiten kann.)

Wenn Sie vor der Installation von ssh eine Verbindung zu diesem Server hergestellt haben, wurde der Server entweder mit einem neuen Schlüssel neu konfiguriert oder die Identität des Servers wurde gefälscht. Aufgrund der Schwere eines Man-in-the-Middle-Angriffs warnt es Sie vor der Möglichkeit.

In jedem Fall haben Sie einen sicheren, verschlüsselten Kanal für jemanden . Niemand ohne den privaten Schlüssel, der dem Fingerabdruck entspricht, 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40kann entschlüsseln, was Sie senden.

Der Schlüssel, mit dem Sie sich authentifizieren, hat nichts mit Ihnen zu tun. Sie möchten keine Authentifizierungsinformationen an einen betrügerischen Server senden, der sie möglicherweise stiehlt. Sie sollten daher keine Änderungen erwarten, je nachdem, ob Sie eine Passphrase oder eine verwenden Privater Schlüssel zum Einloggen. Sie sind dabei einfach noch nicht so weit gekommen.

Ben Voigt
quelle
Also, selbst wenn es einen böswilligen Dritten gibt und ich die Nachricht ablehne, sende ich ihm nur meinen öffentlichen Schlüssel und er wird immer noch nicht in der Lage sein, meine Daten zu entschlüsseln? Daher können meine Daten nur dann kompromittiert werden, wenn (1) mein privater Schlüssel oder (2) die Server von Bitbucket oder (3) mein Bitbucket-Konto kompromittiert sind. Solange sie Anmeldeversuche einschränken (was mich wirklich wundern würde, wenn sie dies nicht tun), gibt es an dieser Stelle wirklich nicht so viele Gründe, paranoid zu sein, oder?
Steven Lu
10
@Steven: Du schickst ihm nicht deinen öffentlichen Schlüssel, das hat er schon. Was Sie tun, ist, Ihren privaten Schlüssel zu verwenden, um eine Herausforderung zu authentifizieren ... wenn er sich mit dem echten bitbucket.org verbindet, der behauptet, Sie zu sein, die echte Herausforderung erhalten und diese Herausforderung verwendet hat, als er Sie herausforderte, könnte er Sie zum Narren halten Senden Sie ihm eine gültige Antwort, die er dann verwendet, um Zugriff auf Ihr Konto auf der echten Website bitbucket.org zu erhalten. Er hat immer noch keinen privaten Schlüssel, kann sich also zu keinem späteren Zeitpunkt anmelden oder bei einer anderen Ressource, die der Schlüssel entsperrt, aber er hat eine Anmeldesitzung.
Ben Voigt
Das habe ich in meiner Antwort gemeint, als ich sagte "Sie möchten keine Authentifizierungsinformationen an einen betrügerischen Server senden".
Ben Voigt
2
"Wenn Sie paranoid sind, überprüfen Sie die Prüfsumme / den Fingerabdruck des Schlüssels mithilfe eines alternativen Kanals." Für den Paranoiden (und für die Aufzeichnung) ist der Fingerabdruck von Github auf help.github.com/articles/generating-ssh-keys und bitbucket's in confluence.atlassian.com/display/BITBUCKET/…
sundar
1
@BenVoigt Ja, ich verstehe, dass die wirklich Paranoiden natürlich über ein anderes, nicht verwandtes Netzwerk auf diese Seiten gelangen oder vielleicht zum Github-Hauptquartier fliegen und den Fingerabdruck persönlich abrufen würden :)
Sonntag,
21

Angenommen, Sie treffen jemanden, um ein paar Geschäftsgeheimnisse auszutauschen. Ihr Berater teilt Ihnen mit, dass Sie diese Person noch nie zuvor getroffen haben und dass dies ein Betrüger sein kann. Außerdem wird Ihr Berater Sie für die nächsten Treffen mit ihm nicht mehr warnen. Das ist es, was die Botschaft bedeutet. Die Person ist der Remote-Server, und Ihr Berater ist der SSH-Client.

Ich halte es nicht für paranoid, die Identität der Person zu überprüfen, bevor man ihr Geheimnisse mitteilt. Zum Beispiel könnten Sie eine Webseite mit einem Bild von ihr öffnen und es mit dem Gesicht vor Ihnen vergleichen. Oder überprüfen Sie ihren Personalausweis.

Für den Bitbucket-Server könnten Sie einen anderen, vertrauenswürdigeren Computer verwenden und sich ein Bild von dessen Gesicht machen und es dann mit dem vergleichen, das Sie auf dem Computer erhalten, den Sie gerade verwenden. Verwenden:

 ssh-keyscan -t rsa bitbucket.org | ssh-keygen -lv -f -

Wenn die Gesichter übereinstimmen, können Sie den Schlüssel zur Datei hinzufügen, z. B. ~/.ssh/known_hosts(Standardspeicherort in vielen Linux-Distributionen) mit:

ssh-keyscan -t rsa -H bitbucket.org >> ~/.ssh/known_hosts

und der ssh client wird dich nicht warnen, da er ihr gesicht bereits kennt . Es werden die Gesichter jedes Mal verglichen, wenn Sie eine Verbindung herstellen. Das ist sehr wichtig. Im Falle eines Betrügers (z. B. eines Man-in-the-Middle-Angriffs) lehnt der ssh-Client die Verbindung ab, da sich das Gesicht geändert hat.

Ivan Ogai
quelle
Diese Antwort ist sehr hilfreich
010110110101
4
Dies sollte die akzeptierte Antwort sein: ssh-keyscan -t rsa -H bitbucket.org >> ~/.ssh/known_hosts Danke Ivan!
Rod
1
@Rod: Sie würden die akzeptierte Antwort auf der Grundlage eines Befehls auswählen, der völlig unnötig ist (Sie können ihn ändern, known_hostsindem Sie nur "Ja" zur ursprünglichen Warnung eingeben, wie in der Frage bereits gezeigt) und gefährlich (der Schlüssel, den Sie hinzugefügt haben) Datei ist nicht unbedingt dieselbe, die Sie sich angesehen haben, weil Sie sie zweimal abgerufen haben!)?
Ben Voigt
@BenVoigt, was diese Lösung bietet, ist, dass die Eingabe von "Ja" nicht bedeutet, dass diese Lösung vollständig skriptfähig ist. Ich gehe davon aus, dass die meisten Leute herausfinden können, wie sie auf das "(ja / nein)" reagieren sollen. Prompt. Ich bin auf diese Fragen und Antworten gestoßen, als ich versuchte, herauszufinden, wie ich dieses Problem ohne menschliches Eingreifen lösen kann (für ein Server-Setup-Skript). In meiner Erregung, denke ich, habe ich nicht bemerkt, dass die Frage des OP etwas anders ist als meine, aber IMO ist dies immer noch die nützlichste / nicht offensichtlichste Antwort im Thread.
Rod
1
@ Rod: Nein, es ist nicht nützlich. Das Verringern Ihrer Sicherheit ist schlecht. Schneller nach Möglichkeiten zu suchen, um Ihre Sicherheit zu senken, ist genau das Gegenteil von nützlich.
Ben Voigt
5

Ich musste einfach die known_hostsTextdatei in erstellen~/.ssh

sudo vim ~/.ssh/known_hosts
sudo chmod 777 ~/.ssh/known_hosts

Danach fügte es den Host hinzu und ich sah die Nachricht nie wieder.

Brian
quelle
Ich denke nicht, dass das wirklich etwas ändert. Die Warnung wird angezeigt, wenn sich der Server selbst geändert hat. Zum Beispiel, wenn Sie eine neue virtuelle Maschine bereitstellen, zu der Sie zum ersten Mal eine Verbindung herstellen. Unabhängig davon , ob Sie eine haben known_hostsDatei (mit den richtigen Berechtigungen) nicht Sie über die Echtheit des neuen Servers nicht aufhören zu fragen ... Es sei denn , man irgendwie schon haben holte den Pub Tonartvorzeichnung für diesen Server und legen Sie sie in Ihrem known_hosts, Dies ist der normale Weg, um den Scheck zu überspringen (obwohl es oft schneller ist, nur "Ja" zum Scheck zu sagen, um dasselbe zu erreichen)
Steven Lu
Vielen Dank. Ich hatte bekannte_Hosts, bekam aber immer wieder die Warnung. Ich musste nur die Berechtigungen für known_hosts ändern, damit die Warnungen beendet wurden.
ArcaneDominion
6
Bitte tu das nicht. Kann ein ernstes Sicherheitsrisiko darstellen. Ihre Host-Datei sollte nur von Ihnen beschreibbar sein. Der zweite Befehl erlaubt im Grunde jedem in Ihrem Computer, Serveridentitäten zu fälschen.
Stolz
Msgstr "Die Warnung wird angezeigt, wenn sich der Server selbst geändert hat." Oder wenn der Server noch nie besucht wurde.
Rod
2

Es gibt eine andere einfache Möglichkeit. Berühre einfach eine "config" -Datei unter /root/.ssh und füge den Parameter StrictHostKeyChecking hinzu. zur Echtheitsbestätigung

Usman
quelle
3
Dies wird nicht empfohlen. Es ist einfach, aber nicht richtig, mit der Situation umzugehen.
Vikas
1

Bei dieser Nachricht handelt es sich lediglich um eine SSH-Nachricht, die Ihnen mitteilt, dass dieser bestimmte Hostschlüssel noch nie zuvor gesehen wurde. Sie kann also nicht wirklich überprüfen, ob Sie eine Verbindung zu dem Host herstellen, den Sie für richtig halten. Wenn Sie "Ja" sagen, wird der SSH-Schlüssel in die Datei "known_hosts" eingefügt. Bei nachfolgenden Verbindungen wird der vom Host erhaltene Schlüssel mit dem in der Datei "known_hosts" verglichen.

In einem verwandten Artikel zum Stapelüberlauf wurde erläutert, wie diese Warnung deaktiviert werden kann: https://stackoverflow.com/questions/3663895/ssh-the-authenticity-of-host-hostname-cant-be-stablished .

Mike
quelle
10
Das Deaktivieren der Warnung wird jedoch nicht empfohlen. Sie dient einem bestimmten Zweck und enthält sehr nützliche Sicherheitsinformationen.
Rory Alsop
0

Abgesehen von den bereits gegebenen Antworten (Sie haben noch nie eine Verbindung zu diesem Host hergestellt), besteht auch die Möglichkeit, dass Sie noch nie eine Verbindung zum aktuellen Host (zu diesem Host) hergestellt haben. das ist nur psychologisch anders; Sie denken, Sie verbinden sich von Host A (nach B), während Sie wirklich versuchen, eine Verbindung von Host X (nach B) herzustellen. Dies kann zum Beispiel passieren, wenn Sie zuerst von A nach X und dann vom selben Terminal aus versuchen, nach B zu ssh, weil Sie denken, dass Sie immer noch auf A sind.

Carlo Wood
quelle
Ich frage mich , ob SSH - Agent Forwarding kann auch die Warnung unterdrücken , wenn Host A über B weiß aber X nicht, aber der Agent - Forwarding erfolgt zwischen A und X. Die meisten Umgebungen (die bieten ssh) und Terminal - Anwendungen Forwarding Support - Mitarbeiter, es hilft Reduzieren Sie die Anzahl der SSH-Schlüssel, die Sie nur für Ihre Endgeräte verwalten müssen.
Steven Lu
0

In meinem Fall funktionierte die Anmeldung ohne Kennwort aufgrund meiner Berechtigungen für das Basisverzeichnis nicht, da ich die Standardeinstellungen geändert habe. Schließlich ist hier, was für mich gearbeitet hat. Meine Home-Verzeichnis-Berechtigungen sind

/ home / benutzername

drwxr----x. 18 username     groupname  4096 May 11 11:52 username

/home/username/.ssh

268823097 drwx------   2 username groupname     29 May 11 11:53 .ssh

/home/username/.ssh/authorized_keys

-rw-r----- 1 username groupname 402 May 11 11:53 authorized_keys
Mian Asbat Ahmad
quelle