So richten Sie SSH-Schlüssel ein

Einführung

Das Secure Shell-Protokoll (oder SSH) ist ein kryptografisches Netzwerkprotokoll, das Benutzern den sicheren Zugriff auf einen Remote-Computer über ein ungesichertes Netzwerk ermöglicht.

Obwohl SSH eine kennwortbasierte Authentifizierung unterstützt, wird im Allgemeinen empfohlen, stattdessen SSH-Schlüssel zu verwenden. SSH-Schlüssel sind eine sicherere Methode, um sich bei einem SSH-Server anzumelden, da sie nicht anfällig für gängige Brute-Force-Passwort-Hacking-Angriffe sind.

Beim Erzeugen eines SSH-Schlüsselpaars werden zwei lange Zeichenfolgen erzeugt: ein öffentlicher und ein privater Schlüssel. Sie können den öffentlichen Schlüssel auf einem beliebigen Server ablegen und sich dann mit einem SSH-Client, der Zugriff auf den privaten Schlüssel hat, mit dem Server verbinden.

Wenn der öffentliche und der private Schlüssel übereinstimmen, gewährt der SSH-Server Zugriff, ohne dass ein Kennwort erforderlich ist. Sie können die Sicherheit Ihres Schlüsselpaars noch weiter erhöhen, indem Sie den privaten Schlüssel mit einer optionalen (aber dringend empfohlenen) Passphrase schützen.

Schritt 1 – Erstellen des Schlüsselpaars

Der erste Schritt besteht darin, ein Schlüsselpaar auf dem Client-Rechner zu erstellen. Dies wird wahrscheinlich Ihr lokaler Computer sein. Geben Sie den folgenden Befehl in Ihre lokale Befehlszeile ein:

ssh-keygen -t ed25519
Output
 Generating public/private ed25519 key pair.

Sie sehen eine Bestätigung, dass die Schlüsselerzeugung begonnen hat, und werden zur Eingabe einiger Informationen aufgefordert, die wir im nächsten Schritt besprechen werden.

Hinweis: Wenn Sie auf einem älteren System arbeiten, das die Erstellung von ed25519-Schlüsselpaaren nicht unterstützt, oder wenn der Server, mit dem Sie sich verbinden, diese nicht unterstützt, sollten Sie stattdessen ein starkes rsa-Schlüsselpaar erstellen:

ssh-keygen -t rsa -b 4096

Dies ändert das Flag -t “type” in rsa und fügt das Flag -b 4096 “bits” hinzu, um einen 4096-Bit-Schlüssel zu erzeugen.

Schritt 2 – Festlegen des Speicherorts für die Schlüssel

Bei der ersten Eingabeaufforderung des Befehls ssh-keygen werden Sie gefragt, wo die Schlüssel gespeichert werden sollen:

Output
 Enter file in which to save the key (/home/sammy/.ssh/id_ed25519):

Sie können hier ENTER drücken, um die Dateien am Standardspeicherort im Verzeichnis .ssh Ihres Home-Verzeichnisses zu speichern.

Alternativ können Sie einen anderen Dateinamen oder Speicherort wählen, indem Sie ihn nach der Eingabeaufforderung eingeben und ENTER drücken.

Schritt 3 – Erstellen einer Passphrase

Bei der zweiten und letzten Aufforderung von ssh-keygen werden Sie aufgefordert, eine Passphrase einzugeben:

Output
 Enter passphrase (empty for no passphrase):

Es liegt an Ihnen, ob Sie eine Passphrase verwenden möchten, aber es wird dringend empfohlen: Die Sicherheit eines Schlüsselpaares, unabhängig vom Verschlüsselungsschema, hängt immer noch davon ab, dass es für niemanden sonst zugänglich ist.

Sollte ein privater Schlüssel ohne Passphrase in den Besitz eines unbefugten Benutzers gelangen, kann sich dieser an jedem Server anmelden, den Sie mit dem zugehörigen öffentlichen Schlüssel konfiguriert haben.

