SSH-Schlüssel: Funktionsweise und Nutzung

Autor: Veröffentlicht

Kurz erklärt: Ein SSH-Schlüssel dient dazu, deine Identität beim sicheren Verbinden mit einem Server oder einem Dienst, etwa einem Code-Repository, zu bestätigen. In der Praxis verwendest du ein Schlüsselpaar: Den öffentlichen Schlüssel hinterlegst du beim Dienst, der private bleibt auf deinem Gerät. Diese Anmeldung kann das Kontopasswort ersetzen, erfordert aber den Schutz des privaten Schlüssels.

Wie funktioniert die Anmeldung mit einem SSH-Schlüssel?

SSH steht für Secure Shell und ist ein Protokoll für die sichere Kommunikation mit einem anderen Computer über ein Netzwerk. Es wird unter anderem zur Serververwaltung, zur Dateiübertragung über SFTP und zur Kommunikation mit Git-Repositories eingesetzt. Eine SSH-Verbindung ist sowohl bei der Anmeldung mit Passwort als auch mit Schlüssel verschlüsselt. Der Schlüssel verändert vor allem die Art, wie deine Identität bestätigt wird.

Ein Schlüsselpaar besteht aus zwei mathematisch miteinander verknüpften Bestandteilen:

Bei der Anmeldung verwendet das SSH-Programm den privaten Schlüssel, um verbindungsbezogene Daten zu signieren. Der Server prüft die Signatur mit dem hinterlegten öffentlichen Schlüssel. Der private Schlüssel selbst wird nicht an den Server übertragen. Bei einem passend gewählten modernen Algorithmus lässt sich der private Schlüssel praktisch nicht aus dem öffentlichen rekonstruieren.

Wann ist ein SSH-Schlüssel statt eines Passworts sinnvoll?

Wenn du einen VPS, also einen virtuellen privaten Server, verwaltest, kannst du dich mit einem Schlüssel anmelden, statt das Kontopasswort einzugeben. Bei der Arbeit mit Git kann der Schlüssel deine Identität beim Abrufen und Übertragen von Änderungen bestätigen. Das bedeutet jedoch nicht, dass damit automatisch Commits signiert werden. Dafür gibt es eine separate Funktion, die konfiguriert werden muss.

Ein Beispiel: Zwei Personen betreuen eine Unternehmenswebsite. Statt sich ein Passwort zu teilen, erstellt jede ein eigenes Schlüsselpaar. Der Administrator hinterlegt ihre öffentlichen Schlüssel bei den jeweiligen Konten. Beendet eine Person die Zusammenarbeit, lässt sich ihr Schlüssel entfernen, ohne den Schlüssel der anderen Person auszutauschen. Separate Systemkonten erleichtern zusätzlich die getrennte Vergabe von Berechtigungen.

Schlüssel verringern das Risiko, dass ein Passwort durch automatisierte Anmeldeversuche erraten wird. Sie schützen jedoch nicht vor allem: Gelangt ein Angreifer an dein Gerät oder einen ungeschützten privaten Schlüssel, kann er dadurch Zugriff erhalten. Das Hinterlegen eines Schlüssels allein deaktiviert auch nicht die Passwortanmeldung auf dem Server.

Wie erstellst du ein SSH-Schlüsselpaar?

Öffne auf einem System mit installiertem OpenSSH ein Terminal. Prüfe zunächst das Verzeichnis .ssh in deinem Home-Verzeichnis, damit du keine vorhandenen Schlüssel überschreibst. Ein neues Schlüsselpaar mit dem modernen Algorithmus Ed25519 erstellst du mit folgendem Befehl:

ssh-keygen -t ed25519 -C "arbeits-laptop"

Die Option -C fügt einen Kommentar hinzu, mit dem du den Schlüssel leichter zuordnen kannst; sie vergibt keine Berechtigungen. Das Programm fragt nach dem Speicherort und einer Passphrase zum Schutz des Schlüssels. Diese schützt die private Schlüsseldatei und ist nicht das Passwort des Kontos auf dem Server. Ältere oder spezielle Umgebungen können einen anderen Algorithmus erfordern. Prüfe deshalb die Anforderungen des Anbieters.

