Wir verwenden in der Regel SSH-Clients wie PuTTY, um Linux-Server remote zu verwalten. Die gängige passwortbasierte Anmeldemethode ist jedoch anfällig für das Problem, dass Passwörter per Brute-Force geknackt werden. Daher legen wir den SSH-Port üblicherweise auf einen anderen Port als den Standardport 22 oder deaktivieren die Anmeldung mit dem root-Konto. Tatsächlich gibt es einen besseren Weg, die Sicherheit zu gewährleisten und sich als root bedenkenlos remote anzumelden – nämlich die schlüsselbasierte Anmeldung.

Das Prinzip der schlüsselbasierten Anmeldung ist: Mit einem Schlüsselgenerator wird ein Schlüsselpaar erzeugt – ein öffentlicher Schlüssel und ein privater Schlüssel. Fügen Sie den öffentlichen Schlüssel einem Konto auf dem Server hinzu, und verwenden Sie dann den privaten Schlüssel auf dem Client, um die Authentifizierung abzuschließen und sich anzumelden. Auf diese Weise kann niemand ohne den privaten Schlüssel Ihr Passwort per SSH per Brute-Force knacken, um sich remote am System anzumelden. Wenn Sie außerdem den öffentlichen Schlüssel auf andere Konten oder sogar Hosts kopieren, können Sie sich ebenfalls mit dem privaten Schlüssel anmelden.

Nachfolgend erklären wir, wie Sie ein Schlüsselpaar auf einem Linux-Server erzeugen, den öffentlichen Schlüssel einem Konto hinzufügen, SSH konfigurieren und sich schließlich über einen Client anmelden.

1. Ein Schlüsselpaar erzeugen

Erzeugen Sie zunächst das Schlüsselpaar auf dem Server. Melden Sie sich zuerst mit Ihrem Passwort bei dem Konto an, das Sie für die Schlüsselanmeldung verwenden möchten, und führen Sie dann den folgenden Befehl aus:

[root@host ~]$ ssh-keygen  <== 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host

Die Schlüssel-Passphrase muss bei Verwendung des privaten Schlüssels eingegeben werden, wodurch der private Schlüssel vor Diebstahl geschützt wird. Natürlich können Sie sie auch leer lassen, um eine passwortlose Anmeldung zu erreichen.

Jetzt wurde im Home-Verzeichnis des root-Benutzers ein verborgenes Verzeichnis namens .ssh erstellt, das zwei Schlüsseldateien enthält. id_rsa ist der private Schlüssel und id_rsa.pub ist der öffentliche Schlüssel.

2. Den öffentlichen Schlüssel auf dem Server installieren

Geben Sie den folgenden Befehl ein, um den öffentlichen Schlüssel auf dem Server zu installieren:

[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys

Damit ist die Installation des öffentlichen Schlüssels abgeschlossen. Um eine erfolgreiche Verbindung sicherzustellen, stellen Sie sicher, dass die folgenden Dateiberechtigungen korrekt sind:

[root@host .ssh]$ chmod 600 authorized_keys
[root@host .ssh]$ chmod 700 ~/.ssh

3. SSH konfigurieren, um die Schlüsselanmeldung zu aktivieren

Bearbeiten Sie die Datei /etc/ssh/sshd_config und nehmen Sie die folgenden Einstellungen vor:

RSAAuthentication yes
PubkeyAuthentication yes

Beachten Sie außerdem, ob sich der Benutzer root über SSH anmelden kann:

PermitRootLogin yes

Nachdem Sie alle Einstellungen abgeschlossen und sich erfolgreich mit einem Schlüssel angemeldet haben, deaktivieren Sie die Passwort-Anmeldung:

PasswordAuthentication no

Starten Sie abschließend den SSH-Dienst neu:

[root@host .ssh]$ service sshd restart

4. Laden Sie den privaten Schlüssel auf den Client herunter und konvertieren Sie ihn in ein Format, das PuTTY verwenden kann

Verwenden Sie Tools wie WinSCP oder SFTP, um die private Schlüsseldatei id_rsa auf den Client-Rechner herunterzuladen. Öffnen Sie dann PuTTYGen, klicken Sie in Actions auf die Schaltfläche Load und laden Sie die gerade heruntergeladene private Schlüsseldatei. Wenn Sie zuvor eine Schlüssel-Passphrase festgelegt haben, müssen Sie sie an dieser Stelle eingeben.

Nach dem erfolgreichen Laden zeigt PuTTYGen schlüsselbezogene Informationen an. Geben Sie in Key comment eine Beschreibung für den Schlüssel ein und klicken Sie dann auf die Schaltfläche Save private key, um die private Schlüsseldatei in einem Format zu speichern, das PuTTY verwenden kann.

Wenn Sie sich künftig mit PuTTY anmelden, können Sie unter Connection -> SSH -> Auth auf der linken Seite bei Private key file for authentication: Ihre private Schlüsseldatei auswählen und sich dann anmelden. Während des Vorgangs müssen Sie nur die Schlüssel-Passphrase eingeben.