So aktivieren Sie passwortlose SSH-Anmeldungen unter Linux

Ssh Passwordless Linux 00 Featured Image

Es ist eine ausgezeichnete Idee, sich ohne Passwort bei Ihrem SSH-Server anzumelden. Im Ernst, befreien Sie sich davon. Es gibt keinen Grund, ein Passwort für einen der am häufigsten angegriffenen Dienste auf Linux-Servern zu verwenden, oder? Die Sicherung eines SSH-Servers mit standardmäßiger passwortbasierter Authentifizierung ist eine schlechte Idee. Angreifer können Passwörter leicht brute-forcen, und wenn sie das einzige sind, was zwischen einem böswilligen Akteur und Ihrem Server steht, sollten Sie definitiv nervös sein.

Inhaltsverzeichnis

  • Pakete installieren
  • Generieren Sie Ihren SSH-Schlüssel in Linux
  • Senden Ihres Schlüssels an den Remote-Linux-Host
  • Testen Ihrer SSH-Verbindung in Linux
  • Konfigurieren von SSH, um Passwörter zu blockieren
  • Häufig gestellte Fragen

Deshalb ist die RSA-Schlüssel-basierte Authentifizierung viel besser. Sie können Ihren Linux-Server so konfigurieren und sichern, dass nur Computer, die die bereits akzeptierten RSA-Schlüssel besitzen, Zugriff erhalten. Alle anderen werden sofort abgelehnt. Als zusätzlichen Vorteil können Sie diese Schlüssel mit oder ohne Passwort erstellen, was ganz Ihnen überlassen ist. Ein starker Schlüssel ohne Passwort ist in den meisten Fällen jedoch in Ordnung.

Wenn Sie auch Linux-Geräte zu Hause verwenden, haben Sie den zusätzlichen Vorteil der Bequemlichkeit. Angenommen, Sie möchten SSH X-Forwarding von Ihrer Linux-Workstation zu Ihrem Laptop einrichten. Möchten Sie wirklich jedes Mal Ihr Passwort eingeben, wenn Sie ein Remote-Programm ausführen? Richten Sie SSH-Schlüssel ein, und Sie müssen das nicht tun.

Pakete installieren

Es gibt ein paar Pakete, die Sie benötigen. Sie haben wahrscheinlich einige davon bereits, aber es ist eine gute Idee, dies zu überprüfen. Die Pakete sind sowohl auf dem Server als auch auf dem Client gleich. Es besteht jedoch auch eine gute Chance, dass beide Maschinen sowohl Server als auch Clients füreinander sind (Heimsituation), sodass Sie sicherstellen möchten, dass Sie diese Pakete installiert haben.

Das OpenSSH-Metapaket ist standardmäßig auf Debian- oder Ubuntu-Systemen nicht installiert. Wenn Sie es noch nicht installiert haben, können Sie dies tun, indem Sie den folgenden Befehl ausführen:

sudo apt install ssh

Ssh Passwordless Linux 02 Installing Openssh

Generieren Sie Ihren SSH-Schlüssel in Linux

Es ist wirklich einfach, Ihren SSH-Schlüssel in Linux zu generieren. Sagen Sie OpenSSH einfach, dass Sie den Schlüssel generieren müssen. Es ist auch eine gute Idee, die Anzahl der Bits mit der -b-Option und den Typ mit -t anzugeben. Ein 4096-Bit-Schlüssel ist am besten, da er eine stärkere Verschlüsselung bietet.

ssh-keygen -t ed25519

Zuerst fragt das Dienstprogramm, wo Sie den Schlüssel speichern möchten. Drücken Sie einfach die Eingabetaste für das Standardverzeichnis. Wenn es nach einem Passwort fragt, lassen Sie es leer für einen passwortlosen Schlüssel und passwortlose Authentifizierung. Wenn Sie doch ein Passwort für Ihren Schlüssel verwenden möchten, geben Sie es hier ein.

Ihr Computer benötigt ein paar Sekunden, um Ihren Schlüssel zu generieren. Wenn es fertig ist, wird es eine ASCII-Art-Darstellung Ihres Schlüssels im Terminal ausgeben.

Senden Ihres Schlüssels an den Remote-Linux-Host

