SSH Schlüssel sind kryptografische Schlüssel, die zum Authentifizieren und Sichern des Datenverkehrs oder der Kommunikation zwischen zwei Servern oder Systemen verwendet werden. Sie bieten eine sicherere Authentifizierungsmethode im Gegensatz zur herkömmlichen Passwortauthentifizierung, die anfällig für Brute-Force-Angriffe ist.
In diesem Tutorial führen wir Sie durch die Einrichtung von SSH-Schlüsseln unter Rocky Linux .
Erstellen Sie ein RSA-SSH-Schlüsselpaar in Rocky Linux
Beginnen Sie mit der Erstellung einer RSA Schlüsselpaar auf unserem lokalen System führen Sie den folgenden Befehl aus:
$ ssh-keygen OR $ ssh-keygen -t rsa
Standardmäßig wird dadurch eine 2048-Bit-RSA erstellt Schlüsselpaar, das als sicher genug angesehen wird, um den Datenverkehr zwischen dem Client und dem Remote-Host zu verschlüsseln.
Optional können Sie eine 4096-Bit-Datei erstellen Schlüsselpaar, das größer und sicherer ist, indem Sie den -b
übergeben Option wie folgt:
$ ssh-keygen -b 4096
Nach dem Ausführen von ssh-keygen Befehl, folgt eine Reihe von Eingabeaufforderungen. Zunächst müssen Sie die Datei angeben, in der die Schlüssel gespeichert werden. Standardmäßig werden die Schlüssel im ~/.ssh
gespeichert Verzeichnis in Ihrem Home-Verzeichnis. Sie können Ihre benutzerdefinierte Datei definieren, aber in dieser Abbildung verwenden wir die Standardwerte
Drücken Sie also ENTER um die Schlüssel in ~/.ssh
zu speichern Verzeichnis in Ihrem Home-Verzeichnis.

Wenn bereits SSH-Schlüssel vorhanden sind, erhalten Sie die folgende Aufforderung und Sie werden aufgefordert, sie zu überschreiben. Hier ist Vorsicht geboten. Das Überschreiben der Schlüssel bedeutet, dass eine Authentifizierung mit den vorherigen Schlüsseln nicht möglich ist. Wählen Sie „Ja“ zerstört die aktuellen Schlüssel und generiert neue.

Als nächstes werden Sie dann nach einer Passphrase gefragt. Dies ist ein optionaler Schritt und bietet eine zusätzliche Schutzebene, um unbefugte Benutzer daran zu hindern, die Schlüssel zur Authentifizierung zu verwenden. Sie können dieses Feld jedoch leer lassen, wenn Sie die passwortlose SSH-Authentifizierung zwischen Ihrem lokalen System und anderen Remote-Hosts konfigurieren möchten.
Wir lassen dies vorerst leer und drücken ENTER .

Schließlich wird das SSH-Schlüsselpaar (public und privat Schlüssel) werden auf Ihrem lokalen System unter dem angegebenen Pfad gespeichert. Dies ist die Ausgabe, die nach erfolgreicher Befehlsausführung generiert wird.

Mit den Standardoptionen wird die SSH Schlüssel werden in ~/.ssh
gespeichert Verzeichnis in Ihrem Home-Verzeichnis. Um dies zu bestätigen, führen Sie den folgenden Befehl aus:
$ ls -la ~/.ssh

