SSH Public-Key-Authentifizierung unter Linux konfigurieren

CompTIACompTIABeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einleitung

In diesem Labor lernen Sie, wie Sie die SSH-Public-Key-Authentifizierung konfigurieren und verwenden, um sich sicher mit einem entfernten Linux-Server zu verbinden. Diese Methode erhöht die Sicherheit und den Komfort, indem sie traditionelle passwortbasierte Anmeldungen durch ein kryptografisches Schlüsselpaar ersetzt. Sie erstellen einen privaten Schlüssel, der auf Ihrem lokalen Rechner geheim bleibt, und einen öffentlichen Schlüssel, der auf dem Server platziert 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 Demo-Benutzer zu generieren und mit einer Passphrase eine zusätzliche Sicherheitsebene hinzuzufügen. Als Nächstes kopieren Sie den öffentlichen Schlüssel sicher auf die Datei authorized_keys des entfernten Servers mithilfe des Dienstprogramms ssh-copy-id. Schließlich testen Sie die Konfiguration, indem Sie sich über SSH auf dem Server anmelden, der nun Ihr Schlüsselpaar zur Authentifizierung anstelle eines Passworts verwendet.

Erstellen eines Demo-Benutzers und Generieren eines RSA-Schlüsselpaares

In diesem Schritt erstellen Sie zunächst ein dediziertes Benutzerkonto zur Demonstration der SSH-Public-Key-Authentifizierung und generieren dann ein kryptografisches RSA-Schlüsselpaar. Dieser Ansatz stellt sicher, dass wir eine saubere Umgebung für die Demonstration haben, ohne bestehende Benutzerkonfigurationen zu beeinträchtigen.

Erstellen des Demo-Benutzers

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 Labor password123 als Passwort. Sie können die Eingabetaste drücken, um die optionalen Felder (Vollständiger Name, Raumnummer usw.) zu ü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

Generieren des RSA-Schlüsselpaares

Nun wechseln wir zum Konto sshuser, um das Schlüsselpaar zu generieren. Dies stellt sicher, dass die Schlüssel im Home-Verzeichnis des richtigen Benutzers erstellt werden:

sudo su - sshuser

Sie arbeiten 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

Nachdem Sie den Befehl ausgeführt haben, werden Sie aufgefordert, einen Speicherort für die Schlüssel anzugeben. Der Standard-Speicherort ist ~/.ssh/id_rsa, der sich in einem versteckten Verzeichnis namens .ssh im Home-Verzeichnis des Benutzers befindet. Drücken Sie die Eingabetaste, um diesen Standard-Speicherort 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 wir für dieses Labor sshkey-password als Passphrase. Sie müssen sie zweimal eingeben.

Hinweis: Wenn Sie die Passphrase eingeben, sehen Sie keine Zeichen auf dem Bildschirm. Dies ist eine Standard-Sicherheitsfunktion.

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 nur Lese-/Schreibberechtigungen für den Eigentümer, während der öffentliche Schlüssel id_rsa.pub von anderen gelesen werden kann. Es ist entscheidend, Ihren privaten Schlüssel zu schützen und ihn niemals weiterzugeben.

Kopieren des Public Keys auf den Server mit ssh-copy-id

In diesem Schritt kopieren Sie den in der vorherigen Lektion generierten Public Key auf den SSH-Server. Diese Aktion autorisiert den Schlüssel und ermöglicht Ihnen die Anmeldung mit dem entsprechenden Private Key anstelle eines Passworts. Das Dienstprogramm 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 Labor 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 sich immer noch als sshuser anmelden. Wenn Sie zum Benutzer labex zurückgekehrt sind, wechseln Sie zurück:

sudo su - sshuser

Nun sind Sie bereit, den Public Key zu kopieren. Der Befehl ssh-copy-id nimmt den entfernten Benutzer und Host als Argument. Wir verwenden sshuser@localhost, um den Benutzer sshuser auf der lokalen Maschine (die als Server fungiert) anzugeben.

Führen Sie den Befehl aus:

ssh-copy-id sshuser@localhost

Da dies das erste Mal ist, dass Sie sich über SSH mit localhost verbinden, werden Sie aufgefordert, die Host-Authentizität zu überprüfen. 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 Dienstprogramm scannt dann nach Ihrem id_rsa.pub-Schlüssel und fordert Sie zur Eingabe des Passworts für das Konto sshuser auf. Geben Sie das Passwort password123 ein, das Sie beim Erstellen 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 hängt Ihren Public Key an die Datei ~/.ssh/authorized_keys an.

Zur Bestätigung können Sie den Inhalt der Datei authorized_keys anzeigen. Sie sollte genau denselben Schlüssel wie Ihre Datei id_rsa.pub enthalten.

cat ~/.ssh/authorized_keys

Die Ausgabe ist eine lange Zeichenkette, die Ihren Public Key darstellt.

ssh-rsa AAAA...[long key string]...== sshuser@ubuntu

Testen der SSH-Anmeldung mit Public-Key-Authentifizierung

In diesem letzten Schritt testen Sie die neue Konfiguration, um sicherzustellen, dass die Public-Key-Authentifizierung korrekt funktioniert. Sie werden versuchen, sich mit dem von Ihnen erstellten Schlüsselpaar beim SSH-Server anzumelden. Anstatt nach Ihrem Benutzerpasswort gefragt zu werden, sollten Sie nach der Passphrase gefragt werden, die Sie für Ihren Private Key festgelegt haben.

Stellen Sie sicher, dass Sie sich immer noch als sshuser anmelden:

whoami

Sie sollten sshuser als Ausgabe sehen. Wenn nicht, wechseln Sie zurück zum sshuser-Konto:

sudo su - sshuser

Nun initiieren wir eine SSH-Verbindung zu localhost. Da Sie sich während des Schlüsselkopierprozesses bereits einmal 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 Private Key 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 auf dem 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 Public-Key-Authentifizierung 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 Schlüssel-Passphrase.

Um zu überprüfen, ob Sie sich in einer neuen SSH-Sitzung befinden, können Sie die Umgebung überprü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 die SSH-Public-Key-Authentifizierung erfolgreich konfiguriert und getestet, indem Sie einen dedizierten Demo-Benutzer verwendet haben.

Zusammenfassung

In diesem Labor haben Sie gelernt, wie Sie die SSH-Public-Key-Authentifizierung konfigurieren und verwenden, um eine sichere, passwortlose Verbindung zu einem entfernten Linux-Server herzustellen. Sie haben damit begonnen, einen dedizierten Demo-Benutzer (sshuser) zu erstellen, um eine saubere Umgebung für die schlüsselbasierte Authentifizierung einzurichten. Anschließend haben Sie mit dem Befehl ssh-keygen ein neues RSA-Schlüsselpaar generiert. Dieser Prozess erzeugte einen Private Key, der sicher bleibt und durch eine Passphrase für eine zusätzliche Sicherheitsebene geschützt ist, sowie einen entsprechenden Public Key.

Anschließend haben Sie das Dienstprogramm ssh-copy-id verwendet, um den Public Key sicher in die Datei authorized_keys des Servers zu übertragen. Dieser Befehl hat den Schlüssel automatisch an die Datei ~/.ssh/authorized_keys angehängt und das Schlüsselpaar für den Zugriff autorisiert. Der letzte Schritt bestand darin, die Verbindung zu testen, indem eine SSH-Sitzung zum Server initiiert wurde, die erfolgreich mit der Passphrase des Private Keys anstelle des Passworts des Benutzerkontos authentifiziert wurde, was bestätigte, dass die Public-Key-Authentifizierung korrekt funktionierte.