SSH-Schlüssel erklärt: Generierung, Authentifizierung, Schlüsselpaar-Informationen und mehr
SSH-Schlüssel verbessern nicht nur die Sicherheit, sondern ermöglichen auch die Automatisierung verbundener Prozesse, Single Sign-on (SSO) und Identitäts- und Zugriffsverwaltung in großem Maßstab, wie sie in Unternehmen heutzutage erforderlich sind.
Inhaltsverzeichnis
Was ist ein SSH-Schlüssel?
aktualisiert am: 22.01.2024
Ein SSH-Schlüssel ist ein sicheres Zugriffsberechtigungselement, das im Secure Shell (SSH)-Protokoll verwendet wird. SSH-Schlüsselpaare nutzen die Public-Key-Infrastruktur (PKI)-Technologie, den Goldstandard für die Authentifizierung und Verschlüsselung digitaler Identitäten, um eine sichere und skalierbare Authentifizierungsmethode bereitzustellen.
Da das SSH-Protokoll häufig für die Kommunikation in Cloud-Diensten, Netzwerkumgebungen, Dateiübertragungs-Tools, Konfigurationsmanagement-Tools und anderen computerabhängigen Diensten verwendet wird, nutzen die meisten Organisationen diese Art der schlüsselbasierten Authentifizierung, um Identitäten zu überprüfen und diese Dienste vor unbeabsichtigter Nutzung oder böswilligen Angriffen zu schützen.
Schlüsselpaar – öffentliche und private Schlüssel
Ein SSH-Schlüssel basiert auf der Verwendung von zwei verwandten, aber asymmetrischen Schlüsseln, einem öffentlichen und einem privaten Schlüssel, die zusammen ein Schlüsselpaar bilden, das als sichere Zugangsdaten verwendet wird. Der private Schlüssel ist geheim, nur dem Benutzer bekannt und sollte verschlüsselt und sicher gespeichert werden. Der öffentliche Schlüssel kann frei mit jedem SSH-Server geteilt werden, mit dem sich der Benutzer verbinden möchte. Diese Schlüssel werden normalerweise vom IT-Team einer Organisation verwaltet, oder besser noch, mit Hilfe einer vertrauenswürdigen Zertifizierungsstelle (CA), um sicherzustellen, dass sie sicher gespeichert werden.
Zur Erstellung der digitalen Identität werden sowohl der öffentliche als auch der private Schlüssel generiert und das Paar wird mithilfe eines starken Public-Key-Kryptografie-Algorithmus miteinander verknüpft. Die am häufigsten verwendeten mathematischen Algorithmen zur Schlüsselgenerierung sind Rivest-Shamir-Adleman (RSA) und Elliptic Curve Digital Signature Algorithm (ECDSA), eine elliptische Kurvenanwendung von DSA.
Diese Algorithmen verwenden verschiedene Berechnungsmethoden, um zufällige numerische Kombinationen unterschiedlicher Länge zu generieren, sodass sie nicht mit einem Brute-Force-Angriff ausgenutzt werden können. Die Schlüsselgröße oder Bitlänge hilft dabei, die Schutzstärke zu bestimmen. 2048-Bit-RSA-Schlüssel oder 521-Bit-ECDSA-Schlüssel bieten eine ausreichende kryptografische Stärke, um Hacker davon abzuhalten, den Algorithmus zu knacken.
Wie funktionieren SSH-Schlüssel?
Das SSH-Schlüsselpaar wird verwendet, um die Identität eines Benutzers oder Prozesses zu authentifizieren, der über das SSH-Protokoll auf ein Remote-System zugreifen möchte. Der öffentliche Schlüssel wird sowohl vom Benutzer als auch vom Remote-Server zur Verschlüsselung von Nachrichten verwendet. Auf dem Remote-Server wird er in einer Datei mit öffentlichen Schlüsseln gespeichert. Auf der Benutzerseite wird er in einer SSH-Schlüsselverwaltungssoftware oder in einer Datei auf dem Computer gespeichert. Der private Schlüssel verbleibt ausschließlich auf dem System, das für den Zugriff auf den Remote-Server verwendet wird, und dient zum Entschlüsseln von Nachrichten.
Wenn ein Benutzer oder Prozess eine Verbindung zum Remote-Server über den SSH-Client anfordert, wird eine Challenge-Response-Sequenz initiiert, um die Authentifizierung abzuschließen. Der SSH-Server erkennt, dass eine Verbindung angefordert wird, und sendet eine verschlüsselte Challenge-Anfrage unter Verwendung der gemeinsam genutzten öffentlichen Schlüsselinformationen. Der SSH-Client entschlüsselt dann die Challenge-Nachricht und antwortet dem Server. Der Benutzer oder Prozess muss korrekt auf die Challenge antworten, um Zugriff zu erhalten. Diese Sequenz aus Challenge-Response erfolgt automatisch zwischen dem SSH-Client und dem Server, ohne dass der Benutzer manuell eingreifen muss.
SSH-Authentifizierung mit öffentlichem Schlüssel vs. Passwörter
Im Großen und Ganzen funktionieren SSH-Schlüssel wie Passwörter, indem sie den Zugriff kontrollieren. Aber damit enden die Gemeinsamkeiten auch schon. Digitale Identitäten müssen sicher sein, damit sie nicht gestohlen werden können, benutzerfreundlich, damit der Zugriff schnell und unterbrechungsfrei ist, und zukunftssicher, damit Unternehmen möglichen Bedrohungen immer einen Schritt voraus sind.
Früher boten Passwörter ein gewisses Maß an Sicherheit, aber sie sind nicht mehr so effektiv wie früher. Das liegt daran, dass Kriminelle immer geschickter darin sind, Passwörter während der Übertragung über das Internet zu stehlen, sie aus Datenspeichern zu entfernen und sie durch Brute-Force-Angriffe zu erhalten.
Diese Sicherheitsrisiken und -probleme werden durch den Faktor Mensch noch verstärkt: Menschen verwenden Passwörter mehrfach, geben sie weiter und vergessen sie ständig. Die Kosten für Unternehmen sind hoch, nicht nur aufgrund von Datenverlust, Ausfällen und der Gefährdung von Informationen, sondern auch, weil die Eingabe von Passwörtern Zeit kostet, erhebliche Support-Ressourcen erfordert und Passwörter häufig zurückgesetzt werden müssen.
Durch die Nutzung der kryptografischen Stärke und der Authentifizierungsmethoden von PKI sind SSH-Schlüssel nicht anfällig für böswillige Angriffe und gültige Anmeldeinformationen werden nicht offengelegt, wenn ein Server kompromittiert wurde. Die PKI-Kryptografie wird kontinuierlich verbessert und macht Identitäten zukunftssicher gegen neue und sich entwickelnde Bedrohungen.
Die SSH-Schlüsselauthentifizierung ist auch bequemer als die Passwortauthentifizierung. Die Schlüssel verbinden Benutzer und Prozesse mit einem Server, indem sie die Authentifizierung einleiten und automatisch Zugriff gewähren, sodass Benutzer sich nicht für jedes System ihr Passwort merken oder eingeben müssen.
Dennoch sollten Sie Ihre privaten SSH-Schlüssel immer mit einem Passwort schützen oder sie für zusätzliche Sicherheit auf einem Hardware-Token speichern.
Wo Sie Ihre SSH-Schlüssel finden
Bevor Sie SSH-Schlüssel verwenden können, sollten Sie überprüfen, ob Ihr Benutzerkonto über diese verfügt. Wenn nicht, müssen sie erstellt werden. Es gibt mehrere Möglichkeiten, dies zu tun, z. B. mit Yubikeys oder anderen Hardware-Sicherheitslösungen, die oft der sicherste Weg sind. Für eine einfachere Einrichtung können Sie jedoch das Verzeichnis .ssh verwenden.
Wenn Sie sich für die Verwendung des .ssh-Verzeichnisses entscheiden, können Sie Ihr SSH-Schlüsselpaar wie folgt finden:
- Gehen Sie zu Ihrem persönlichen Verzeichnis und suchen Sie nach dem SSH-Verzeichnis. Bei Linux und MacOS ist der Standardspeicherort das Verzeichnis ~/.ssh. Unter Windows ist der Standardspeicherort C:\Users\<username>\.ssh.
- Suchen Sie nach zwei Dateien, die ähnlich wie id_dsa oder id_rsa benannt sind. Eine davon hat die Erweiterung .pub und die andere nicht (z. B. id_rsa.pub und id_rsa). Die .pub-Datei ist der öffentliche Schlüssel und die andere der private Schlüssel. Der öffentliche Schlüssel muss nicht immer vorhanden sein, da er auf dem Client nicht erforderlich ist, um zu funktionieren.
Wenn Sie diese Dateien nicht im Verzeichnis finden oder überhaupt kein Verzeichnis haben, müssen Sie die SSH-Schlüssel erstellen.
So generieren Sie ein SSH-Schlüsselpaar
Um das öffentliche/private SSH-Schlüsselpaar zu generieren, können Sie dies manuell tun oder ein automatisiertes System zur Verwaltung von Zertifikaten verwenden.
Das manuelle Generieren und Speichern neuer SSH-Schlüssel kann auf den meisten gängigen Betriebssystemen durchgeführt werden. Auf Windows-Systemen können sie mit dem Befehlszeilenprogramm ssh-keygen oder einem SSH-Client wie PuTTy generiert werden. Auf MacOS- und Linux-Systemen werden sie über ein Terminalfenster generiert.
Führen Sie die folgenden Schritte in der Befehlszeile aus, um einen SSH-Schlüssel zu generieren:
- Geben Sie den Befehl „key gen“ ein $ ssh-keygen -t rsa
- Geben Sie die Datei an, in der die Schlüssel gespeichert werden sollen. In der Regel werden die Schlüssel im Home-Verzeichnis oder im Verzeichnis ~/.ssh/ gespeichert (z. B. /home/Ordnername/.ssh/id_rsa oder /c/Users/Benutzername/.ssh/id_rsa). Drücken Sie die Eingabetaste, sobald der gewünschte Dateiname ausgewählt wurde.
- Geben Sie eine Passphrase ein oder lassen Sie das Feld leer, wenn Sie keine Passphrase verwenden möchten. Hinweis: Die Passphrase bietet eine zusätzliche Ebene des Passwortschutzes für das Schlüsselpaar, aber der Benutzer muss die Passphrase jedes Mal eingeben, wenn das Schlüsselpaar verwendet wird.
Sobald das Paar generiert wurde, besteht der nächste Schritt darin, den öffentlichen Schlüssel auf dem Remote-Server zu platzieren. Ein Systemadministrator kann den öffentlichen SSH-Schlüssel mithilfe des Befehls ssh-copy-id in die Datei authorized_keys des Remote-Servers kopieren (z. B. $ ssh-copy-id Benutzername@IP-Adresse). Alternativ können Sie die Schlüssel mit dem Secure-Shell-Befehl einfügen (z. B. $ cat ~/.ssh/id_rsa.pub | ssh username@IP address „mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys“).
Diese Schritte ermöglichen es Ihnen dann, die private Schlüsseldatei für die SSH-Authentifizierung zu verwenden.
SSH konfigurieren
Sie können SSH konfigurieren, indem Sie die systemweite Konfigurationsdatei auf dem Server ändern. Im Allgemeinen lautet der Dateiname /etc/ssh/sshdc_config.
Sobald Sie auf die Datei /etc/ssh/ssh_config zugreifen, können Sie damit steuern, welche Benutzer und welche Gruppen SSH-Zugriff auf den Server haben.
Ebenso können lokale Client-Konfigurationen in einer .ssh/config-Datei vorgenommen werden. Über diese Datei kann ein Benutzer spezifische Konfigurationen auf Host-Basis hinzufügen, einschließlich, aber nicht beschränkt auf die Einstellung, welcher private Schlüssel für jeden Server verwendet werden soll, welcher Benutzername und die Einrichtung von SSH-Tunneln.
SSH-Schlüsselverwaltung
Eine ordnungsgemäße SSH-Schlüsselverwaltung ist für Organisationen unerlässlich, da diese Schlüssel den Zugriff auf geschäftskritische Systeme und Daten ermöglichen. Die manuelle Verwaltung kann jedoch zeitaufwendig und fehleranfällig sein. Erschwerend kommt hinzu, dass Organisationen in der Regel Tausende, wenn nicht Millionen von Schlüsseln in ihrer gesamten Umgebung gespeichert haben. Die von ihnen gebotene Sicherheit kann leicht untergraben werden, wenn keine Richtlinien für Konfiguration, Bereitstellung und Beendigung vorhanden sind und aktiv verwaltet werden.
Wenn beispielsweise ausgegebene Schlüssel nicht mehr benötigt werden, weil Mitarbeiter das Unternehmen verlassen, kann es vorkommen, dass IT-Mitarbeiter vergessen, diese zu löschen. Solche verwaisten Schlüssel sind fast unmöglich zu finden, sodass das Risiko besteht, dass sie auf Systemen vorhanden sind, die nicht genau kontrolliert werden. Wenn diese verwaisten Schlüssel ungeschützt sind, können sie von einem böswilligen Akteur gestohlen werden, der dann die noch aktiven Anmeldedaten verwenden kann, um auf Ihre kritischen Geschäftssysteme und -daten zuzugreifen.
Für die Bereitstellung, Konfiguration und Beendigung von Schlüsseln stehen dedizierte SSH-Schlüsselverwaltungslösungen zur Verfügung, die das Hilfsprogramm ssh-agent verwenden. Die Verwendung dieser Lösungen ist deutlich besser als die manuelle Verwaltung, aber dieser Ansatz erfordert, dass vielbeschäftigte IT-Mitarbeiter zusätzlich zu ihren bestehenden Sicherheits- und Verwaltungslösungen ein weiteres Verwaltungstool verwenden. Stattdessen sollten IT-Teams eine zentralisierte Lösung für die Zertifikatsverwaltung verwenden, die alle PKI-basierten Zertifikate automatisch verwaltet. Durch die Nutzung eines einheitlichen Ansatzes für die Zertifikatsverwaltung können IT-Mitarbeiter alle ihre Schlüsselverwaltungsaufgaben in einem Dashboard erledigen.