SSH-Authentifizierung mit Public Keys 

Um Serversysteme von entfernten Rechnern aus verwalten zu können, wurde früher auf Telnet gesetzt.

Es wurde eine Verbindung zum Zielsystem aufgebaut, wo ein Telnet-Dienst Benutzer und Passwort abfragte. Anschließend konnte der entfernte Benutzer an der Text-Konsole so arbeiten als ob er lokal angemeldet war.

Telnet birgt jedoch einen gravierenden Nachteil: alle Daten wurden unverschlüsselt übertragen, weshalb es Angreifern möglich ist, diese mitzuschneiden.

Im Jahre 1995 wurde daher SSH als Secure Shell veröffentlicht. Neben verschlüsselter Übertragung aller Daten ermöglicht SSH auch den Dateitransfer sowie die Tunnelung von weiteren Protokollen.

Außerdem werden neben Benutzername und Passwort weitere Authentifizierungsmöglichkeiten unterstützt, wobei die populärste und sicherste Methode die der „Public Key Authentifizierung“ ist.

Dieses Verfahren setzt auf die sog. Public und Private Keys nach dem RSA-Verfahren. Die technischen Details dazu finden sich in der Wikipedia am besten erläutert:

Zusammengefasst wird ein privater Schlüssel sowie ein dazu gehöriger öffentlicher Schlüssel generiert. Der private Schlüssel ist mit einer Passphrase geschützt und darf tatsächlich nicht veröffentlicht werden.

Der öffentliche Schlüssel hingegen wird auf den Servern hinterlegt.

Anstatt beim Login nun Benutzername und Passwort an den Server zu senden, was einem Angreifer auf dem Server erlaubt, das Passwort in Erfahrung zu bringen, fragt der SSH-Client die zum Private Key gehörige Passphrase ab. Ist diese korrekt, kann mit dem Private Key eine signierte Nachricht an den Server gesendet werden. Dieser kann die Korrektheit anhand des Public Key verifzieren und bei Erfolg den Login erlauben. Ein Angreifer hingegen erhält nur die einmalig gültige Signatur.

Somit erhöht das Public Key-Verfahren die Sicherheit, da neben dem Ziel-Benutzernamen auch der Private Key und die dazugehörige Passphrase in Erfahrung gebracht werden muss.

Praktische Tipps und Hinweise

Wie SSH-Keys tatsächlich generiert und verwendet werden, haben wir im gesonderten Wiki-Artikel dokumentiert: