GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So verwenden Sie die Public-Key-Authentifizierung mit SSH

Einführung

Public-Key-Authentifizierung ist eine sichere Protokollierungsmethode mit SSH. Anstelle eines Passworts verwendet das Verfahren ein kryptografisches Schlüsselpaar zur Validierung. Obwohl die Verwendung eines starken Passworts dazu beiträgt, Brute-Force-Angriffe zu verhindern, bietet die Public-Key-Authentifizierung kryptografische Stärke und automatisierte passwortlose Anmeldungen.

Dieser Leitfaden enthält Schritt-für-Schritt-Anleitungen zur Implementierung der Public-Key-Authentifizierung von Grund auf.

Voraussetzungen

  • Befehlszeilen-/Terminalzugriff mit Administratorrechten.
  • SSH aktiviert. Folgen Sie unseren Anleitungen, um SSH unter Linux zu aktivieren:Ubuntu 18.04, Debian 9 oder 10.
  • Ein lokaler und ein entfernter Server.

SSH-Schlüssel zur Authentifizierung verwenden

Die SSH-Public-Key-Authentifizierung besteht aus vier Schritten:

1. Generieren Sie einen privaten und einen öffentlichen Schlüssel, das sogenannte Schlüsselpaar . Der private Schlüssel bleibt auf dem lokalen Rechner.

2. Fügen Sie dem Server den entsprechenden öffentlichen Schlüssel hinzu.

3. Der Server speichert und markiert den öffentlichen Schlüssel als genehmigt.

4. Der Server gewährt jedem Zugriff, der den Besitz des entsprechenden privaten Schlüssels nachweist.

Das Modell geht davon aus, dass der private Schlüssel gesichert ist. Das Hinzufügen einer Passphrase zum Verschlüsseln des privaten Schlüssels fügt eine Sicherheitsebene hinzu, die für die meisten benutzerbasierten Fälle gut genug ist. Für Automatisierungszwecke gelten Schlüsselverwaltungssoftware und -praktiken, da der private Schlüssel ansonsten ungeschützt bleibt.

SSH-Schlüsselpaar wird generiert

Generieren Sie das SSH-Schlüsselpaar auf dem lokalen Server mit OpenSSH. Die grundlegenden Anweisungen für Linux, macOS und Windows sind unten aufgeführt.

Linux und macOS

1. Öffnen Sie das Terminal (STRG +ALT +T ).

2. Suchen Sie nach vorhandenen Schlüsseln mit:

ls -l ~/.ssh/id*

Wenn bereits Schlüssel vorhanden sind, zeigt die Ausgabe den Inhalt des Verzeichnisses:

Das Generieren neuer Schlüssel überschreibt standardmäßig die aktuellen. Wenn Sie jedoch einen neuen Namen für die Schlüssel angeben, werden sie in anderen Dateien gespeichert.

Wenn keine Schlüssel vorhanden sind, gibt die Ausgabe an, dass der Ordner nicht existiert:

3. Erstellen Sie das Verzeichnis mit dem Befehl mkdir zum Speichern des neuen Schlüsselpaars:

mkdir ~/.ssh

4. Ändern Sie die Berechtigungen auf 700:

chmod 700 ~/.ssh

5. Der folgende Befehl startet den Schlüsselgenerator:

ssh-keygen

Die Ausgabe gibt eine Meldung aus, die angibt, dass der Befehl erfolgreich ausgeführt wurde. Als nächstes fragt das Programm, wo die Datei gespeichert werden soll:

Das Standardverzeichnis und die Datei für die Schlüsselspeicherung ist /home//.ssh/id_rsa . Wenn Sie vorhandene Schlüssel behalten möchten, geben Sie einen neuen Dateinamen ein. Drücken Sie andernfalls Enter am Standardspeicherort speichern. Wenn an dieser Stelle bereits Schlüssel vorhanden sind, überschreibt das Programm die Daten.

6. Geben Sie abschließend eine Passphrase ein, um den Schlüssel zu sichern. Drücken Sie Eingabe und bestätigen Sie die Passphrase noch einmal, wenn Sie dazu aufgefordert werden. Das Passwort ist jedes Mal erforderlich, wenn Sie den Schlüssel zur Authentifizierung verwenden.

7. Zuletzt druckt das Programm Informationen darüber aus, wo die Schlüssel gespeichert sind. Zusätzlich wird auch eine digitale und eine grafische Darstellung auf die Konsole gedruckt.

8. Bestätigen Sie, dass sich die Schlüssel im Verzeichnis befinden, indem Sie den Inhalt überprüfen:

 ls -l ~/.ssh/

Das Verzeichnis enthält jetzt zwei Dateien:

  • id_rsa ist der private Schlüssel.
  • id_rsa.pub ist der öffentliche Schlüssel.

Windows

1. Verwenden Sie das Windows-Suchfeld, um cmd zu finden und öffnen Sie das Eingabeaufforderungsfenster.

2. Geben Sie an der Eingabeaufforderung Folgendes ein:

ssh-keygen

Der Befehl startet das Programm zur Generierung des Schlüsselpaares.

