Secure Shell-Sitzungen unterstützen zwei Arten der Serverauthentifizierung: öffentliche Schlüssel und Zertifikate (eine Sonderform der Authentifizierung über öffentliche Schlüssel).
Wenn zum Nachweis der Hostidentität die Authentifizierung mit öffentlichem Schlüssel verwendet wird, gilt folgender Ablauf:
Der Secure Shell-Client stellt eine Verbindung her.
Der Server sendet seinen öffentlichen Schlüssel an den Client.
Der Client sucht nach diesem Schlüssel im Schlüsselspeicher des registrierten Hosts.
Situation |
Ergebnis |
---|---|
Der Client findet den Hostschlüssel, und seine Kopie stimmt mit dem vom Server gesendeten Schlüssel überein. |
Der Authentifizierungsvorgang wird fortgeführt. |
Der Client findet den Hostschlüssel nicht. |
Der Client gibt einen Fingerabdruck des Hostschlüssels und eine Meldung darüber aus, dass der Host unbekannt ist. Sofern die Clientkonfiguration ein Akzeptieren unbekannter Schlüssel durch den Benutzer zulässt (Standardeinstellung), kann der Benutzer den Schlüssel verwenden, und der Authentifizierungsvorgang wird fortgesetzt. Wenn aber festgelegt ist, dass die Prüfung des Hostschlüssels zu erzwingen ist, beendet der Client die Verbindung. |
Der Client findet den Hostschlüssel, und seine Kopie stimmt nicht mit dem vom Server gesendeten Schlüssel überein. |
Der Client gibt eine Warnung darüber aus, dass der Schlüssel nicht zu dem vorhandenen Schlüssel passt und zeigt den vom Server gesendeten Fingerabdruck an. Sofern die Clientkonfiguration ein Akzeptieren unbekannter Schlüssel durch den Benutzer zulässt (Standardeinstellung), kann der Benutzer den neuen Schlüssel verwenden. Wenn aber festgelegt ist, dass die Prüfung des Hostschlüssels zu erzwingen ist, beendet der Client die Verbindung. |
Um zu überprüfen, ob der Server wirklich über den privaten Schlüssel verfügt, der mit dem empfangenen öffentlichen Schlüssel übereinstimmt, sendet der Client eine Challenge-Nachricht an den Server und berechnet auf der Grundlage dieses Meldungstexts einen Hashwert.
Der Server erstellt mit dieser Challenge-Nachricht eine digitale Signatur. Dafür berechnet der Server den Nachrichtenhash und verschlüsselt diesen Hashwert mit seinem privaten Schlüssel. Der Server verknüpft diese digitale Signatur mit der ursprünglichen Challenge-Nachricht und schickt die signierte Nachricht zurück an den Client.
Der Client entschlüsselt die Signatur mithilfe seines privaten Schlüssels und vergleicht den Hashwert mit dem, den er selbst errechnet hat. Wenn die Werte übereinstimmen, war die Authentifizierung erfolgreich.