Der größte Nachteil des Besitzes einer Passphrase – das Eintippen – kann durch die Verwendung eines ssh-Agenten-Dienstes gemildert werden, der Ihren ungesperrten Schlüssel vorübergehend speichert und dem SSH-Client zugänglich macht. Viele dieser Agenten sind in den systemeigenen Schlüsselbund Ihres Betriebssystems integriert, was den Entsperrungsprozess noch nahtloser macht.

Zusammenfassend sieht der gesamte Prozess der Schlüsselerzeugung wie folgt aus:

ssh-keygen -t ed25519

Der öffentliche Schlüssel befindet sich jetzt in /home/sammy/.ssh/id_ed25519.pub. Der private Schlüssel befindet sich nun in /home/sammy/.ssh/id_ed25519.

Schritt 4 – Kopieren des öffentlichen Schlüssels auf Ihren Server
Sobald das Schlüsselpaar erzeugt ist, ist es an der Zeit, den öffentlichen Schlüssel auf dem Server zu platzieren, mit dem Sie sich verbinden wollen.

Sie können den öffentlichen Schlüssel mit dem Befehl ssh-copy-id in die authorized_keys-Datei des Servers kopieren. Stellen Sie sicher, dass Sie den Beispiel-Benutzernamen und die Adresse ersetzen:

ssh-copy-id [email protected]_server_address

Sobald der Befehl abgeschlossen ist, können Sie sich über SSH beim Server anmelden, ohne dass Sie zur Eingabe eines Passworts aufgefordert werden. Wenn Sie jedoch beim Erstellen Ihres SSH-Schlüssels eine Passphrase festgelegt haben, werden Sie zu diesem Zeitpunkt aufgefordert, die Passphrase einzugeben. Dies ist Ihr lokaler SSH-Client, der Sie auffordert, den privaten Schlüssel zu entschlüsseln, nicht der Remote-Server, der nach einem Passwort fragt.

Schritt 5 – Deaktivieren der kennwortbasierten SSH-Authentifizierung (optional)

Nachdem Sie Ihre SSH-Schlüssel auf den Server kopiert haben, können Sie die Passwortanmeldung vollständig unterbinden, indem Sie den SSH-Server so konfigurieren, dass die passwortbasierte Authentifizierung deaktiviert wird.

Warnung: Bevor Sie die kennwortbasierte Authentifizierung deaktivieren, vergewissern Sie sich, dass Sie sich mit Ihrem SSH-Schlüssel erfolgreich beim Server anmelden können und dass es keine anderen Benutzer auf dem Server gibt, die Kennwörter zur Anmeldung verwenden.

Um die passwortbasierte SSH-Authentifizierung zu deaktivieren, öffnen Sie die SSH-Konfigurationsdatei. Sie befindet sich in der Regel an folgendem Ort:

sudo nano /etc/ssh/sshd_config

Mit diesem Befehl wird die Datei im Texteditor nano geöffnet. Suchen Sie die Zeile in der Datei, die PasswordAuthentication enthält (oder erstellen Sie die Zeile, wenn sie nicht vorhanden ist), stellen Sie sicher, dass sie nicht mit einem # am Anfang der Zeile auskommentiert ist, und ändern Sie sie in no:

/etc/ssh/sshd_config
 PasswordAuthentication no

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Verwenden Sie in nano STRG+O zum Speichern, drücken Sie ENTER, um den Dateinamen zu bestätigen, und dann STRG+X zum Beenden.

Laden Sie den sshd-Dienst neu, um diese Änderungen in Kraft zu setzen:

sudo systemctl reload sshd

Bevor Sie Ihre aktuelle SSH-Sitzung beenden, stellen Sie eine Testverbindung in einem anderen Terminal her, um zu überprüfen, ob Sie noch eine Verbindung herstellen können.

Fazit

In diesem Lernprogramm haben wir ein SSH-Schlüsselpaar erstellt, unseren öffentlichen Schlüssel auf einen Server kopiert und (optional) die kennwortbasierte Authentifizierung vollständig deaktiviert.