So authentifizieren Sie sich über SSH mit Schlüsseln anstelle von Kennwörtern

SSH ist eine großartige Möglichkeit, Remotezugriff auf Ihren Computer zu erhalten. Wenn Sie die Ports Ihres Routers öffnen (Port 22, um genau zu sein), können Sie nicht nur von Ihrem lokalen Netzwerk auf Ihren SSH-Server zugreifen, sondern von überall auf der Welt.

SSH ist eine großartige Möglichkeit, Remotezugriff auf Ihren Computer zu erhalten.  Wenn Sie die Ports Ihres Routers öffnen (Port 22, um genau zu sein), können Sie nicht nur von Ihrem lokalen Netzwerk auf Ihren SSH-Server zugreifen, sondern von überall auf der Welt.
Werbung

So authentifizieren Sie sich über SSH mit Schlüsseln anstelle von Kennwörtern SSH ist eine großartige Möglichkeit, Remotezugriff auf Ihren Computer zu erhalten. Ähnlich wie FTP, können Sie über SSH verbinden FTP Was SSH ist und wie es anders ist als FTP [Technologie erklärt] Was SSH ist und wie es anders ist als FTP [Technologie erklärt] Lesen Sie mehr, um sicheren Zugriff auf einen Dateiserver mit Ihrem Lieblings-FTP zu erhalten Client Master FTP-Dateiübertragungen auf allen Ihren Sites mit FileZilla Master-FTP-Dateiübertragungen auf allen Ihren Sites mit FileZilla Eine große Anzahl von FTP-Clients aus alten Zeiten hatte Schluckauf, wenn es um große Dateiübertragungen ging. Die Apps erlebten die üblichen Timeouts, die Sie erwarten würden, wenn der Computer 15 Jahre lang ... Read More, schnell auf entfernte Dateien zugreifen oder sogar eine Netzwerkfestplatte auf Ihrem Computer installieren würde. Aber es gibt mehr zu SSH als Remote-Dateizugriff. Wenn Sie sich im Terminal über SSH anmelden (oder mit PuTTY unter Windows), erhalten Sie Zugriff auf die entfernte Shell (schließlich ist SSH die Abkürzung für Secure SHell). So verwalte ich meinen Medienserver aus der Ferne.

Wenn Sie die Ports öffnen Was ist Port Forwarding und wie kann es mir helfen? [MakeUseOf erklärt] Was ist Port Forwarding & Wie kann es mir helfen? [MakeUseOf Explains] Weinst du innerlich etwas, wenn dir jemand sagt, dass es ein Port-Forwarding-Problem gibt und deshalb deine neue App nicht funktioniert? Ihre Xbox lässt Sie keine Spiele spielen, Ihre Torrent-Downloads verweigern ... Lesen Sie mehr auf Ihrem Router (Port 22 um genau zu sein) Sie können nicht nur auf Ihren SSH-Server von innerhalb Ihres lokalen Netzwerks, sondern von überall auf der Welt zugreifen.

Sie möchten jedoch nicht riskieren, ein schwaches Passwort für die Authentifizierung zu verwenden. Wenn jemand Zugriff auf Ihren Computer über SSH erhält, erhalten sie vollständigen Shell-Zugriff. Nur um klar zu sein, das wollen wir nicht. Glücklicherweise ist es sehr einfach, Ihren globalen SSH-Server auf sehr sichere Weise einzurichten, indem Sie die schlüsselbasierte Authentifizierung verwenden und die Kennwortauthentifizierung auf dem gesamten Server deaktivieren.

Ist das für mich?

