SSH-Schlüssel für Cloud-Server
SSH-Schlüssel (Secure Shell) sind ein wesentlicher Bestandteil der sicheren Verwaltung von Cloud-Servern. Sie bieten eine sicherere und bequemere Methode zur Authentifizierung von Nutzern im Vergleich zu herkömmlichen passwortbasierten Anmeldungen. Durch die Verwendung von SSH-Schlüsseln können Sie sichere, verschlüsselte Verbindungen zu Ihren Cloud-Servern herstellen und sicherstellen, dass nur autorisierte Benutzer Zugang erhalten. In diesem Artikel erfahren Sie, was SSH-Schlüssel sind, wie sie funktionieren und wie Sie sie auf Ihrem Cloud-Server einrichten.
1. Was sind SSH-Schlüssel?
SSH-Schlüssel sind kryptografische Schlüssel, die für die Authentifizierung von Clients bei einem SSH-Server verwendet werden. Anstelle einer Kombination aus Benutzername und Kennwort, die für Brute-Force-Angriffe anfällig sein kann, bieten SSH-Schlüssel eine sicherere und automatisierte Möglichkeit, sich bei entfernten Servern anzumelden. SSH-Schlüsselpaare bestehen aus zwei Teilen:
- Privater Schlüssel: Dieser wird sicher auf Ihrem lokalen Rechner aufbewahrt und sollte niemals weitergegeben werden.
- Öffentlicher Schlüssel: Dieser befindet sich auf dem entfernten Server. Der Server verwendet den öffentlichen Schlüssel, um Benutzer anhand ihres privaten Schlüssels zu authentifizieren.
Wenn Sie eine Verbindung zu einem Cloud-Server herstellen, prüft das SSH-Protokoll, ob der öffentliche Schlüssel auf dem Server mit dem auf Ihrem Rechner gespeicherten privaten Schlüssel übereinstimmt. Wenn die Übereinstimmung bestätigt wird, wird die Verbindung hergestellt, ohne dass ein Passwort erforderlich ist.
2. Warum SSH-Schlüssel für Cloud-Server verwenden?
SSH-Schlüssel bieten mehrere Vorteile gegenüber der herkömmlichen passwortbasierten Authentifizierung:
- Erhöhte Sicherheit: SSH-Schlüssel sind viel schwieriger zu knacken als Passwörter, da sie kryptografische Algorithmen zur Authentifizierung verwenden. Außerdem sind SSH-Schlüssel im Gegensatz zu Passwörtern nicht anfällig für Brute-Force- oder Phishing-Angriffe.
- Bequemlichkeit: Einmal eingerichtet, ermöglichen SSH-Schlüssel eine passwortlose Authentifizierung, so dass die Anmeldung ohne erneute Eingabe von Anmeldedaten möglich ist.
- Automatisierung: Viele automatisierte Prozesse und Skripte beruhen auf der Authentifizierung mit SSH-Schlüsseln, was die Verwaltung von Cloud-Servern und -Einrichtungen effizienter macht.
- Zugriffskontrolle: SSH-Schlüssel können nur an autorisierte Benutzer verteilt werden, so dass Sie kontrollieren können, wer auf Ihre Cloud-Server zugreifen kann.
3. So funktioniert die SSH-Schlüssel-Authentifizierung
Hier ist eine vereinfachte Version, wie die SSH-Schlüsselauthentifizierung funktioniert:
- Der Client (Ihr lokaler Rechner) sendet eine Anfrage zur Verbindung mit dem Server.
- Der Server prüft, ob der öffentliche Schlüssel des Clients mit einem der Schlüssel übereinstimmt, die in der Datei ~/.ssh/authorized_keys gespeichert sind.
- Wird eine Übereinstimmung gefunden, sendet der Server eine Aufforderung (normalerweise verschlüsselte Daten) an den Client.
- Der Client verwendet seinen privaten Schlüssel, um die Herausforderung zu entschlüsseln und eine Antwort an den Server zurückzusenden.
- Der Server überprüft die Antwort, und wenn sie korrekt ist, erlaubt er dem Client den Zugang ohne Passwort.
4. So erzeugen Sie SSH-Schlüssel
Um die SSH-Schlüsselauthentifizierung zu verwenden, müssen Sie zunächst ein Schlüsselpaar erzeugen. Hier ist die Vorgehensweise:
Unter Linux oder macOS:
- Öffnen Sie Ihr Terminal.
- Führen Sie den folgenden Befehl aus, um ein neues SSH-Schlüsselpaar zu erzeugen:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Hier wird erklärt, was die einzelnen Optionen bedeuten:
- -t rsa: Gibt den RSA-Algorithmus an.
- -b 4096: Erzeugt einen 4096-Bit-Schlüssel für zusätzliche Sicherheit.
- -C “your_email@example.com”: Fügt einen Kommentar hinzu, um den Schlüssel zu identifizieren.
- Sie werden aufgefordert, einen Ort zum Speichern des Schlüssels auszuwählen. Standardmäßig wird er im Verzeichnis ~/.ssh/ gespeichert. Drücken Sie die Eingabetaste, um den Standardspeicherort zu übernehmen.
- Sie können auch eine Passphrase für zusätzliche Sicherheit festlegen, dies ist jedoch optional. Wenn Sie keine Passphrase verwenden möchten, drücken Sie die Eingabetaste, um sie leer zu lassen.
Unter Windows:
Wenn Sie Windows verwenden, können Sie einen SSH-Client wie PuTTYgen oder die integrierte OpenSSH-Funktion in Windows 10 und höher verwenden:
- Öffnen Sie PowerShell oder die Eingabeaufforderung.
- Führen Sie denselben Befehl wie oben aus, um das Schlüsselpaar zu erzeugen:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Nach der Ausführung des Befehls ist der Vorgang derselbe wie unter Linux oder macOS.
5. Hinzufügen Ihres SSH-Schlüssels zum Cloud-Server
Nachdem Sie das SSH-Schlüsselpaar erzeugt haben, müssen Sie den öffentlichen Schlüssel auf Ihren Cloud-Server kopieren, um die schlüsselbasierte Authentifizierung zu aktivieren.
Methode 1: Verwendung von ssh-copy-id
Unter Linux oder macOS können Sie den Befehl ssh-copy-id verwenden, um den öffentlichen Schlüssel auf Ihren Server zu übertragen:
ssh-copy-id user@your-server-ip
Mit diesem Befehl werden Sie aufgefordert, Ihr Passwort für den Server einzugeben. Sobald das Passwort eingegeben ist, wird der öffentliche Schlüssel in die Datei ~/.ssh/authorized_keys auf dem Server kopiert.
Methode 2: Manuelle Methode
Wenn Sie mit Windows arbeiten oder manuelle Schritte bevorzugen, können Sie den öffentlichen Schlüssel manuell kopieren:
- Öffnen Sie die Datei mit dem öffentlichen Schlüssel in einem Texteditor:
cat ~/.ssh/id_rsa.pub
- Kopieren Sie den gesamten Inhalt der Datei.
- Verbinden Sie sich mit Ihrem Server über eine passwortbasierte SSH-Sitzung:
ssh user@your-server-ip
- Erstellen Sie auf dem Server das Verzeichnis ~/.ssh, falls es noch nicht existiert:
mkdir -p ~/.ssh
- Öffnen Sie die Datei authorized_keys:
nano ~/.ssh/authorized_keys
- Fügen Sie den kopierten öffentlichen Schlüssel in die Datei ein und speichern Sie sie.
- Setzen Sie die richtigen Berechtigungen:
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
Damit wird sichergestellt, dass nur der Benutzer Lese- und Schreibzugriff auf den Schlüssel und das Verzeichnis hat.
6. Deaktivieren der Passwortauthentifizierung (optional, aber empfohlen)
Sobald die SSH-Schlüssel eingerichtet sind und funktionieren, ist es sehr empfehlenswert, die Kennwortauthentifizierung auf dem Server zu deaktivieren, um unbefugten Zugriff zu verhindern. Hier ist die Anleitung dazu:
- Öffnen Sie die SSH-Konfigurationsdatei auf Ihrem Cloud-Server:
sudo nano /etc/ssh/sshd_config
- Suchen Sie die folgende Zeile und ändern Sie sie in no:
PasswortAuthentifizierung nein
- Speichern Sie die Datei und starten Sie den SSH-Dienst neu:
sudo systemctl restart sshd
Jetzt können sich nur noch Benutzer mit einem gültigen SSH-Schlüssel anmelden.
7. SSH-Schlüssel verwalten
- Hinzufügen von mehreren Schlüsseln: Wenn mehrere Benutzer Zugriff auf den Server benötigen, können Sie deren öffentliche Schlüssel zur Datei authorized_keys hinzufügen.
- Entfernen von Schlüsseln: Wenn Sie einem bestimmten Benutzer den Zugang entziehen möchten, entfernen Sie einfach seinen öffentlichen Schlüssel aus der Datei authorized_keys.
8. Fazit
Die Verwendung von SSH-Schlüsseln für den Zugang zu Cloud-Servern ist eine der besten Möglichkeiten, Ihren Server zu sichern und die mit der kennwortbasierten Authentifizierung verbundenen Schwachstellen zu vermeiden. Wenn Sie die in diesem Artikel beschriebenen Schritte befolgen, können Sie SSH-Schlüssel generieren, sie zu Ihrem Cloud-Server hinzufügen und sogar Kennwortanmeldungen deaktivieren, um die Sicherheit zu erhöhen.
Die Einrichtung von SSH-Schlüsseln mag anfangs etwas mehr Aufwand bedeuten, aber die langfristige Sicherheit und der Komfort, den sie bieten, sind die Mühe wert.