Sichere Shell , allgemein bekannt als SSH , ist ein sicheres Netzwerkprotokoll, mit dem Benutzer eine sichere Verbindung zu entfernten Hosts wie Servern herstellen können. Es basiert auf einer Client-Server-Architektur und verwendet zwei Hauptauthentifizierungsmethoden – Passwort und ssh-key Pair-Authentifizierung.
Der SSH-Schlüssel Die Paarauthentifizierung verwendet SSH-Schlüssel, bei denen es sich um kryptografische Schlüssel handelt, die zur Authentifizierung und Sicherung der Kommunikation zwischen dem Client und dem Server verwendet werden. Die SSH-Schlüsselpaarauthentifizierung wird der Passwortauthentifizierung vorgezogen, da sie eine sicherere Authentifizierung bietet, die nicht anfällig für Brute-Force-Angriffe ist.
In diesem Tutorial veranschaulichen wir, wie Sie SSH-Schlüssel auf AlmaLinux einrichten können .
Erstellen eines RSA-SSH-Schlüsselpaars in AlmaLinux
Um die Show zu starten, erstellen wir eine RSA Schlüsselpaar, das aus einem öffentlichen und einem privaten Schlüssel besteht. Wir werden diese Schlüssel später in der Anleitung entmystifizieren. Führen Sie zum Erstellen des Schlüsselpaars den folgenden Befehl aus:
$ ssh-keygen OR $ ssh-keygen -t rsa
Die obigen Befehle erzeugen ein 2048 -Bit-RSA-Schlüsselpaar, das als gut genug angesehen wird, um eine anständige Verschlüsselung für eine sichere Kommunikation zu bieten. Sie können jedoch einen 4096 erstellen -Bit-Schlüsselpaar, das robuster ist und eine bessere Verschlüsselung bietet.
Übergeben Sie dazu einfach das -b
Flagge. Genau das werden wir tun.
$ ssh-keygen -b 4096
Direkt nachdem Sie ENTER gedrückt haben , werden Sie aufgefordert, den Pfad anzugeben, in dem die Schlüssel gespeichert werden. Standardmäßig ist dies ~/.ssh Verzeichnis. Wenn Sie es nicht in einen anderen Pfad ändern müssen, wechseln Sie einfach zum Standardverzeichnis, indem Sie ENTER drücken .
Danach müssen Sie eine Passphrase oder ein Passwort eingeben. Obwohl optional, fügt dies eine zusätzliche Schutzebene bei der Authentifizierung hinzu.
Dies ist jedoch einschränkend, wenn Sie eine kennwortlose SSH-Key-Authentifizierung für einen Remote-Host konfigurieren möchten. Wenn dies Ihr Ziel ist, dann drücken Sie einfach „ENTER ’, um die Schlüsselphrase zu überspringen.
Hier ist die gesamte Ausgabe des Befehls.
An diesem Punkt sollten Ihre Schlüssel in ~/.ssh gespeichert sein Verzeichnis, das ein verstecktes Verzeichnis in Ihrem Home-Verzeichnis ist. Um dies zu bestätigen, führen Sie den folgenden Befehl aus:
$ ls -la ~/.ssh
Ein paar zu beachtende Punkte:
- Die id_rsa ist der private Schlüssel. Wie der Name schon sagt, sollte dies äußerst vertraulich behandelt und niemals preisgegeben oder weitergegeben werden. Ein Angreifer kann Ihren Remote-Host leicht kompromittieren, sobald er in den Besitz des privaten Schlüssels gelangt ist.
- Die id_rsa.pub ist der öffentliche Schlüssel, der problemlos weitergegeben werden kann. Sie können es auf jedem Remote-Host speichern, mit dem Sie sich verbinden möchten.
Kopieren Sie den öffentlichen SSH-Schlüssel auf den Remote-Linux-Server
Der nächste Schritt besteht darin, den öffentlichen Schlüssel auf den entfernten Server oder Host zu kopieren oder zu übertragen. Sie können dies manuell tun, aber die ssh-copy-id Mit dem Befehl können Sie dies ganz einfach tun.
Die ssh-copy-id Befehl hat die folgende Syntax:
$ ssh-copy-id user@remote-host-ip-address
In unserem Setup haben wir einen Remote-Host mit der IP 172.105.135.246 und einen konfigurierten Remote-Benutzer namens jack .
Um den öffentlichen SSH-Schlüssel zu kopieren, führen wir den folgenden Befehl aus:
$ ssh-copy-id [email protected]
Wenn Sie sich zum ersten Mal mit dem Host verbinden, erhalten Sie die unten gezeigte Ausgabe. Um mit der Authentifizierung fortzufahren, geben Sie „yes“ ein und drücken Sie ENTER um fortzufahren.
Sobald Sie das Passwort eingegeben haben, drücken Sie „ENTER ‘ Der öffentliche Schlüssel wird in der authorized_file abgelegt Datei in der ~/.ssh Verzeichnis auf dem entfernten Host.
Auf Ihrem lokalen System die known_hosts Datei wird im ~/.ssh erstellt Verzeichnis. Die Datei enthält die SSH-Fingerabdrücke für entfernte Hosts, mit denen Sie sich verbunden haben.
$ ls -la ~/.ssh
Sie können es wie folgt anzeigen.
$ cat ~/.ssh/known_hosts
Passwortlose SSH-Anmeldung bei Remote-Linux
Da der öffentliche Schlüssel jetzt auf dem Remote-Host gespeichert ist, können wir uns jetzt ohne SSH-Passwortauthentifizierung beim Remote-Host anmelden. Um dies zu testen, werden wir versuchen, uns normal beim Remote-Host anzumelden.
$ ssh [email protected]
Aus der Ausgabe können Sie sehen, dass wir sofort zur Shell des Remote-Systems gewechselt sind. Dies bestätigt, dass wir SSH erfolgreich konfiguriert haben Passwortlose Authentifizierung.
Bestätigen Sie nun, dass der öffentliche Schlüssel in den authorized_keys gespeichert ist Datei auf dem entfernten Host.
$ ls -la ~/.ssh/
Um die Datei anzuzeigen, verwenden Sie den cat-Befehl wie folgt.
$ cat ~/.ssh/authorized_keys
SSH-Passwortauthentifizierung deaktivieren
Wir sind noch nicht fertig, die Passwort-Authentifizierung ist immer noch aktiviert und dies kann den Remote-Server oder Host möglicherweise Brute-Force-Angriffen aussetzen.
Um diesen Angriffsvektor zu eliminieren, wird dringend empfohlen, die Passwortauthentifizierung zu deaktivieren. Dadurch wird sichergestellt, dass die Anmeldung nur über ein SSH-Schlüsselpaar möglich ist. Öffnen Sie dazu die sshd_config Datei, die die Haupt-SSH-Konfigurationsdatei ist.
$ sudo vim /etc/ssh/sshd_config
Suchen Sie die 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.
Starten Sie dann SSH neu, um die vorgenommenen Änderungen zu übernehmen.
$ sudo systemctl restart sshd
Dadurch wird die Kennwortauthentifizierung erfolgreich deaktiviert und nur Benutzer mit dem privaten SSH-Schlüssel können sich anmelden.
Zu diesem Zeitpunkt wurde die SSH-Passwortauthentifizierung auf dem Remote-Server deaktiviert und der Zugriff auf den Remote-Server kann nur über Public-Key erfolgen Authentifizierung.
Wir haben es geschafft, SSH-Schlüssel auf Almalinux einzurichten und konfigurierte sogar die passwortlose SSH-Authentifizierung mit einem SSH-Schlüsselpaar. Außerdem haben wir die Passwortauthentifizierung deaktiviert, um Brute-Force-Angriffe abzuwehren.