Es ist verlockend, mit persönlicher Sicherheit locker zu werden. Wenn Sie den Server für private Zwecke verwenden, denken Sie vielleicht, dass die Leute Ihren Server einfach nicht kennen und daher nicht versuchen werden, ihn zu hacken - Sicherheit durch Unklarheit. Das wäre eine sehr falsche Annahme. Da (meist) SSH-Verkehr an Port 22 übertragen wird, überprüfen Angreifer routinemäßig die Sichtbarkeit von Port 22 bei zufälligen IP-Adressen, gefolgt von einem Brute-Force-Angriff. Dies ist eine der Möglichkeiten, wie Botnets in DDoS-Angriffen eingesetzt werden. Was ist ein DDoS-Angriff? [MakeUseOf erklärt] Was ist ein DDoS-Angriff? [MakeUseOf Explains] Der Begriff DDoS pfeift vorbei, wenn Cyber-Aktivismus seinen Kopf massig aufzieht. Diese Art von Angriffen macht aus verschiedenen Gründen internationale Schlagzeilen. Die Probleme, die diese DDoS-Attacken starten, sind oft umstritten oder hoch ... Read More.

Um es kurz zu machen: Wenn Sie Ihren SSH-Server über das Internet (dh den Port 22) übertragen, dann ist dies für Sie.

Die Idee von Key-Based SSH Logins

Schlüsselbasierte SSH-Logins basieren auf der Idee der Public-Key-Kryptographie. Es würde uns zu weit bringen, die Feinheiten zu erklären, aber wir werden versuchen, ein einfaches Bild davon zu zeichnen, was hinter den Kulissen vor sich geht.

In dem folgenden Prozess generiert der Clientcomputer zwei Schlüssel: einen öffentlichen Schlüssel und einen privaten Schlüssel. Die allgemeine Idee ist, dass Sie Daten mit dem öffentlichen Schlüssel verschlüsseln, aber nur mit dem privaten Schlüssel entschlüsseln können. Wir legen den öffentlichen Schlüssel auf den Server und bitten ihn, die gesamte ausgehende Kommunikation damit zu verschlüsseln. Dadurch wird sichergestellt, dass nur die Clients mit dem privaten Schlüssel die Daten entschlüsseln und lesen können.

1. Installieren Sie OpenSSH

Zuerst richten wir einen SSH-Server mit OpenSSH ein. Wenn Sie bereits einen SSH-Server ausgeführt haben und nur wissen möchten, wie Sie die schlüsselbasierte Authentifizierung einrichten, können Sie diesen Schritt überspringen. Verwenden Sie Ihren bevorzugten Paketmanager, um die OpenSSH-Serveranwendung zu installieren. Die einfachste Möglichkeit wäre , den Befehl apt-get vom Terminal aus auszuführen.

sudo apt-get install openssh-server

Geben Sie Ihr Passwort ein, bestätigen Sie und warten Sie eine Minute, bis die Installation abgeschlossen ist. Herzlichen Glückwunsch, Sie haben jetzt einen SSH-Server. (Das war einfach!)

ubuntu-install-openssh

Sie können entweder die Anwendung /etc/ssh/sshd_config oder /etc/ssh/sshd_config, um sie zu konfigurieren. Führen Sie den Befehl man sshd_config im Terminal aus, um weitere Informationen zu erhalten. Eine weitere großartige Ressource, um mehr über OpenSSH zu erfahren, ist die entsprechende Hilfeseite von Ubuntu.

2. Generiere Schlüssel

Wir werden eine Reihe von Schlüsseln generieren. Führen Sie die folgenden Befehle aus (angepasst von der OpenSSH / Keys Ubuntu Hilfe Seite).

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa

Der erste Befehl erstellt ein verstecktes Verzeichnis ".ssh" in Ihrem Benutzerordner, der zweite Befehl ändert die Zugriffsberechtigungen des Ordners, während der dritte Befehl tatsächlich einen Satz von RSA-Schlüsseln generiert. Sie werden zunächst nach einem Ort gefragt, an dem Sie die Schlüssel speichern können (lassen Sie das Feld leer und drücken Sie die Eingabetaste, um den Standardspeicherort zu speichern) und danach nach einer Passphrase.

