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 verschlüsselte Verbindung kann verwendet werden, um Befehle auf dem Server, X11-Tunneling, Portweiterleitung und mehr auszuführen.
Passwort- und Public-Key-basierte Verfahren sind die beiden häufigsten Mechanismen für Authentifizierungen.
Die Authentifizierung mit einem öffentlichen Schlüssel basiert auf der Verwendung digitaler Signaturen und ist sicherer und bequemer als die herkömmliche Passwortauthentifizierung.
Dieser Artikel beschreibt, wie Sie SSH-Schlüssel auf Debian 10-Systemen generieren. Wir zeigen Ihnen auch, wie Sie eine SSH-Schlüssel-basierte Authentifizierung einrichten und sich mit entfernten Linux-Servern verbinden, ohne ein Passwort einzugeben.
Erstellen von SSH-Schlüsseln auf Debian #
Wahrscheinlich haben Sie bereits ein SSH-Schlüsselpaar auf Ihrem Debian-Client-Rechner. Wenn Sie ein neues Schlüsselpaar generieren, wird das alte überschrieben.
Führen Sie das folgende ls
aus Befehl, um zu prüfen, ob die Schlüsseldateien existieren:
ls -l ~/.ssh/id_*.pub
Wenn die Ausgabe des obigen Befehls so etwas wie No such file or directory
oder no matches found
, bedeutet dies, dass Sie keine SSH-Schlüssel haben und mit dem nächsten Schritt fortfahren und ein neues SSH-Schlüsselpaar generieren können.
Andernfalls, wenn Sie ein SSH-Schlüsselpaar haben, können Sie entweder diese verwenden 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 den folgenden Befehl 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. Die Passphrase fügt eine zusätzliche Sicherheitsebene hinzu.
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:
Führen Sie den folgenden Befehl aus, um zu bestätigen, dass das SSH-Schlüsselpaar generiert wurde:
ls ~/.ssh/id_*
Der Befehl listet die Schlüsseldateien auf:
/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 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, den öffentlichen Schlüssel auf den Remote-Server zu kopieren, ist die Verwendung der ssh-copy-id
Werkzeug.
Führen Sie den folgenden Befehl auf Ihrem lokalen Computer aus:
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 Inhalt der öffentlichen Schlüsseldatei (~/.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.
Wenn 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 # beim Server an
An diesem Punkt sollten Sie sich beim Remote-Server anmelden können, ohne zur Eingabe eines Passworts aufgefordert zu werden.
Versuchen Sie zum Testen, sich über SSH mit dem Server zu verbinden:
ssh remote_username@server_ip_address
Wenn Sie keine Passphrase festgelegt haben, werden Sie sofort angemeldet. Andernfalls werden Sie aufgefordert, die Passphrase einzugeben.
SSH-Passwortauthentifizierung deaktivieren #
Um Ihrem Server eine zusätzliche Sicherheitsebene hinzuzufügen, können Sie die SSH-Passwortauthentifizierung deaktivieren.
Stellen Sie vor dem Deaktivieren der 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 Konfigurationsdatei des SSH-Servers /etc/ssh/sshd_config
:
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:
sudo systemctl restart ssh
Zu diesem Zeitpunkt ist die passwortbasierte Authentifizierung deaktiviert.