Einführung
In diesem Lab lernen Sie, wie Sie die SSH-Authentifizierung mittels öffentlichem Schlüssel (Public Key Authentication) konfigurieren und nutzen, um eine sichere Verbindung zu einem entfernten Linux-Server aufzubauen. Diese Methode erhöht sowohl die Sicherheit als auch den Komfort, da die herkömmliche passwortbasierte Anmeldung durch ein kryptografisches Schlüsselpaar ersetzt wird. Sie erstellen einen privaten Schlüssel, der geheim auf Ihrem lokalen Rechner verbleibt, und einen öffentlichen Schlüssel, der auf dem Server hinterlegt wird, um Ihren Zugriff zu autorisieren.
Der Prozess umfasst drei Hauptschritte. Zuerst verwenden Sie den Befehl ssh-keygen, um ein neues RSA-Schlüsselpaar für einen Demonstrationsbenutzer zu generieren, wobei Sie durch ein Passwort (Passphrase) eine zusätzliche Sicherheitsebene hinzufügen. Als Nächstes kopieren Sie den öffentlichen Schlüssel mit dem Werkzeug ssh-copy-id sicher in die Datei der autorisierten Schlüssel auf dem Zielserver. Abschließend testen Sie die Konfiguration, indem Sie sich über SSH am Server anmelden. Dabei wird nun Ihr Schlüsselpaar zur Authentifizierung anstelle eines Passworts verwendet.
Demonstrationsbenutzer erstellen und RSA-Schlüsselpaar generieren
In diesem Schritt erstellen Sie zunächst ein dediziertes Benutzerkonto zur Demonstration der SSH-Authentifizierung und generieren anschließend ein kryptografisches RSA-Schlüsselpaar. Dieser Ansatz stellt sicher, dass wir eine saubere Umgebung für die Demonstration haben, ohne bestehende Benutzerkonfigurationen zu beeinflussen.
Den Demonstrationsbenutzer erstellen
Zuerst erstellen wir einen neuen Benutzer namens sshuser, der für unsere SSH-Demonstration verwendet wird:
sudo adduser sshuser
Sie werden aufgefordert, ein Passwort festzulegen und Benutzerinformationen anzugeben. Verwenden Sie für dieses Lab password123 als Passwort. Die optionalen Felder (Vollständiger Name, Zimmernummer usw.) können Sie durch Drücken der Eingabetaste überspringen.
Adding user `sshuser' ...
Adding new group `sshuser' (1001) ...
Adding new user `sshuser' (1001) with group `sshuser' ...
Creating home directory `/home/sshuser' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for sshuser
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
Das RSA-Schlüsselpaar generieren
Wechseln Sie nun zum Konto sshuser, um das Schlüsselpaar zu generieren. Dies stellt sicher, dass die Schlüssel im korrekten Heimatverzeichnis des Benutzers erstellt werden:
sudo su - sshuser
Sie agieren nun als sshuser. Generieren Sie ein RSA-Schlüsselpaar mit dem Befehl ssh-keygen. Das Flag -t gibt den Typ des zu erstellenden Schlüssels an, in diesem Fall rsa.
ssh-keygen -t rsa
Nach Ausführung des Befehls werden Sie nach einem Speicherort für die Schlüssel gefragt. Der Standardpfad ist ~/.ssh/id_rsa, der sich in einem versteckten Verzeichnis namens .ssh im Heimatverzeichnis des Benutzers befindet. Drücken Sie die Eingabetaste, um diesen Standardpfad zu akzeptieren.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sshuser/.ssh/id_rsa):
Als Nächstes werden Sie aufgefordert, eine Passphrase einzugeben. Eine Passphrase fügt Ihrem privaten Schlüssel eine zusätzliche Sicherheitsebene hinzu. Verwenden Sie für dieses Lab sshkey-password als Passphrase. Sie müssen diese zweimal eingeben.
Hinweis: Wenn Sie die Passphrase eingeben, werden keine Zeichen auf dem Bildschirm angezeigt. Dies ist ein standardmäßiges Sicherheitsmerkmal.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sshuser/.ssh/id_rsa
Your public key has been saved in /home/sshuser/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:<FINGERPRINT_STRING> sshuser@ubuntu
The key's randomart image is:
+---[RSA 3072]----+
| .. . .o.. |
| . . . o.. |
| . . = . . |
| . B o . |
| S= * . |
| o*B o . |
| .oO=B . . |
| .o+*+oE. . |
| .o*o=o.o. |
+----[SHA256]-----+
Nachdem die Schlüssel generiert wurden, können Sie überprüfen, ob die Dateien korrekt erstellt wurden. Verwenden Sie den Befehl ls -l, um den Inhalt des Verzeichnisses ~/.ssh aufzulisten:
ls -l ~/.ssh
Sie sollten eine Ausgabe ähnlich der folgenden sehen, die Ihre neuen Schlüsseldateien anzeigt:
total 8
-rw------- 1 sshuser sshuser 2610 Jun 30 10:30 id_rsa
-rw-r--r-- 1 sshuser sshuser 575 Jun 30 10:30 id_rsa.pub
Beachten Sie die Dateiberechtigungen. Der private Schlüssel id_rsa hat Lese- und Schreibrechte nur für den Eigentümer, während der öffentliche Schlüssel id_rsa.pub auch von anderen gelesen werden kann. Es ist von entscheidender Bedeutung, Ihren privaten Schlüssel zu schützen und ihn niemals weiterzugeben.
Den öffentlichen Schlüssel mit ssh-copy-id auf den Server kopieren
In diesem Schritt kopieren Sie den im vorherigen Schritt generierten öffentlichen Schlüssel auf den SSH-Server. Dieser Vorgang autorisiert den Schlüssel und ermöglicht es Ihnen, sich mit dem entsprechenden privaten Schlüssel anstelle eines Passworts anzumelden. Das Hilfsprogramm ssh-copy-id ist ein Skript, das diesen Prozess vereinfacht, indem es Ihren Schlüssel an der richtigen Stelle auf dem Server installiert.
Für dieses Lab simulieren wir eine Client-Server-Interaktion auf einer einzigen Maschine. Das Konto sshuser fungiert sowohl als Client als auch als Zielkonto für die SSH-Verbindung.
Stellen Sie sicher, dass Sie immer noch als Benutzer sshuser angemeldet sind. Falls Sie zum Benutzer labex zurückgekehrt sind, wechseln Sie wieder zurück:
sudo su - sshuser
Jetzt sind Sie bereit, den öffentlichen Schlüssel zu kopieren. Der Befehl ssh-copy-id erwartet den entfernten Benutzer und den Host als Argument. Wir verwenden sshuser@localhost, um den Benutzer sshuser auf dem lokalen Rechner (der als Server fungiert) anzugeben.
Führen Sie den Befehl aus:
ssh-copy-id sshuser@localhost
Da dies die erste Verbindung zu localhost über SSH ist, werden Sie aufgefordert, die Authentizität des Hosts zu bestätigen. Geben Sie yes ein, um fortzufahren:
The authenticity of host 'localhost (::1)' can't be established.
ED25519 key fingerprint is SHA256:<FINGERPRINT_STRING>.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Das Programm sucht dann nach Ihrem Schlüssel id_rsa.pub und fordert Sie zur Eingabe des Passworts für das Konto sshuser auf. Geben Sie das Passwort password123 ein, das Sie bei der Erstellung des Benutzers festgelegt haben.
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sshuser@localhost's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'sshuser@localhost'"
and check to make sure that only the key(s) you wanted were added.
Die Ausgabe bestätigt, dass ein Schlüssel erfolgreich hinzugefügt wurde. Der Befehl ssh-copy-id erstellt automatisch das Verzeichnis ~/.ssh auf dem Server, falls es noch nicht existiert, und fügt Ihren öffentlichen Schlüssel der Datei ~/.ssh/authorized_keys hinzu.
Um dies zu bestätigen, können Sie den Inhalt der Datei authorized_keys anzeigen. Sie sollte exakt denselben Schlüssel enthalten wie Ihre Datei id_rsa.pub.
cat ~/.ssh/authorized_keys
Die Ausgabe ist eine lange Zeichenfolge, die Ihren öffentlichen Schlüssel darstellt.
ssh-rsa AAAA...[lange Schlüsselzeichenfolge]...== sshuser@ubuntu
SSH-Anmeldung mit Authentifizierung über öffentlichen Schlüssel testen
In diesem letzten Schritt testen Sie die neue Konfiguration, um sicherzustellen, dass die Authentifizierung über den öffentlichen Schlüssel korrekt funktioniert. Sie versuchen, sich mit dem von Ihnen erstellten Schlüsselpaar am SSH-Server anzumelden. Anstatt nach Ihrem Benutzerpasswort gefragt zu werden, sollten Sie nun zur Eingabe der Passphrase für Ihren privaten Schlüssel aufgefordert werden.
Stellen Sie sicher, dass Sie immer noch als Benutzer sshuser agieren:
whoami
Die Ausgabe sollte sshuser lauten. Wenn nicht, wechseln Sie zurück zum Konto sshuser:
sudo su - sshuser
Lassen Sie uns nun eine SSH-Verbindung zu localhost initiieren. Da Sie sich bereits einmal während des Kopiervorgangs des Schlüssels verbunden haben, sollte der Host-Schlüssel bereits akzeptiert sein.
Führen Sie den folgenden Befehl aus, um die Verbindung herzustellen:
ssh sshuser@localhost
Sie werden aufgefordert, die Passphrase für Ihren privaten Schlüssel einzugeben. Dies ist die Passphrase, die Sie in Schritt 1 erstellt haben (sshkey-password).
Enter passphrase for key '/home/sshuser/.ssh/id_rsa':
Geben Sie Ihre Passphrase sshkey-password ein und drücken Sie die Eingabetaste. Wenn Sie sie korrekt eingegeben haben, werden Sie am Server angemeldet und sehen eine Willkommensnachricht.
Welcome to Ubuntu 22.04.x LTS (GNU/Linux x.x.x-xx-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Last login: Mon Jun 30 10:45:23 2024 from ::1
sshuser@ubuntu:~$
Herzlichen Glückwunsch! Sie haben sich erfolgreich mit der Authentifizierung über einen öffentlichen Schlüssel angemeldet. Sie befinden sich nun in einer neuen SSH-Sitzung. Beachten Sie, dass Sie nicht nach dem Passwort des Benutzerkontos (password123) gefragt wurden, sondern nur nach der Passphrase des Schlüssels.
Um zu überprüfen, ob Sie sich in einer neuen SSH-Sitzung befinden, können Sie die Umgebung prüfen:
echo $SSH_CONNECTION
Dies sollte Verbindungsdetails anzeigen und bestätigen, dass Sie sich in einer SSH-Sitzung befinden.
Um die SSH-Sitzung zu beenden und zu Ihrem ursprünglichen Terminal zurückzukehren, geben Sie einfach exit ein und drücken Sie die Eingabetaste.
exit
Sie sehen eine Meldung, die bestätigt, dass die Verbindung geschlossen wurde.
logout
Connection to localhost closed.
Schließlich können Sie das Konto sshuser verlassen, um zum Benutzer labex zurückzukehren:
exit
Sie haben nun erfolgreich die SSH-Authentifizierung mit öffentlichem Schlüssel unter Verwendung eines dedizierten Demonstrationsbenutzers konfiguriert und getestet.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie die SSH-Authentifizierung mit öffentlichem Schlüssel konfigurieren und verwenden, um eine sichere, passwortlose Verbindung zu einem entfernten Linux-Server herzustellen. Sie begannen mit der Erstellung eines dedizierten Demonstrationsbenutzers (sshuser), um eine saubere Umgebung für die schlüsselbasierte Authentifizierung zu gewährleisten. Anschließend generierten Sie mit dem Befehl ssh-keygen ein neues RSA-Schlüsselpaar. Dieser Prozess erstellte einen privaten Schlüssel, der sicher aufbewahrt und durch eine Passphrase zusätzlich geschützt wird, sowie einen entsprechenden öffentlichen Schlüssel.
Danach nutzten Sie das Werkzeug ssh-copy-id, um den öffentlichen Schlüssel sicher in die Datei der autorisierten Schlüssel auf dem Server zu übertragen. Dieser Befehl fügte den Schlüssel automatisch der Datei ~/.ssh/authorized_keys hinzu und autorisierte damit das Schlüsselpaar für den Zugriff. Der letzte Schritt bestand darin, die Verbindung durch Initiieren einer SSH-Sitzung zum Server zu testen. Die Authentifizierung erfolgte erfolgreich über die Passphrase des privaten Schlüssels anstelle des Benutzerpassworts, was bestätigte, dass die Authentifizierung über den öffentlichen Schlüssel korrekt funktioniert.