Um Ihren Schlüssel zu verwenden, müssen Sie ihn an Ihren Remote-Server senden. OpenSSH hat auch ein weiteres integriertes Dienstprogramm dafür. Sagen Sie ihm, wo sich Ihr Schlüssel befindet und mit welchem Benutzer auf dem Server er verknüpft werden soll.

ssh-copy-id -i ~/.ssh/id_ed25519.pub benutzername@ip_remote_host

Ersetzen Sie ip_remote_host durch die tatsächliche IP-Adresse des Remote-Hosts, den Sie über SSH verwalten werden. Ersetzen Sie benutzername durch den tatsächlichen Benutzernamen auf dem Remote-Host.

Ssh Passwordless Linux 04 Ssh Copy Id

Es ist wichtig, dass Sie die -i-Option verwenden, um die Identitätsdatei anzugeben, die Ihren öffentlichen Schlüssel enthält. Wenn Sie versuchen, Ihren SSH-Schlüssel ohne diese Option zu verwenden, erhalten Sie möglicherweise einen Fehler.

Testen Ihrer SSH-Verbindung in Linux

Mit Ihrem SSH-Schlüssel auf dem Remote-Server können Sie jetzt testen, ob Ihre Verbindung ordnungsgemäß funktioniert.

Melden Sie sich mit dem folgenden Befehl an:

ssh benutzername@ip_remote_host

Der Remote-Host wird Sie anmelden, ohne nach dem Passwort des Benutzerkontos zu fragen.

Ssh Passwordless Linux 06 Passwordless Login

Wenn Sie jedoch während des Prozesses einen Fehler gemacht haben, wird der SSH-Daemon automatisch auf die Passwortauthentifizierung für Ihr Benutzerkonto zurückfallen. Dies ermöglicht es Ihnen, weiterhin auf Ihren Remote-Server zuzugreifen, selbst wenn Sie einen nicht funktionierenden RSA-Schlüssel haben.

Ssh Passwordless Linux 07 Failed Login

Konfigurieren von SSH, um Passwörter zu blockieren

Für die beste Sicherheit müssen Sie die SSH-Passwortanmeldungen auf Ihrem Linux-Server deaktivieren. Ähnlich wie bei der Aktivierung der Zwei-Faktor-Authentifizierung in SSH verhindert dies, dass jemand sich gewaltsam Zugang zu Ihrem Server verschafft.

Ssh Passwordless Linux 08 Two Factor Sample

Es ist wichtig sicherzustellen, dass Sie sich zuverlässig mit Ihrem SSH-Schlüssel anmelden können, bevor Sie dies tun, da es möglich ist, sich aus Ihrem Remote-Server auszusperren, wenn Sie einen fehlerhaften Schlüssel haben.

Sie finden die Konfigurationsdatei für Ihren SSH-Daemon in “/etc/ssh/sshd_config.” Öffnen Sie die Datei auf dem Server mit sudo und Ihrem bevorzugten Texteditor. Öffnen Sie diese Datei beispielsweise mit nano, indem Sie den folgenden Befehl ausführen:

sudo nano /etc/ssh/sshd_config

Suchen Sie die folgenden Zeilen, indem Sie Strg + W drücken, und bearbeiten Sie sie so, dass sie wie im Beispiel aussehen. Kommentieren Sie beide Einträge aus und ändern Sie die Werte in no.

PasswordAuthentication no  
PermitEmptyPasswords no

Ssh Passwordless Linux 09 Find Option Nano

PasswordAuthentication gibt an, ob die Passwortauthentifizierung verwendet werden soll. Wir setzen dies auf “nein”, weil wir nur SSH-Schlüssel verwenden möchten.

PermitEmptyPasswords gibt an, ob der Server die Anmeldung mit einem leeren Passwort zulässt. Dies sollten Sie niemals zulassen, also setzen wir es auf “nein.”

Suchen Sie als Nächstes die Zeile “UsePAM” und ändern Sie sie in “nein.” Dies verhindert, dass der Daemon andere Authentifizierungsmethoden (Passwort, Kerberos usw.) als SSH-Schlüssel verwendet.

UsePAM no

Ssh Passwordless Linux 11 Disable Pam Support

Speichern Sie die Datei, indem Sie Strg + O drücken, dann Strg + X und starten Sie den SSH-Server neu.

sudo systemctl restart ssh

Jetzt, da Sie Ihren Server erfolgreich so konfiguriert haben, dass er nur SSH-Schlüssel für die Authentifizierung verwendet, wird jeder, der versucht, sich ohne einen gültigen RSA-Schlüssel anzumelden, sofort abgelehnt.