Diese Passphrase verschlüsselt den privaten Schlüssel, der auf Ihrem Computer gespeichert ist, weiter. So haben Sie mehr Zeit, um den SSH-Server zu sichern, wenn Ihr privater Schlüssel jemals gestohlen wurde. Stellen Sie sicher, dass Sie eine Passphrase auswählen, an die Sie sich erinnern können, da Sie sie eingeben müssen, wenn Sie versuchen, Ihren Schlüssel zu verwenden.

3. Übertragen Sie den öffentlichen Schlüssel

Als Nächstes müssen Sie den öffentlichen Schlüssel, den Sie im vorherigen Schritt generiert haben, auf den SSH-Servercomputer übertragen. Wenn auf Ihrem Client-Computer auch Linux ausgeführt wird, können Sie dies sehr einfach erreichen, indem Sie den folgenden Befehl ausführen (Ersetzen und für den Benutzernamen und die IP-Adresse auf Ihrem SSH-Server).

ssh-copy-id @

Wenn Ihr Client den Befehl ssh-copy-id nicht unterstützt, können Sie stattdessen den folgenden Befehl verwenden. Es ist ein bisschen mehr verschachtelt, aber im Wesentlichen die gleichen Ergebnisse erzielt.

cat ~/.ssh/id_rsa.pub | ssh @ "mkdir ~/.ssh; cat>>~/.ssh/authorized_keys"

Sie werden aufgefordert, das Benutzerpasswort für den SSH-Server einzugeben. Wenn die Befehle ohne Fehler ausgeführt werden, wurde Ihr öffentlicher Schlüssel auf den Server kopiert.

4. Deaktivieren Sie die Passwort-Authentifizierung

Beachten Sie, dass Ihr System immer noch nicht sicherer ist als nach dem ersten Schritt. Obwohl mindestens ein Client für die Verwendung der schlüsselbasierten Authentifizierung konfiguriert ist, bleibt für andere Clients Raum für die Verbindung mit einem Kennwort. Zum Schluss werden wir die Passwort-Authentifizierung komplett deaktivieren. Nach diesem Schritt können nur Computer, die den obigen Prozess durchlaufen haben, eine Verbindung mit Ihrem SSH-Server herstellen.

Um die Passwortauthentifizierung zu deaktivieren, bearbeiten Sie die Datei /etc/ssh/sshd_config in Ihrem bevorzugten Editor. Eine der einfachsten Möglichkeiten zum Bearbeiten einer eingeschränkten Datei ist wiederum die Verwendung von Terminal. (Ich bin teilweise Nano, aber Sie können verwenden, was auch immer Sie am wohlsten sind.)

sudo nano /etc/ssh/sshd_config

Etwa 40 Zeilen von der Unterseite der Datei, werden Sie finden

#PasswordAuthentication yes

Entfernen Sie das Nummernzeichen (#) und ändern Sie die Einstellung wie unten beschrieben in "Nein".

PasswordAuthentication no

Die endgültige Datei sollte in etwa so aussehen:

sshd_config

Speichern Sie die Datei, indem Sie STRG + X drücken. Bestätigen Sie die Bearbeitung und den Dateinamen, und Sie sind fast fertig. Starten Sie den SSH-Server neu, um ihn mit diesen neuen Einstellungen auszuführen.

sudo restart ssh

Sie werden auch feststellen, dass Ihr Client nicht mehr nach der Passphrase fragt, um den Schlüssel zu entschlüsseln, wenn die Kennwortauthentifizierung auf dem Server deaktiviert ist. Nun, da Sie einen sicheren SSH-Server haben, wie beabsichtigen Sie, es zu verwenden? Als sicherer Dateiserver, als Remote Shell oder um andere Dienste über SSH weiterzuleiten? Lass es uns im Kommentarbereich wissen!

Bildnachweis: Shutterstock

In this article