SSH-Keys auf Ubuntu erstellen
Mehr Sicherheit mit SSH-Keys
Wer Fernzugriff auf Linux-Systeme, wie z.B. Ubuntu, auf Konsolenebene nutzen möchte, kommt um SSH nicht drum herum. Ist der SSH-Server-Dienst einmal im System aktiviert und für die Nutzer freigegeben, kannst du dich von überall mit deinen ganz normalen Logindaten einloggen – sowohl von zu Hause als auch von unterwegs. Doch sind Passwörter wirklich sicher genug, um einen Server möglicherweise sensiblen Daten zu schützen? Die Antwort ist nein. Brute-Force-Attacken nehmen vermehrt zu und werden durch immer längere Passwortlisten auch ständig effektiver. Doch wie kannst du dich dagegen schützen? Ganz einfach! Anstatt wie so üblich ein Passwort zu verwenden, besteht die Möglichkeit, auf eine weitere Alternative zurückzugreifen: SSH-Keys. Diese auf dem RSA-Verschlüsselungsprotokoll basierenden Schlüssel bestehen aus einem Public-Key und einem Private- Key. Der Public-Key wird auf all deinen Systemen hinterlegt, während der Private-Key auf deinem Client bleibt. Den Privat-Key kannst du zusätzlich noch mit einer Passphrase schützen. Wenn du Dich jetzt also mit einem deiner Systeme verbindest, wirst du nicht mehr nach dem Passwort des Systems gefragt, sondern nach der Passphrase deines Private-Keys. Wenn du einmal solch ein Key-Pair erstellt hast, kannst du den Login über Passwörter sogar komplett deaktivieren und deinen Server dadurch noch sicherer machen. gridscale bietet dir sogar an, deinen Public-Key automatisch auf den Servern deiner Wahl zu hinterlegen. Das bedeutet, dass du nicht mal ein Kennwort vergeben musst.
Doch eins nach dem anderen. Heute gebe ich dir eine Schritt-für-Schritt-Anleitung vom Erstellen des Key-Pairs bis hin zur automatisierten Einbindung deiner Keys auf den Servern bei gridscale.
Erstellung eines SSH-Key-Pairs
Der erste Schritt ist auch gleich der kürzeste. Mit einem einzigen Befehl lässt sich das Pair erstellen.
ssh-keygen -t rsa
Anschließend wirst du noch gefragt, wo der Schlüssel gespeichert werden soll. Mit „Enter“ wird er am Standartort hinterlegt (/home/user/.ssh/id_rsa). Anschließend wirst du gefragt, ob du für deinen Privat-Key eine Passphrase erstellen möchtest. Dies ist zwar optional, wird dir von mir aber dennoch wärmstens empfohlen. So sind deine Systeme zusätzlich geschützt, falls jemals jemand an deinen Key kommen sollte. Nach Eingabe und Bestätigung deines Passwortes werden dir dein Public-Key und das Random RSA Pic angezeigt.
Dein Puplic-Key ist jetzt unter /home/user/.ssh/id_rsa.pub gespeichert und der Privat-Key, den du problemlos auf andere Clients übertragen kannst, liegt unter /home/user/.shh/id_rsa . Lege den Privat-Key nur auf Clients auf die nur du Zugriff hast.
Bist du bereit zu starten?
Oder hast du noch Fragen? Lasse dir jetzt dein Konto erstellen oder dich in einem persönlichen Gespräch beraten.
Server mit Public-Key versorgen
Jetzt muss dein Server bzw. das System, auf das du zugreifen möchtest, nur noch von deinem Public-Key erfahren. Dafür gibt es einen ganz einfachen Befehl:
ssh-copy-id root@IP-oder-Domain-des-Zielsystems
Anschließend wirst du nach dem Passwort gefragt. Dies ist das Passwort des Nutzers, in dem Falle Root, auf dem Zielsystem. Hintergrund des Ganzen ist folgender: Dein Client öffnet eine SSH-Verbindung zum Zielsystem und fügt deinen Public-Key in die dortige ~/.ssh/authorized_keys – Datei. Falls diese noch nicht existiert, wird diese erstellt. Du kannst das Ganze natürlich auch manuell machen:
cat ~/.ssh/id_rsa.pub | ssh root@IP-oder-Domain-des-Zielsystems "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Jetzt kannst du ohne das Passwort des Servers bzw. des Zielsystems eine Verbindung über SSH herstellen. Wenn du eine Passphrase für deinen Privat-Key erstellt hast, wird stattdessen diese verlangt.
Da du das Passwort jetzt nicht mehr benötigst, kannst du den Zugriff über SSH mit einem Passwort auch komplett verbieten. In dem Fall solltest du jedoch eine Sicherheitskopie deines Privat-Keys anlegen. Wenn deinem Client mal etwas passiert, und du keinen physischen Zugriff auf deine Systeme hast – zum Beispiel bei gemieteten Servern bei klassischen Hosting-Unternehmen – sperrst du dich aus. Sollte dir das einmal bei gridscale passieren, kannst du deinen Storage einfach an einen zweiten Server hängen und den neuen Public-Key im Dateisystem hinterlegen. Durch das praktische System von gridscale ist es fast so, als hättest du physischen Zugriff, so kannst du zum Beispiel Datenträger von verschiedenen Servern ausbauen und woanders wieder einbauen. Wie das funktioniert und was gridscale dir sonst noch alles für Möglichkeiten bietet, erfährst du hier: How to gridscale
Zugriff per Passwort deaktivieren
Um den Zugriff über ein Passwort über SSH zu deaktivieren, verbinde dich mit dem betreffenden System und bearbeite die sshd_config:
sudo nano /etc/ssh/sshd_config
In diesem File suchst du den Eintrag “PermitRootLogin” und änderst den Eintrag auf “without-password”. Das Ganze sieht dann so aus:
PermitRootLogin without-password
Jetzt muss nur noch der SSH-Dienst einmal neu gestartet werden:
reload ssh
Fazit
Die Nutzung eines SSH-Keys ist einem Passwort immer vorzuziehen und ist um einiges sicherer. Allerdings ist es sehr schwer, an entfernte Systeme heranzukommen, sollte der Privat-Key einmal verloren gehen. Daher sollte dieser unbedingt gesichert werden.