Ssh Passwordless Linux 12 No Key Login

Häufig gestellte Fragen

Ich erhalte eine “Verbindung abgelehnt”, wenn ich meinen SSH-Schlüssel an meinen Linux-Server sende. Wie kann ich das beheben?

Stellen Sie sicher, dass der SSH-Server auf dem Remote-Host läuft. Sie können dies überprüfen, indem Sie sudo systemctl status ssh ausführen. Wenn der Dienst nicht läuft, können Sie ihn mit diesem Befehl starten: sudo systemctl start ssh.

Wenn eine Firewall auf dem Server läuft, stellen Sie sicher, dass Port 22 geöffnet ist. Sie können dies überprüfen, indem Sie sudo ufw status ausführen. Wenn SSH nicht aufgeführt ist, können Sie es aktivieren, indem Sie diesen Befehl ausführen: sudo ufw allow ssh.

Ich erhalte einen “Zugriff verweigert (publickey)”-Fehler, wenn ich versuche, mich anzumelden. Was soll ich tun?

Dieser Fehler bedeutet, dass Sie Ihren Server so konfiguriert haben, dass er Schlüssel für die Authentifizierung verwendet, Sie sich jedoch weiterhin mit einem Passwort anmelden. Dies kann entweder an einem fehlenden RSA-Schlüssel oder einer falschen SSH-Einstellung liegen. Überprüfen Sie, ob Sie Ihren öffentlichen Schlüssel korrekt auf den Server kopiert haben und ob Sie den richtigen öffentlichen Schlüssel angeben, wenn Sie sich verbinden.

Ich erhalte einen “Host-Schlüsselüberprüfung fehlgeschlagen”-Fehler, wenn ich versuche, mich zu verbinden. Wie kann ich das beheben?

Dieser Fehler bedeutet, dass sich der Host-Schlüssel des SSH-Servers geändert hat. Dies kann passieren, wenn der Server neu installiert wurde. Sie können einen neuen öffentlichen Schlüssel regenerieren und ihn auf den Remote-Host kopieren. Wiederholen Sie die Schritte in diesem Artikel, um den neuen Schlüssel zu regenerieren und zum Server hinzuzufügen.

Ist es möglich, mehrere SSH-Schlüssel auf demselben Remote-Linux-Server zu verwenden?

Ja. Sie können die -f-Option in OpenSSH verwenden, um den genauen Schlüssel anzugeben, den Sie verwenden möchten, um sich mit einem Remote-Server zu verbinden. Wenn Sie beispielsweise ssh -f ~/.ssh/id_rsa_2 benutzername@remote_ip_address ausführen, werden Sie mit Ihrem Remote-Server unter Verwendung des „id_rsa_2“-Schlüssels anstelle des Standard-„id_rsa“ verbunden.

Es ist jedoch wichtig zu beachten, dass dieser Befehl nur funktioniert, wenn Ihr Remote-Server Ihren neuen Schlüssel bereits erkennt. Sie müssen ihn zuerst mit ssh-copy-id auf Ihren Remote-Server kopieren. Ähnlich wie bei den oben genannten Schritten können Sie dies entweder über Passwort- oder RSA-Schlüssel-Authentifizierung tun.

Ich erhalte einen “Zugriff verweigert”-Fehler, wann immer ich versuche, meinen SSH-Schlüssel auf meinen Server zu kopieren.

Dieses Problem ist höchstwahrscheinlich auf ein Berechtigungsproblem auf Ihrem Remote-Server zurückzuführen. In den meisten Fällen sollte das Dienstprogramm ssh-copy-id alle Zugriffsprobleme sofort beheben, sobald es eine Verbindung zu Ihrem Remote-Server herstellt. Es gibt jedoch Fälle, in denen diese Funktion fehlschlägt und es nicht gelingt, den „id_rsa“ Ihrer lokalen Maschine korrekt zu kopieren.

Um dies zu beheben, melden Sie sich bei Ihrem Remote-Server an und führen Sie chmod 700 /home/$USER/.ssh/* && chmod 600 /home/$USER/.ssh aus. Dies setzt die richtigen Berechtigungsbits für den „.ssh“-Ordner und dessen Inhalte.

Bildnachweis: Unsplash. Alle Änderungen und Screenshots von Ramces Red.