Was genau passiert, wenn Sie SSH verwenden, ohne ein Schlüsselpaar zu generieren?

Was genau passiert, wenn Sie SSH verwenden, ohne ein Schlüsselpaar zu generieren?

Das scheint viel zu einfach und ich habe das Gefühl, dass ich vielleicht etwas ganz Offensichtliches übersehen habe, aber was passiert eigentlich, wenn Sie SSH verwenden, ohne ein Schlüsselpaar zu generieren?

Eine Variante dieser Frage wurde gestelltHierund wie die Antwort hatte ich immer verstanden, dass SSH ohne das Schlüsselpaar auf die Kennwortauthentifizierung zurückgreift.

AllerdingsWikipedia-Artikelbeschreibt nur zwei Verwendungsmöglichkeiten. Beide scheinen Schlüsselpaare zu beinhalten, eines manuell generiert und eines automatisch.

Es gibt mehrere Möglichkeiten, SSH zu verwenden. Eine davon besteht darin, automatisch generierte öffentliche und private Schlüsselpaare zu verwenden, um eine Netzwerkverbindung einfach zu verschlüsseln und sich dann per Kennwortauthentifizierung anzumelden.

Eine andere Möglichkeit besteht darin, ein manuell generiertes öffentliches und privates Schlüsselpaar zur Authentifizierung zu verwenden, sodass sich Benutzer oder Programme anmelden können, ohne ein Kennwort angeben zu müssen.

Wenn ich eine SSH-Verbindung zu einem ungesicherten Server ohne Schlüsselpaar herstelle, werde ich nach meinem Benutzernamen und Passwort gefragt, dann habe ich Zugriff auf die Shell.

Ist der Passwort-Fallback ein Implementierungsdetail und daher nicht im Wiki? Wurde wie vorgeschlagen automatisch ein Schlüsselpaar generiert (wenn ja, wie gelangte der öffentliche Schlüssel auf den Server)? Oder geht es nur über das Passwort.

Wenn nur die Kombination aus Passwort und Benutzername verwendet wird, werden die Daten dann überhaupt verschlüsselt? Und wenn ja, wie werden sie verschlüsselt?

Antwort1

Der Wikipedia-Artikel verwechselt verschiedene SSHv2-Schichten. (Es könnteetwasvor einem Jahrzehnt für SSHv1 richtig, aber es ist definitiv bis zum Unsinn vereinfacht.)

SSHv2-Schlüsselpaare, sowohl Ihre als auch die des Servers, werden verwendet fürAuthentifizierungnur, und die Verschlüsselung wird immer mit temporär generierten DH-Schlüsselpaaren für jede Verbindung eingerichtet. Das SSH-Schlüsselpaar des ServersZeichenVerschlüsselungs-Setup-Daten (um die Identität des Servers zu beweisen), während das SSH-Schlüsselpaar des Clients für diesen Vorgang überhaupt nicht verwendet wird.


Wenn Sie in SSHv2 eine Verbindung zum Server herstellen (nachdem beide Seiten Listen der unterstützten Algorithmen ausgetauscht haben), ist der erste SchrittSchlüsselaustausch, das auf irgendeine Weise einen symmetrischen Schlüssel generiert, mit dem die gesamte Verbindung verschlüsselt wird. (Als Nebeneffekt dieses Vorgangs wird auch der Server authentifiziert.)

MeistensD–HoderECDHwird hierfür verwendet, das heißt:

  1. Der Client generiert ein DH-Schlüsselpaar (nur für diese Verbindung verwendet) und sendet seinen öffentlichen DH-Schlüssel.

  2. Der Server generiert außerdem ein neues DH-Schlüsselpaar. Außerdem lädt er sein SSH-Schlüsselpaar „Hostschlüssel“ von der Festplatte.

    Dann esZeichenden öffentlichen DH-Schlüssel mit dem privaten SSH-Schlüssel und sendet beide öffentlichen Schlüssel (sowie die Signatur) an den Client.

  3. Der Client prüft die Signatur und stellt sicher, dass sich der öffentliche SSH-Schlüssel des Servers in known_hosts befindet.

    Dann verwendet es beideDHSchlüssel (privat des Clients + öffentlich des Servers), um den gemeinsamen Verschlüsselungsschlüssel zu generieren, und verwirft sein DH-Schlüsselpaar.

  4. Der Server verwendet außerdem beide DH-Schlüssel (den privaten des Servers + den öffentlichen des Clients), um denselben gemeinsamen Verschlüsselungsschlüssel zu generieren, und verwirft außerdem sein DH-Schlüsselpaar.

  5. Beide Seiten ermöglichen die Verschlüsselung.

(Es gibt noch einige andere Methoden zum Schlüsselaustausch, diese werden jedoch selten verwendet.)

Der nächste Schritt istClient-AuthentifizierungBeachten Sie, dass zu diesem Zeitpunkt die Verbindung bereits verschlüsselt ist, obwohl der SSH-Schlüssel des Clients noch nicht verwendet wurde!

  1. Der Client sendet eine „Serviceanforderung“ zur Client-Authentifizierung.

  2. Der Server bietet einige Mechanismen an – „Passwort“, „Public-Key“, möglicherweise andere.

  3. Wenn Sie über ein SSH-Schlüsselpaar verfügen, wählt der Client den „öffentlichen Schlüssel“ aus, sendet Ihre öffentlichen SSH-Schlüssel und verwendet Ihren privaten SSH-Schlüssel, um einige vom Server bereitgestellte zufällige Daten zu signieren und so den Schlüsselbesitz nachzuweisen.

    Wenn Sie über kein SSH-Schlüsselpaar verfügen, wählt der Client „Passwort“ und sendet Ihr Passwort direkt – jedoch weiterhin innerhalb des verschlüsselten Tunnels.

verwandte Informationen