Mit dem Standardnamen entstehen zwei Dateien:

Das Zeichen ~ steht für das Home-Verzeichnis des Benutzers. Der öffentliche Schlüssel besteht üblicherweise aus einer langen Zeile, die mit ssh-ed25519 beginnt. Kopiere die gesamte Zeile in das Feld für SSH-Schlüssel in der Verwaltungsoberfläche des Anbieters. Auf einem Server mit OpenSSH wird sie normalerweise an die Datei ~/.ssh/authorized_keys des betreffenden Kontos angehängt, ohne vorhandene Einträge zu löschen. Auch die Zugriffsrechte für das Verzeichnis und die Datei müssen auf dem Server korrekt gesetzt sein.

Teste die Verbindung, nachdem du den Schlüssel hinterlegt hast:

ssh -i ~/.ssh/id_ed25519 benutzer@server-adresse

Ersetze den Benutzernamen und die Adresse durch deine eigenen Angaben. Wenn du die Zugangskonfiguration änderst, lasse die bisherige Sitzung geöffnet, bis du dich in einem zweiten Fenster erfolgreich angemeldet hast.

Benutzerschlüssel und Serverschlüssel

Bei der ersten Verbindung kann SSH den Fingerabdruck des Serverschlüssels anzeigen, also dessen verkürkte Kennung. Das ist nicht dein Benutzerschlüssel: Der Serverschlüssel dient dazu, zu bestätigen, dass du dich mit dem richtigen Rechner verbindest. Vergleiche den Fingerabdruck mit einer Angabe, die du über einen unabhängigen, vertrauenswürdigen Kanal erhalten hast, etwa vom Administrator oder aus der Verwaltungsoberfläche des Anbieters.

Eine Warnung über einen geänderten Serverschlüssel solltest du nicht ignorieren. Die Ursache kann eine legitime Neuinstallation sein, aber auch ein Angreifer, der sich als der Server ausgibt. Kläre zuerst den Grund für die Änderung, statt ungeprüft den Eintrag aus der Datei known_hosts zu entfernen. In dieser Datei merkt sich der SSH-Client bereits erkannte Server.

Wie bewahrst du einen Schlüssel sicher auf und entziehst ihm den Zugriff?

Schütze den privaten Schlüssel mit einer starken Passphrase und lege ihn weder in einem Repository noch in einer Nachricht oder einem Support-Ticket ab. Ein SSH-Agent ist ein Programm, das den entsperrten Schlüssel im Arbeitsspeicher halten und zum Signieren verwenden kann. Dadurch musst du die Passphrase seltener erneut eingeben.

Separate Schlüssel für verschiedene Geräte erleichtern es, den Zugriff zu entziehen, wenn eines davon verloren geht. Wenn du vermutest, dass ein privater Schlüssel in fremde Hände gelangt ist, entferne den zugehörigen öffentlichen Schlüssel von allen Servern und Diensten, die ihn akzeptieren. Erzeuge anschließend ein neues Schlüsselpaar. Eine Änderung der Passphrase der lokalen Datei macht eine gestohlene Kopie nicht ungültig.

Bevor du einen neuen Schlüssel verwendest, prüfe in der Verwaltungsoberfläche des Dienstes, wie du ihn entfernen und nach dem Verlust deines Geräts wieder Zugang erhalten kannst. So nimmt dir ein defekter Laptop nicht die einzige Möglichkeit, deinen Server zu verwalten.

Siehe auch: Was bedeutet www?

Lesen Sie auch

Wie PHP-FPM PHP-Anfragen verarbeitet, sich vom Webserver unterscheidet und wie du Prozesse an Last und Hosting-Ressourcen anpasst.
BIND ist offene DNS-Serversoftware. Erfahre, welche Aufgaben sie übernimmt und wann sich der Betrieb eines eigenen Servers lohnt.
Was Polens REGON-Register und seine Kennnummer bedeuten, wie sie sich von NIP und KRS unterscheiden und wie Sie Unternehmensdaten prüfen.