Secure Shell (SSH) ist ein kryptografisches Netzwerkprotokoll, das für eine sichere Verbindung zwischen einem Client und einem Server verwendet wird und verschiedene Authentifizierungsmechanismen unterstützt.
Die beiden beliebtesten Mechanismen sind die passwortbasierte Authentifizierung und die auf öffentlichen Schlüsseln basierende Authentifizierung. Die Verwendung von SSH-Schlüsseln ist sicherer und bequemer als die herkömmliche Passwortauthentifizierung.
In diesem Tutorial erklären wir Ihnen, wie Sie SSH-Schlüssel auf Ubuntu 18.04-Rechnern generieren. Wir zeigen Ihnen auch, wie Sie eine SSH-Schlüssel-basierte Authentifizierung einrichten und sich mit Ihren Remote-Linux-Servern verbinden, ohne ein Passwort einzugeben.
Erstellen von SSH-Schlüsseln auf Ubuntu #
Bevor Sie zuerst ein neues SSH-Schlüsselpaar generieren, suchen Sie auf Ihrem Ubuntu-Client-Computer nach vorhandenen SSH-Schlüsseln. Sie können dies tun, indem Sie den folgenden ls-Befehl ausführen:
ls -l ~/.ssh/id_*.pub
Wenn der obige Befehl so etwas wie No such file or directory
oder no matches found
Dies bedeutet, dass Sie keine SSH-Schlüssel auf Ihrem Client-Computer haben und mit dem nächsten Schritt fortfahren und ein SSH-Schlüsselpaar generieren können.
Wenn vorhandene Schlüssel vorhanden sind, können Sie diese entweder verwenden und den nächsten Schritt überspringen oder die alten Schlüssel sichern und neue generieren.
Generieren Sie ein neues 4096-Bit-SSH-Schlüsselpaar mit Ihrer E-Mail-Adresse als Kommentar, indem Sie Folgendes eingeben:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Die Ausgabe sieht in etwa so aus:
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
Drücken Sie Enter
um den standardmäßigen Speicherort und Dateinamen zu akzeptieren.
Als Nächstes werden Sie aufgefordert, eine sichere Passphrase einzugeben. Ob Sie eine Passphrase verwenden möchten, bleibt Ihnen überlassen. Wenn Sie sich für die Verwendung einer Passphrase entscheiden, erhalten Sie eine zusätzliche Sicherheitsebene.
Enter passphrase (empty for no passphrase):
Wenn Sie keine Passphrase verwenden möchten, drücken Sie einfach Enter
.
Die gesamte Interaktion sieht folgendermaßen aus:
Geben Sie Folgendes ein, um zu überprüfen, ob Ihr neues SSH-Schlüsselpaar generiert wurde:
ls ~/.ssh/id_*
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
Kopieren Sie den öffentlichen Schlüssel auf den Server #
Nachdem Sie nun Ihr SSH-Schlüsselpaar generiert haben, besteht der nächste Schritt darin, den öffentlichen Schlüssel auf den Server zu kopieren, den Sie verwalten möchten.
Der einfachste und empfohlene Weg, Ihren öffentlichen Schlüssel auf den Server zu kopieren, ist die Verwendung eines Dienstprogramms namens ssh-copy-id
. Geben Sie auf Ihrem lokalen Rechnerterminal Folgendes ein:
ssh-copy-id remote_username@server_ip_address
Sie werden aufgefordert, den remote_username
einzugeben Passwort:
remote_username@server_ip_address's password:
Sobald der Benutzer authentifiziert ist, wird der öffentliche Schlüssel ~/.ssh/id_rsa.pub
wird an den entfernten Benutzer ~/.ssh/authorized_keys
angehängt Datei und Verbindung wird geschlossen.
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.
Wenn aus irgendeinem Grund die ssh-copy-id
auf Ihrem lokalen Computer nicht verfügbar ist, können Sie den öffentlichen Schlüssel mit dem folgenden Befehl kopieren:
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Melden Sie sich mit den SSH-Schlüsseln # bei Ihrem Server an
Nachdem Sie die obigen Schritte ausgeführt haben, sollten Sie sich beim Remote-Server anmelden können, ohne zur Eingabe eines Passworts aufgefordert zu werden.
Versuchen Sie zum Testen, sich über SSH bei Ihrem Server anzumelden:
ssh remote_username@server_ip_address
Wenn Sie keine Passphrase für den privaten Schlüssel festgelegt haben, werden Sie sofort angemeldet. Andernfalls werden Sie aufgefordert, die Passphrase einzugeben.
SSH-Passwortauthentifizierung deaktivieren #
Das Deaktivieren der Passwortauthentifizierung fügt Ihrem Server eine zusätzliche Sicherheitsebene hinzu.
Stellen Sie vor dem Deaktivieren der SSH-Passwortauthentifizierung sicher, dass Sie sich ohne Passwort bei Ihrem Server anmelden können und dass der Benutzer, mit dem Sie sich anmelden, über sudo-Berechtigungen verfügt.
Melden Sie sich bei Ihrem Remote-Server an:
ssh sudo_user@server_ip_address
Öffnen Sie die SSH-Konfigurationsdatei /etc/ssh/sshd_config
mit Ihrem Texteditor:
sudo nano /etc/ssh/sshd_config
Suchen Sie nach den folgenden Anweisungen und ändern Sie sie wie folgt:
/etc/ssh/sshd_configPasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Wenn Sie fertig sind, speichern Sie die Datei und starten Sie den SSH-Dienst neu, indem Sie Folgendes eingeben:
sudo systemctl restart ssh
Zu diesem Zeitpunkt ist die passwortbasierte Authentifizierung deaktiviert.