Einführung
Sichere Shell (SSH ) ist ein verschlüsseltes Protokoll, das von Linux-Benutzern verwendet wird, um sich mit ihren Remote-Servern zu verbinden.
Im Allgemeinen gibt es zwei Möglichkeiten für Clients, auf ihre Server zuzugreifen – über eine passwortbasierte Authentifizierung oder eine auf einem öffentlichen Schlüssel basierende Authentifizierung.
Die Verwendung von SSH-Schlüsseln zur Authentifizierung wird als sicherere Alternative zu Passwörtern dringend empfohlen.
Dieses Tutorial führt Sie durch die Schritte zum Generieren und Einrichten von SSH-Schlüsseln unter CentOS 7. Wir behandeln auch das Herstellen einer Verbindung zu einem Remote-Server mithilfe der Schlüssel und das Deaktivieren der Kennwortauthentifizierung .
Bevor Sie beginnen
1. Auf vorhandene Schlüssel prüfen
Vor jeder Installation ist es ratsam zu prüfen, ob auf den Client-Rechnern irgendwelche Schlüssel vorhanden sind.
Öffnen Sie das Terminal und listen Sie alle gespeicherten öffentlichen Schlüssel mit dem folgenden Befehl auf:
ls -l ~/.ssh/id_*.pub
Die Ausgabe informiert Sie über alle generierten Schlüssel, die sich derzeit auf dem System befinden. Wenn keine vorhanden sind, teilt Ihnen die Meldung mit, dass auf /.ssh/id_*.pub
nicht zugegriffen werden kann , da es keine solche Datei oder kein Verzeichnis gibt.
2. Überprüfen Sie, ob SSH installiert ist
Um zu überprüfen, ob das Paket installiert ist, führen Sie den folgenden Befehl aus:
ssh -V
Wenn Sie bereits SSH haben, zeigt Ihnen die Ausgabe, welche Version ausgeführt wird. Derzeit ist die neueste Version OpenSSH 8.0/8.0p1 .
Schritte zum Erstellen von SSH-Schlüsseln auf CentOS
Schritt 1:SSH-Schlüsselpaar erstellen
1. Melden Sie sich zunächst beim Quellcomputer (lokaler Server) an und erstellen Sie ein 2048-Bit-RSA-Schlüsselpaar mit dem Befehl:
ssh-keygen -t rsa
Wenn Sie die Sicherheitsmaßnahmen verschärfen möchten, können Sie einen 4096-Bit-Schlüssel erstellen durch Hinzufügen des Flags -b 4096:
ssh-keygen -t rsa -b 4096
2. Nach Eingabe des Befehls sollten Sie die folgende Eingabeaufforderung sehen:
Generating public/private rsa key pair.
Enter file in which to save the key (home/your_username/.ssh/id_rsa):
3. Um die Datei im vorgeschlagenen Verzeichnis zu speichern, drücken Sie Enter . Alternativ können Sie einen anderen Speicherort angeben.
4. Als nächstes wird die Eingabeaufforderung fortgesetzt mit:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Obwohl das Erstellen einer Passphrase nicht obligatorisch ist, wird es dringend empfohlen.
5. Schließlich endet die Ausgabe mit der Angabe der folgenden Informationen:
Your identification has been saved in home/your_username/.ssh/id_rsa.
Your public key has been saved in home/your_username/.ssh/id_rsa.pub.
The key fingerprint is:
KYg355:gKotTeU5NQ-5m296q55Ji57F8iO6c0K6GUr5:PO1iRk
[email protected]
The key's randomart image is:
+------[RSA 3072]-------+
| .oo. |
| +o+. |
| + +.+ |
| o + S . |
| . E . . =.o|
| . + . [email protected]|
| + . oo*=O|
| oo . .+o+|
| o=ooo=|
+------ [SHA256] ------+
Jetzt müssen Sie den öffentlichen Schlüssel zum Remote-CentOS-Server hinzufügen.
Schritt 2:Kopieren Sie den öffentlichen Schlüssel auf den CentOS-Server
Sie können den öffentlichen SSH-Schlüssel mithilfe verschiedener Methoden auf den Remote-Server kopieren:
- mit dem Skript ssh-copy-id
- mit Secure Copy (scp)
- Schlüssel manuell kopieren
Die schnellste und einfachste Methode ist die Verwendung von ssh-copy-id
. Wenn die Option verfügbar ist, empfehlen wir, sie zu verwenden. Probieren Sie andernfalls einen der beiden anderen angegebenen aus.
Öffentlichen Schlüssel mit ssh-copy-id kopieren
1. Beginnen Sie mit der Eingabe des folgenden Befehls und geben Sie das SSH-Benutzerkonto und die IP-Adresse des Remote-Hosts an:
ssh-copy-id [email protected]_host
Wenn Ihr lokaler Computer zum ersten Mal auf diesen bestimmten Remote-Server zugreift, erhalten Sie die folgende Ausgabe:
The authenticity of host '104.0.316.1 (104.0.316.1)' can't be established.
ECDSA key fingerprint is KYg355:gKotTeU5NQ-5m296q55Ji57F8iO6c0K6GUr5:PO1iRk.
Are you sure you want to continue connecting (yes/no)? yes
2. Bestätigen Sie die Verbindung – geben Sie yes ein und drücken Sie Enter .
3. Sobald es den Schlüssel id_rsa.pub key
gefunden hat auf dem lokalen Computer erstellt wurde, werden Sie aufgefordert, das Kennwort für das Remote-Konto anzugeben. Geben Sie das Passwort ein und drücken Sie Enter .
4. Sobald die Verbindung hergestellt wurde, fügt es den öffentlichen Schlüssel auf dem Remote-Server hinzu. Kopieren Sie dazu die Datei ~/.ssh/id_rsa.pub
Datei in ~/.ssh
des Remote-Servers Verzeichnis. Sie finden es unter dem Namen authorized_keys
.
5. Zuletzt teilt Ihnen die Ausgabe die Anzahl der hinzugefügten Schlüssel mit, zusammen mit klaren Anweisungen, was als nächstes zu tun ist:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
Öffentlichen Schlüssel mit Secure Copy kopieren
1. Richten Sie zunächst eine SSH-Verbindung mit dem Remote-Benutzer ein:
ssh [email protected]_host
2. Als nächstes erstellen Sie ~/.ssh
Verzeichnis sowie die authorized_keys
Datei:
mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys
3. Verwenden Sie chmod Befehl zum Ändern der Dateiberechtigung:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
chmod 700
macht die Datei ausführbar , während chmod 600
ermöglicht dem Benutzer das Lesen und Schreiben die Datei.
4. Öffnen Sie nun eine neue Terminalsitzung auf dem lokalen Computer.
5. Kopieren Sie den Inhalt von id_rsa.pub key
(der öffentliche SSH-Schlüssel) zu den zuvor erstellten authorized_keys
Datei auf dem Remote-CentOS-Server, indem Sie den folgenden Befehl eingeben:
scp ~/.ssh/id_rsa.pub [email protected]_host:~/.ssh/authorized_keys
Damit ist der öffentliche Schlüssel sicher auf dem entfernten Konto gespeichert.
Kopieren Sie den öffentlichen Schlüssel manuell
1. Um den öffentlichen SSH-Schlüssel manuell zum Remote-Computer hinzuzufügen, müssen Sie zuerst den Inhalt von ~/.ssh/id_rsa.pub
öffnen Datei:
cat ~/.ssh/id_rsa.pub
2. Wie in der Abbildung unten beginnt der Schlüssel mit ssh-rsa und endet mit dem Benutzernamen des lokalen Computers und dem Hostnamen des Remote-Computers:
3. Kopieren Sie den Inhalt der Datei, da Sie ihn später benötigen.
4. Verbinden Sie sich dann im Terminalfenster mit dem entfernten Server, auf den Sie den öffentlichen Schlüssel kopieren möchten. Verwenden Sie den folgenden Befehl, um die Verbindung herzustellen:
ssh [email protected]_host
5. Erstellen Sie ein ~/.ssh-Verzeichnis und authorized_keys Datei auf dem CentOS-Server mit folgendem Befehl:
mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys
6. Ändern Sie ihre Dateiberechtigung, indem Sie Folgendes eingeben:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
7. Als nächstes öffnen Sie authorized_keys
Datei mit einem Editor Ihrer Wahl. Um es beispielsweise mit Nano zu öffnen, geben Sie Folgendes ein:
nano authorized_keys
8. Fügen Sie den zuvor in Schritt 2 kopierten öffentlichen Schlüssel hinzu dieses Abschnitts in einer neuen Zeile (unter dem bestehenden Inhalt).
9. Speichern Sie die Änderungen und schließen Sie die Datei.
10. Melden Sie sich schließlich beim Server an, um zu überprüfen, ob alles richtig eingerichtet ist.
Schritt 3:Mit SSH-Schlüsseln Verbindung zum Remote-Server herstellen
Sobald Sie die vorherigen Schritte abgeschlossen haben (Erstellen eines RSA-Schlüsselpaars und Kopieren des öffentlichen Schlüssels auf den CentOS-Server), können Sie sich mit dem Remote-Host verbinden, ohne das Passwort für das Remote-Konto einzugeben.
Sie müssen lediglich den folgenden Befehl eingeben:
ssh [email protected]_host
Wenn Sie beim Erstellen des SSH-Schlüsselpaars keine Passphrase angegeben haben, werden Sie automatisch beim Remote-Server angemeldet.
Geben Sie andernfalls die Passphrase ein, die Sie in den ersten Schritten angegeben haben, und drücken Sie die Eingabetaste .
Sobald die Shell die Schlüsselübereinstimmung bestätigt, öffnet sie eine neue Sitzung für die direkte Kommunikation mit dem Server.
Schritt 4:Passwort-Authentifizierung deaktivieren
Obwohl Sie es geschafft haben, auf den CentOS-Server zuzugreifen, ohne ein Passwort angeben zu müssen, läuft auf dem Computer immer noch ein passwortbasiertes Authentifizierungssystem. Dies macht es zu einem potenziellen Ziel für Brute-Force-Angriffe.
Sie sollten die Passwortauthentifizierung vollständig deaktivieren, indem Sie die beschriebenen Schritte befolgen.
1. Melden Sie sich mit den SSH-Schlüsseln beim Remote-CentOS-Server an, der über Administratorrechte verfügt:
ssh [email protected]_host
2. Öffnen Sie als Nächstes die Konfigurationsdatei des SSH-Daemons mit einem Texteditor Ihrer Wahl:
sudo nano /etc/ssh/sshd_config
3. Suchen Sie in der Datei nach folgender Zeile:
PasswordAuthentication yes
4. Bearbeiten Sie die Konfiguration, indem Sie yes
ändern Wert auf no
. Daher sollte die Direktive wie folgt lauten:
PasswordAuthentication no
5. Speichern Sie die Datei und beenden Sie den Texteditor.
6. Um die Änderungen zu aktivieren, starten Sie sshd neu Dienst mit dem Befehl:
sudo systemctl restart sshd.service
7. Stellen Sie sicher, dass die SSH-Verbindung zum Server noch ordnungsgemäß funktioniert. Öffnen Sie ein neues Terminalfenster und geben Sie den Befehl ein:
ssh [email protected]_host