- Die id_rsa ist der private Schlüssel und sollte geheim und vertraulich behandelt werden. Die Weitergabe kann zu einem ernsthaften Angriff auf Ihren Remote-Server führen.
- Die id_rsa.pub ist der öffentliche Schlüssel und wird auf dem Remote-Host gespeichert, mit dem Sie sich verbinden möchten.
Mit SSH Schlüssel erfolgreich erstellt, ist der nächste Schritt das Speichern der Öffentlichkeit Schlüssel zum Remote-System bereit zur Authentifizierung.
Kopieren Sie den öffentlichen SSH-Schlüssel auf den Remote-Linux-Server
Die ssh-copy-id Der Befehl bietet eine einfache und bequeme Möglichkeit, den öffentlichen SSH-Schlüssel auf einen Remote-Host zu kopieren. Es nimmt die folgende Syntax an:
$ ssh-copy-id user@remote-host-ip-address
Wir haben ein Remote-System mit einem regulären Benutzer namens bob bereits konfiguriert. Führen Sie den folgenden Befehl aus, um den öffentlichen SSH-Schlüssel zu kopieren:
$ ssh-copy-id [email protected]
Wenn Sie sich zum ersten Mal mit dem Host verbinden, sehen Sie die folgende Ausgabe. Um fortzufahren, geben Sie ‘yes’
ein und drücken Sie ENTER, um fortzufahren.

Der Befehl durchsucht Ihr lokales System nach dem öffentlichen Schlüssel id_rsa.pub und sobald es seine Präsenz hergestellt hat, fordert es Sie zur Eingabe des Passworts des entfernten Benutzers auf.

Geben Sie das Passwort ein und drücken Sie ENTER . Der öffentliche Schlüssel wird auf dem entfernten Host in ~/.ssh/authorized_keys
kopiert Datei. Wir kommen später darauf zurück.

Auf Ihrem lokalen System die Datei ~/.ssh/known_hosts
Datei erstellt wird. Dies ist eine Datei, die die SSH-Fingerabdrücke für entfernte Hosts enthält, mit denen Sie sich verbunden haben.
Um die Datei anzuzeigen, führen Sie einfach den folgenden Befehl aus:
$ cat ~/.ssh/known_hosts

Passwortlose Verbindung zu Remote-Linux
An diesem Punkt sollten Sie sich ohne Passwort beim Remote-Host anmelden können. Um es auszuprobieren, melden Sie sich ganz normal an.
$ ssh [email protected]
Diesmal werden Sie sofort zur Shell des Remote-Hosts weitergeleitet.

Wie bereits erwähnt, wird der öffentliche Schlüssel in den authorized_keys gespeichert Datei auf dem Remote-Host. Sie können dies wie gezeigt bestätigen.
$ ls -la ~/.ssh/
Um die Datei anzuzeigen, verwenden Sie den cat-Befehl wie folgt.
$ cat ~/.ssh/authorized_keys

SSH-Passwortauthentifizierung deaktivieren
Die SSH Die Public-Key-Authentifizierung wurde erfolgreich eingerichtet. Die Passwort-Authentifizierung ist jedoch immer noch aktiv, was Ihren Remote-Host anfällig für Brute-Force-Angriffe macht.
Daher wird dringend empfohlen, die Passwortauthentifizierung zu deaktivieren. Melden Sie sich jetzt entweder mit dem Root- oder dem Sudo-Benutzer wieder beim Remote-Host an. Öffnen Sie dann die sshd_config Konfigurationsdatei.
$ sudo vim /etc/ssh/sshd_config
Scrollen Sie nach unten und suchen Sie PasswordAuthentication Richtlinie. Wenn es auskommentiert ist, kommentieren Sie es aus und setzen Sie es auf 'no'
.
PasswordAuthentication no
Speichern Sie die Änderungen und beenden Sie die Datei.
Um die vorgenommenen Änderungen zu übernehmen, starten Sie sshd neu Daemon wie gezeigt.
$ sudo systemctl restart sshd
Zu diesem Zeitpunkt wurde die SSH-Passwort-Authentifizierung auf dem Remote-Server deaktiviert und der Zugriff auf den Remote-Server kann nur über die Public-Key-Authentifizierung erfolgen.
Wir haben SSH erfolgreich konfiguriert schlüsselbasierte Authentifizierung auf dem Remote-Host, mit der Sie sich ohne Passwort anmelden können. Dies ist die sicherste Art, sich bei entfernten Hosts anzumelden, vorausgesetzt, der private Schlüssel bleibt vertraulich und geheim.