Secure Shell (SSH) ist ein Netzwerkprotokoll zum Herstellen einer sicheren Verbindung zwischen einem Client und einem Server. Mit SSH können Sie Befehle auf Remote-Rechnern ausführen, Tunnel erstellen, Ports weiterleiten und vieles mehr.
SSH unterstützt verschiedene Authentifizierungsmechanismen. Die beiden häufigsten sind die Passwort- und die Public-Key-basierte Authentifizierung.
Die Authentifizierung mit einem öffentlichen Schlüssel basiert auf der Verwendung digitaler Signaturen und ist sicherer und bequemer als die herkömmliche Passwortauthentifizierung.
In diesem Artikel wird erläutert, wie Sie SSH-Schlüssel auf Ubuntu 20.04-Systemen generieren. Wir zeigen Ihnen auch, wie Sie eine SSH-Schlüssel-basierte Authentifizierung einrichten und sich mit Remote-Linux-Servern verbinden, ohne ein Passwort einzugeben.
Erstellen von SSH-Schlüsseln auf Ubuntu #
Wahrscheinlich haben Sie bereits ein SSH-Schlüsselpaar auf Ihrem Ubuntu-Client-Rechner. Wenn Sie ein neues Schlüsselpaar generieren, wird das alte überschrieben. Um zu überprüfen, ob die Schlüsseldateien vorhanden sind, führen Sie den folgenden ls
aus Befehl:
ls -l ~/.ssh/id_*.pub
Wenn der Befehl so etwas wie No such file or directory
zurückgibt , oder no matches found
, bedeutet dies, dass der Benutzer keine SSH-Schlüssel hat, und Sie können mit dem nächsten Schritt fortfahren und ein SSH-Schlüsselpaar generieren. Andernfalls, wenn Sie ein SSH-Schlüsselpaar haben, können Sie entweder die vorhandenen verwenden oder die alten Schlüssel sichern und ein neues Paar generieren.
Um ein neues 4096-Bit-SSH-Schlüsselpaar mit Ihrer E-Mail-Adresse als Kommentar zu generieren, führen Sie Folgendes aus:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Sie werden aufgefordert, den Dateinamen anzugeben:
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
Der standardmäßige Speicherort und Dateiname sollte für die meisten Benutzer in Ordnung sein. Drücken Sie Enter
zu akzeptieren und fortzufahren.
Als nächstes werden Sie aufgefordert, eine sichere Passphrase einzugeben. Eine Passphrase fügt eine zusätzliche Sicherheitsebene hinzu. Wenn Sie eine Passphrase festlegen, werden Sie jedes Mal zur Eingabe aufgefordert, wenn Sie sich mit dem Schlüssel beim Remote-Computer anmelden.
Wenn Sie keine Passphrase festlegen möchten, drücken Sie Enter
.
Enter passphrase (empty for no passphrase):
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
Das ist es. Sie haben erfolgreich ein SSH-Schlüsselpaar auf Ihrem Ubuntu-Client-Rechner generiert.
Kopieren Sie den öffentlichen Schlüssel auf den Remote-Server #
Nachdem Sie nun ein SSH-Schlüsselpaar haben, besteht der nächste Schritt darin, den öffentlichen Schlüssel auf den Remote-Server zu kopieren, den Sie verwalten möchten.
Der einfachste und empfohlene Weg, den öffentlichen Schlüssel auf den Server zu kopieren, ist die Verwendung der ssh-copy-id
Werkzeug. Geben Sie auf Ihrem lokalen Computer Folgendes ein:
ssh-copy-id remote_username@server_ip_address
Sie werden aufgefordert, das Remote-Benutzerkennwort einzugeben:
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 die 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.
Code>
Wenn aus irgendeinem Grund die ssh-copy-id
Dienstprogramm auf Ihrem lokalen Computer nicht verfügbar ist, verwenden Sie den folgenden Befehl, um den öffentlichen Schlüssel zu 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 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.