Es gibt zahlreiche Gründe, warum eine SSH Verbindung zu einem Server aufgebaut werden muss. Sei es man möchte einen Unix Server verwalten oder man möchte die Datensicherung via rsync automatisieren. Bei der Verwaltung des Servers ist eine Passworteingabe noch möglich, wenngleich sie auch stören kann. Bei einem automatisierten Backup kommt man um eine Anmeldung ohne Passwort nicht herum.
Der folgende Test beschreibt wie man sich ohne die Eingabe eines Passwortes an einen Unix Server anmelden kann. Dabei wird der SSH Client putty verwendet, welche unter Windows das Mittel der Wahl sein sollte.
Bei einer Anmeldung via SSH wird normalerweise immer nach einem Benutzernamen und dem dazugehörigen Passwort gefragt. Damit der Log-in Prozess auch ohne die Eingabe von Benutzername / Passwort vollzogen werden kann, gibt es die Authentifizierung über public-Keys. Für diesen Vorgang werden zwei Schlüssel erstellt, welche in zwei separaten Dateien gespeichert werden. Dabei handelt es sich um einen öffentlichen Schlüssel (public key) und um einen privaten Schlüssel (privat key). Der öffentliche Schlüssel wird auf den Zielsystemen hinterlegt. Der private Schlüssel verbleibt auf dem eigenen Computer. Eine Verbindung kommt nur dann zustande, wenn der öffentliche und der private Schlüssel zusammenpassen.
Die Schlüssel erstellen
Als Erstes muss das Schlüsselpaar erstellt werden. Dies kann von einem Unix / Linux Rechner mit dem Befehl ssh-keygen -t dsa geschehen oder mittels PuTTYgen. Die Vorgehensweise mit puttygen möchte ich nun etwas näher beschreiben. Puttygen hat eine einfache Benutzeroberfläche. Da wir ein neues Schlüsselpaar erstellen wollen, klicken wir auf den Generate Button. Das Programm erstellt automatisch das Schlüsselpaar. Es wird sogar ein passender Eintrag für die authorized_keys Datei erstellt. Wichtig ist, dass wir den public key, aber auch den private key speichern.
Einbindung des privaten Schlüssel auf dem Zielsystem
Nehmen wir an, wir möchten uns als root ohne die Eingabe des root Passwort auf einem Linux Server anmelden. Damit dies funktionieren kann, muss dem Linux Server der entsprechende private key bekannt sein. Die privaten Schlüssel werden im in einer Datei namen authorized_keys gespeichert. Diese Datei befindet sich im .ssh Verzeichnis, welches sich wiederum im home Verzeichnis des entsprechenden Benutzers befindet. Für den User root bedeutet dies: /root/.ssh/auhtorized_keys
Wir kopieren also den „Public key for pasting into OpenSSH authorized_keys file“ Text aus dem putty key generator in die Zwischenablage (Strg + c).
Nun bauen wir eine normale SSH Verbindung zum Server auf und melden uns mit dem Benutzernamen root und dem entsprechenden Passwort am System an. Anschließend öffnen wir die Datei authorized_keys.
vi /root/.ssh/authorized_keys
Durch Drücken der Taste i, können wir den Text editieren. Anschließend drücken wir dir rechte Maustaste um den public key aus der Zwischenablage einzufügen. Nach einem Druck auf die ESC verlassen wir den Bearbeitungsmodus. Durch die Eingabe von :wq wird der Text gespeichert und vi beendet.
Putty konfigurieren
Wir starten nun den SSH Client putty. Im Bereich Session tragen wir, wie gewohnt, den Hostnamen oder die IP-Adresse des Zielrechners ein.
Nun müssen wir putty noch mitteilen, mit welchen Benutzernamen wir uns am Zielsystem anmelden möchten. Die entsprechende Einstellung befindet sich im Bereich Connection / Data. Hier muss das Feld Auto-login username entsprechend gefüllt werden.
Zum Schluss muss putty natürlich noch wissen, wo sich der private Schlüssel befindet. Im Bereich Connection / SSH / Auth könnt Ihr den Pfad zu Eurer Privat-Key.ppk Datei hinterlegen.
P.S. Die Authentifizierung mittels public key funktioniert auch mit WinSCP :-).