Website-Suche

So melden Sie sich mit einem passwortlosen SSH-Schlüssel am Remote-Ubuntu-20.04-Server an


Für diejenigen, die Ubuntu oder einen anderen Linux-Server (z. B. Debian, CentOS und Fedora) remote haben, erfahren Sie hier, wie Sie sich ohne Passwort mithilfe der SSH-Schlüsselauthentifizierung anmelden können.

Im Vergleich zur Benutzerkennwortanmeldung ist die SSH-Schlüsselauthentifizierung sicherer, da nur die Person, die über den Schlüssel verfügt, eine Verbindung herstellen kann und die Schlüssel durch verschiedene Algorithmen gut verschlüsselt sind. Es erleichtert auch die SSH-Verbindung durch Anmeldung ohne Passwort.

1. Aktivieren Sie den SSH-Dienst (auf der Serverseite):

Falls Sie den SSH-Dienst auf dem Remote-Server nicht aktiviert haben. Sie müssen zuerst eine Verbindung zum Server herstellen und den Befehl ausführen, um openssh zu installieren:

sudo apt install openssh-server

Verwenden Sie für CentOS- und Fedora-Server stattdessen den Befehl sudo dnf install openssh-server.

Nach der Installation aktivieren und starten Sie den Dienst über den folgenden Befehl:

sudo systemctl enable ssh && sudo systemctl start ssh

Und schließlich überprüfen Sie den SSH-Dienststatus, indem Sie den folgenden Befehl ausführen:

sudo system status ssh

Wenn Sie sehen, dass der Dienst aktiv ist und ausgeführt wird, können Sie mit dem folgenden Befehl auf dem lokalen Computer eine Remote-Verbindung zum Server über SSH herstellen:

ssh user@server_ip

Ersetzen Sie user und server_ip. Und verwenden Sie -p port_number, um die Portnummer anzugeben, wenn es nicht die Standardnummer 22 ist.

2. Aktivieren Sie die SSH-Schlüsselauthentifizierung (Führen Sie Befehle auf dem lokalen PC aus):

Die Authentifizierungsschlüssel werden auf lokalen Computern generiert. Sie bestehen normalerweise aus einem privaten Schlüssel und einem öffentlichen Schlüssel. Durch Hochladen des öffentlichen Schlüssels auf den Remote-Linux-Server können Sie sich mit dem privaten Schlüssel auf dem lokalen Computer per SSH anmelden.

HINWEIS: Dieses Tutorial wurde auf einem lokalen Ubuntu-Computer getestet, sollte jedoch auf den meisten Linux-Geräten funktionieren, einschließlich Debian, Fedora, CentOS und Arch Linux.

1. Installieren Sie den OpenSSH-Client:

Der OpenSSH-Client wird meist standardmäßig installiert. Falls Sie es nicht haben, führen Sie diesen Befehl auf dem lokalen Computer aus, um es zu installieren:

sudo apt install openssh-client

Verwenden Sie für CentOS und Fedora stattdessen sudo dnf install openssh openssh-clients.

2. SSH-Schlüsselpaar generieren:

Der Befehl ssh-keygen ermöglicht die Generierung eines SSH-Schlüsselpaars über die Algorithmen RSA, ECDSA und ED25519. Während RSA weit verbreitet ist und am besten unterstützt wird, bietet ED25519 eine bessere Sicherheit und gute Leistung.

a.) Erstellen Sie zunächst das Verzeichnis .ssh im Terminalfenster des lokalen Computers und navigieren Sie dorthin:

mkdir -p ~/.ssh && cd ~/.ssh

b.) Als nächstes führen Sie den Befehl aus, um ein Schlüsselpaar zu generieren:

ssh-keygen -t ed25519 -f linode_ed25519 -C "root@linode"

Im Code können Sie „ed25519“ durch Ihren bevorzugten Verschlüsselungsalgorithmus ersetzen. Und „-f linode_ed25519“ gibt den Schlüsselnamen an, „-C „root@linode““ ist der optionale Kommentar.

c.) Aus Sicherheitsgründen wird dringend empfohlen, für andere Benutzer außer Ihnen selbst keine Berechtigung (auch nicht lesbar) festzulegen:

chmod 600 ~/.ssh/linode_ed25519*

Ändern Sie „linode_ed25519“ in den Schlüsselnamen, den Sie im letzten Schritt festgelegt haben. Und am Ende steht ein Sternchen „*“, sodass es auch für die Datei „linode_ed25519.pub“ gilt.

3. Laden Sie den öffentlichen Schlüssel auf den Hostserver hoch (auf dem lokalen PC durchführen):

Laden Sie nun den öffentlichen Schlüssel („linode_ed25519.pub“ in meinem Fall) vom lokalen Computer auf den Remote-Server hoch, indem Sie den folgenden Befehl verwenden:

cd ~/.ssh && ssh-copy-id -i linode_ed25519.pub user@server_ip

Denken Sie nicht daran, „-p Nummer“ hinzuzufügen, wenn der Überwachungsport nicht standardmäßig 22 ist. Und Sie müssen das Remote-Benutzerkennwort eingeben, um den Schlüssel hochzuladen.

Versuchen Sie danach erneut, sich per SSH auf dem lokalen Computer anzumelden. Sie werden nach dem Schlüsselkennwort gefragt, das Sie in b.) festgelegt haben:

ssh user@server_ip

Wenn Sie „Abbrechen“ auswählen, werden Sie stattdessen zur Authentifizierung mit dem Benutzerkennwort aufgefordert.

4. Aktivieren Sie die SSH-Schlüsselanmeldung ohne Passwort (auf dem lokalen PC):

Sie können „Diesen Schlüssel automatisch entsperren, wenn ich angemeldet bin“ ankreuzen und das Passwort im letzten Screenshot nur einmal eingeben. Einige Desktop-Umgebungen bieten diese benutzerfreundliche Funktion jedoch möglicherweise nicht. Daher ist „ssh-agent“, der OpenSSH-Authentifizierungsagent, vorhanden, um die Arbeit für Sie zu erledigen.

Führen Sie zunächst „ssh-agent“ über den Shell-Befehl aus:

eval 'ssh-agent'

Fügen Sie als Nächstes den SSH-Schlüssel zum Agenten hinzu:

ssh-add linode_ed25519

Danach meldet sich der SSH-Befehl an, ohne das Authentifizierungsschlüssel-Passwort einzugeben.

5. Deaktivieren Sie die Anmeldung mit dem SSH-Benutzerkennwort (auf der Serverseite):

Nachdem Sie die Schlüsselauthentifizierung erfolgreich eingerichtet haben, können Sie die Benutzerkennwortanmeldung deaktivieren, sodass niemand anderes auf den Server zugreifen kann!

Stellen Sie zunächst eine Verbindung zum Remote-Server her und führen Sie den Befehl aus, um die SSH-Daemon-Konfigurationsdatei zu bearbeiten:

sudo nano /etc/ssh/sshd_config

Entfernen Sie als Nächstes den Kommentar aus der Zeile „#PasswordAuthentication ja“ und setzen Sie ihren Wert auf „Nein“, sodass Folgendes angezeigt wird:

PasswordAuthentication no

Drücken Sie dann Strg+X, geben Sie y ein und drücken Sie die Eingabetaste, um die Datei zu speichern.

Zum Schluss SSH über neu laden

sudo systemctl reload ssh

Befehlen und genießen!