3. Wenn Sie einen bestimmten Speicherort für die Schlüssel eingerichtet haben, geben Sie jetzt den Pfad ein. Drücken Sie andernfalls Enter um die Schlüssel im Standardpfad zu speichern.

Wenn an dieser Stelle Schlüssel vorhanden sind, fordert die Ausgabe zur Bestätigung des Überschreibens auf. Geben Sie Y ein bestätigen und Enter drücken um mit der Einrichtung fortzufahren.

4. Geben Sie die Passphrase ein, um den privaten Schlüssel zu verschlüsseln. Geben Sie dieselbe Passphrase erneut ein und drücken Sie Enter um das Generieren des Schlüsselpaars abzuschließen.

Einen oder mehrere SSH/SFTP-Benutzer für Ihren Schlüssel konfigurieren

Nach dem Generieren eines Schlüsselpaars besteht der nächste Schritt darin, den Servercomputer für SSH- und SFTP-Benutzer für den Schlüssel zu konfigurieren.

1. Überprüfen Sie auf dem Servercomputer, ob die Datei ~/.ssh Ordner existiert:

ls -l ~/.ssh/

Wenn das Verzeichnis nicht vorhanden ist, erstellen Sie den Ordner:

mkdir ~/.ssh

Als nächstes ändern Sie die Berechtigungen mit:

chmod 700 ~/.ssh

2. Erstellen Sie eine Datei namens authorized_keys in ~/.ssh Verzeichnis:

touch authorized_keys

Ändern Sie die Berechtigungen:

chmod 600 ~/.ssh/authorized_keys

3. Öffnen Sie als Nächstes die authorized_keys Datei mit einem Texteditor. Kopieren Sie den Inhalt des öffentlichen Schlüssels in die authorized_keys Datei. Kopieren Sie bei mehreren Benutzern und Schlüsseln jeden neuen Schlüssel in eine neue Zeile. Speichern Sie die Datei und schließen Sie sie.

Verwenden Sie unter Linux diesen Befehl, um den Schlüssel automatisch zu kopieren:

ssh-copy-id <username>@<host>

Die Ausgabe zeigt die Anzahl der automatisch auf den Server kopierten Schlüssel zusammen mit weiteren Anweisungen.

Für die Übertragung von Dateien über SSH gibt es mehrere Lösungen:

  • Verwenden Sie SSHFS für Linux, macOS oder Windows
  • Verwenden Sie RSync als Alternative für Linux.

Anmelden

Nachdem Sie die Schlüssel generiert und kopiert haben, melden Sie sich mit dem folgenden Befehl vom lokalen Computer aus bei Ihrem Server an:

ssh <username>@<host>

Der Befehl ruft eine Eingabeaufforderung für die Eingabe des Passworts für den privaten Schlüssel auf:

Geben Sie zuletzt das Passwort ein, um den Schlüssel zu entsperren:

Nach der Überprüfung meldet Sie der Befehl über SSH beim Server an.

Warum sollten Sie die Public-Key-Authentifizierung mit SSH verwenden?

Die Authentifizierung mit öffentlichem Schlüssel ist eine sicherere und empfohlene Methode, um sich mit SSH zu verbinden, anstatt sich mit einem normalen Passwort anzumelden.

Einige Vorteile sind:

  • Das SSH-Schlüsselpaar ist schwieriger zu hacken. Da die meisten SSH-Schlüssel mindestens 1024 Bit lang sind, was einem Passwort mit 12 Zeichen entspricht, ist die Verbindung sicher. Erhöhen Sie die Anzahl der Bits beim Generieren der Schlüssel, um die Sicherheit noch weiter zu verbessern.
  • Der Inhalt der Schlüssel wird mithilfe eines Computeralgorithmus generiert, wodurch er schwerer vorherzusagen ist.
  • Nur der Computer, auf dem sich der private Schlüssel befindet, hat Zugriff.
  • Die Authentifizierung mit öffentlichem Schlüssel zeigt dem Server niemals den Inhalt des privaten Schlüssels an. Im Falle einer Serverkompromittierung bleibt der lokale Rechner sicher.
  • Ein hinzugefügtes Passwort zum privaten Schlüssel fügt eine mehrstufige Authentifizierung hinzu.

Ubuntu
  1. So verwenden Sie SSH-Schlüssel mit Plesk

  2. So richten Sie SSH-Schlüssel ein

  3. Ssh – Erhalten Sie immer noch eine Passwortabfrage mit Ssh mit Authentifizierung mit öffentlichem Schlüssel?

  4. Wie verwendet man Ssh-Copy-ID mit Multiple-Hop-SSH-Tunnel?

  5. So richten Sie SSH-Schlüssel unter Ubuntu 16.04 ein

Wie richte ich SSH-Schlüssel ein – Windows-Betriebssystem?

So richten Sie die passwortlose SSH-Authentifizierung unter Linux ein

So verwenden Sie einen SSH-Schlüssel mit Nicht-Root-Benutzern

So verwenden Sie die Zwei-Faktor-Authentifizierung mit Ubuntu

Wie richte ich die ssh-schlüsselbasierte Authentifizierung für Github mithilfe der Datei ~/.ssh/config ein?

So fügen Sie dem Server einen öffentlichen SSH-Schlüssel hinzu