PuTTY-Warnung: Der Hostschlüssel des Servers stimmt nicht mit dem überein, den PuTTY in der Registrierung zwischengespeichert hat

PuTTY-Warnung: Der Hostschlüssel des Servers stimmt nicht mit dem überein, den PuTTY in der Registrierung zwischengespeichert hat

Wenn ich PuTTY verwende, um eine Verbindung zu einem neuen Host herzustellen, erhalte ich häufig die Warnung

Der Hostschlüssel des Servers stimmt nicht mit dem überein, den PuTTY in der Registrierung zwischengespeichert hat.

nachdem ich gedrückt habe

Ja

PuTTY fügt den RSA-Schlüssel des Servers zur Registrierung von Windows 10 hinzu. Anschließend kann ich mich beim Remote-Server anmelden und die Warnung wird nicht erneut angezeigt.

Ich weiß, dass der RSA-Schlüssel paarweise vorliegt, sowohl öffentlich als auch privat. Ich versuche herauszufinden, welchen Schlüssel der Server auf meinem lokalen Computer gespeichert hat, vermutlich den öffentlichen Schlüssel des Servers.

Und wenn PuTTY die erste SSH-Verbindung zum Server herstellt, wie entscheidet der Server, welcher Schlüssel weitergeleitet wird? Angenommen, der Server hat eine Liste der öffentlichen Schlüssel. Gibt es einen generischen Schlüssel für jeden Client, der versucht, die Verbindungen herzustellen?

Und wo wird dieser generische Schlüssel auf dem Server gespeichert? unter /root/.ssh/ authorized_keys?

Antwort1

Generell sollten Sie sehr vorsichtig sein, wenn Sie

WARNUNG – MÖGLICHE SICHERHEITSVERLETZUNG!

Der Hostschlüssel des Servers stimmt nicht mit dem überein, den PuTTY in der Registrierung zwischengespeichert hat.

Es ist ein Hinweis aufMITM-Angriff.

Siehe auch PuTTY-Dokumentation fürWARNUNG – MÖGLICHE SICHERHEITSVERLETZUNG!(Was ist der Hauptteil der Nachricht, den Sie in Ihrer Frage irgendwie ausgelassen haben).

Sie erhalten diese Nachricht nie für eineneuServer. Es sei denn natürlich, der neue Server verwendet die IP-Adresse/den Hostnamen eines verworfenen Servers wieder. In diesem Fall ist es in Ordnung, die Warnung zu ignorieren.


Es ist natürlich einöffentlichSchlüssel, der von PuTTY zwischengespeichert wird. EinPrivatDer Schlüssel ist geheim und darf für niemanden zugänglich sein, außer für den Serveradministrator. Es gibt also keine Möglichkeit, SSHKlientKann es bekommen.


Der Server kann tatsächlich mehrere Schlüsselpaare für verschiedene Algorithmen haben (eins für jeden Algorithmus, wie RSA, DSA, ECDSA, ED25519). Client und Server einigen sich auf den besten zu verwendenden Algorithmus (den besten der vom Server und Client unterstützten).


Die Schlüsselpaare werden üblicherweise gespeichert /etc/ssh(unter Linux mit OpenSSH).


Allerdings deutet die Formulierung Ihrer Frage darauf hin, dass Sie das Server-/Host-Schlüsselpaar möglicherweise mit dem Schlüsselpaar verwechseln, das Sie zur Authentifizierung gegenüber dem Server verwenden.

SehenMeinArtikel überGrundlegendes zu SSH-Schlüsselpaaren.

Antwort2

Ich weiß, dass der RSA-Schlüssel paarweise vorliegt, sowohl öffentlich als auch privat. Was ich zu verstehen versuche, ist, welchen Schlüssel der Server auf meinem lokalen Computer gespeichert hat, den öffentlichen Schlüssel des Servers, schätze ich.

Ja, PuTTY speichert den Fingerabdruck des öffentlichen Schlüssels des Servers. Sie können alle gespeicherten Schlüssel in der Registrierung unter dem Schlüssel sehen:HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys

außerdem, als Putty die erste SSH-Verbindung zum Server hergestellt hat, wie entscheidet der Server, welcher Schlüssel weitergeleitet wird? Angenommen, der Server hat eine Liste der öffentlichen Schlüssel. Gibt es einen generischen Schlüssel für alle Clients, die versuchen, Verbindungen herzustellen? Und wo ist dieser generische Schlüssel auf dem Server gespeichert?

Der Server verfügt nur über einen Hostschlüssel pro Schlüsseltyp (RSA, DSA usw.). Wo sie gespeichert werden, hängt von der Konfiguration ab, aber auf Ubuntu-Systemen werden sie beispielsweise normalerweise in/etc/ssh

Antwort3

Wenn Sie sicher sind, dass es sich nicht um einen MITM-Angriff oder eine andere Sicherheitsverletzung handelt, können Sie plinkden Schlüssel aktualisieren, z. B.

plink [email protected]

Es erscheint eine Meldung mitWARNUNG – MÖGLICHE SICHERHEITSVERLETZUNG!Nachricht und bieten die Möglichkeit, den zwischengespeicherten Schlüssel zu aktualisieren. Sie müssen nicht selbst in der Windows-Registrierung herumfummeln ...

Antwort4

Führen Sie den folgenden Befehl aus

ssh -T[email geschützt]

Es wird eine Warnmeldung ähnlich der folgenden angezeigt.Entfernen Sie den fehlerhaften Schlüssel aus der Datei known_hosts.

Warnung: Der ECDSA-Hostschlüssel für „github.com“ unterscheidet sich vom Schlüssel für die IP-Adresse „140.82.112.4“

  • Fehlerhafter Schlüssel für IP in ~/.ssh/known_hosts:11
  • Passender Hostschlüssel in ~/.ssh/known_hosts:15
  • Möchten Sie die Verbindung wirklich fortsetzen (ja/nein)

Notiz:

  • Wiederholen Sie den Vorgang, bis alle fehlerhaften Schlüssel entfernt sind.
  • Pageant (PuTTY Authentication Agent) muss möglicherweise neu gestartet werden

Siehe auch:https://github.blog/2023-03-23-wir-haben-unseren-rsa-ssh-host-key-aktualisiert/

verwandte Informationen