Richten Sie mit SSH-Schlüsseln eine sichere, passwortlose Anmeldung bei Ihrem Remote-Ubuntu-Server ein.
SSH ist ein sicheres Client-Server-Netzwerkprotokoll, das einem Client-Computer hilft, eine Verbindung zu einem Remote-Server herzustellen und mit ihm zu kommunizieren. Die SSH-Verbindung stellt sicher, dass die im Terminal eingegebenen Befehle über einen verschlüsselten Kanal an den Remote-Server gesendet werden.
Es gibt zwei Arten von Authentifizierungsmechanismen, die verwendet werden, um eine Verbindung zum Remote-Server herzustellen, die kennwortbasierte Authentifizierung (anfällig für Brute-Force-Angriffe) und die SSH-Schlüssel-basierte Authentifizierung (die sehr sicher ist).
Bei der SSH-Schlüssel-basierten Authentifizierung wird auf dem Client-Computer ein Schlüsselpaar generiert, das als öffentlicher Schlüssel und privater Schlüssel bezeichnet wird. Eine Kopie dieses öffentlichen Schlüssels wird auf dem entfernten Server bereitgestellt. Wenn ein Client eine Verbindungsanfrage an den Server sendet, generiert der Server eine zufällige Zeichenfolge und verschlüsselt sie mit dem öffentlichen Schlüssel. Diese Zeichenfolge kann nur mit dem privaten Schlüssel entschlüsselt werden, der auf dem Clientcomputer verfügbar ist. Diese Methode stellt sicher, dass nur Clients mit dem privaten Schlüssel auf den Server zugreifen können.
In diesem Handbuch erfahren Sie, wie Sie SSH-Schlüssel auf dem Ubuntu 20.04 LTS-Server einrichten.
Prüfen Sie, ob auf Ihrem Computer ein SSH-Schlüssel vorhanden ist
Um zu überprüfen, ob bereits ein SSH-Schlüsselpaar auf Ihrem Computer vorhanden ist, geben Sie diesen Befehl in Ihr Terminal ein.
ls -l ~/.ssh/id_*.pub
Wenn der obige Befehl zurückkehrt Datei oder Verzeichnis existiert nicht
oder keine Treffer gefunden
, dann bedeutet dies, dass kein SSH-Schlüsselpaar vorhanden ist.
Wenn Sie über ein vorhandenes SSH-Schlüsselpaar verfügen, können Sie entweder dasselbe Schlüsselpaar verwenden, um auf zwei Remote-Server zuzugreifen, oder Sie können auch ein anderes Schlüsselpaar mit einem anderen Namen erstellen. Fahren wir mit dem nächsten Schritt fort und sehen Sie, wie Sie SSH-Schlüssel für beide Fälle generieren.
Erstellen von SSH-Schlüsseln auf einem Client-Computer
Um ein neues SSH-Schlüsselpaar auf Ihrem Computer zu generieren, geben Sie den Befehl wie unten gezeigt ein.
ssh-keygen
Standardmäßig haben die SSH-Schlüssel 2048 Bit. Wenn Sie aus Sicherheitsgründen SSH-Schlüssel mit höheren Bits generieren möchten, verwenden Sie den folgenden Befehl.
ssh-keygen -b 4096
Wenn der Befehl erfolgreich ausgeführt wird, wird die folgende Meldung auf Ihrem Bildschirm angezeigt.
Generieren eines öffentlichen/privaten rsa-Schlüsselpaars. Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/home/harshit/.ssh/id_rsa):
Wenn Sie jetzt kein vorhandenes SSH-Schlüsselpaar auf Ihrem Computer haben, drücken Sie einfach Eingeben
, aber wenn Sie einen vorhandenen SSH-Schlüssel haben, speichern Sie den Schlüssel unter einem anderen Dateinamen, wie unten gezeigt.
Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx
Ersetze das xxx
am Ende des Dateinamens mit einem geeigneten Namen, wie unten gezeigt, und drücken Sie Eingeben
.
Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1
Die nächste Eingabeaufforderung fordert Sie auf, eine Passphrase beliebiger Länge einzugeben. Dies gewährleistet eine zweistufige Sicherheit auf Ihrem Gerät.
Passphrase eingeben (leer für keine Passphrase): Geben Sie dieselbe Passphrase erneut ein:
Die Eingabe dieser Passphrase stellt sicher, dass eine Person, selbst wenn sie Zugriff auf Ihren privaten Schlüssel erhält, ohne diese Passphrase nicht auf Ihren Remote-Server zugreifen kann.
Sobald der gesamte Vorgang abgeschlossen ist, erscheint die folgende Meldung auf Ihrem Bildschirm.
Die SSH-Schlüssel wurden auf Ihrem System generiert. Jetzt ist es an der Zeit, den öffentlichen Schlüssel auf den Remote-Server zu kopieren.
Kopieren des öffentlichen Schlüssels auf den Remote-Ubuntu-Server
Die einfachste und schnellste Methode zum Kopieren des öffentlichen Schlüssels auf den Remote-Server ist die Verwendung des ssh-copy-id
Dienstprogramm. Wenn dieses Dienstprogramm jedoch aus irgendeinem Grund auf Ihrem Computer nicht verfügbar ist, können Sie auch andere in diesem Abschnitt beschriebene Methoden verwenden.
Verwenden des Dienstprogramms ssh-copy-id
Der ssh-copy-id
Dienstprogramm ist standardmäßig auf Ihrem Ubuntu-Computer verfügbar, das den öffentlichen Schlüssel von Ihrem Gerät in das entsprechende Verzeichnis Ihres entfernten Ubuntu-Computers kopiert.
Um den öffentlichen ssh-Schlüssel zu kopieren, geben Sie einfach den Befehl in Ihr Terminal ein, wie unten gezeigt.
ssh-copy-id username@hostname
Ersetze das Nutzername
und Hostname
im obigen Befehl mit dem Benutzernamen und Hostnamen Ihres Servers.
Die folgende Meldung erscheint auf Ihrem Terminal, wenn Sie sich zum ersten Mal mit Ihrem Host verbinden, geben Sie ja
und drücke Eingeben
.
Die Authentizität des Hosts '172.105.XX.XX (172.105.XX.XX)' kann nicht festgestellt werden. Der Fingerabdruck des ECDSA-Schlüssels ist xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Möchten Sie die Verbindung wirklich fortsetzen (ja/nein)? ja
Jetzt die ssh-copy-id
Das Dienstprogramm sucht nach der Datei mit dem Namen id_rsa.pub
die den öffentlichen SSH-Schlüssel enthält. Sobald der Scanvorgang abgeschlossen ist, werden Sie aufgefordert, das Passwort Ihres Remote-Servers einzugeben, wie unten gezeigt. Geben Sie das Passwort ein und drücken Sie Eingeben
.
/usr/bin/ssh-copy-id: INFO: versucht sich mit den neuen Schlüsseln anzumelden, um bereits installierte herauszufiltern /usr/bin/ssh-copy-id: INFO: 1 Schlüssel(n .) ) müssen noch installiert werden -- wenn Sie jetzt dazu aufgefordert werden, müssen Sie die neuen Schlüssel [email protected] Passwort installieren:
Sobald der Schlüssel hinzugefügt wurde, wird die folgende Meldung auf Ihrem Terminal als Ausgabe angezeigt.
Anzahl der hinzugefügten Schlüssel: 1 Versuchen Sie sich nun an der Maschine anzumelden, mit: "ssh '[email protected]'" und vergewissern Sie sich, dass nur die gewünschten Schlüssel hinzugefügt wurden.
Falls Sie mehrere SSH-Schlüssel auf Ihrem Client-Computer haben, geben Sie den Befehl in dem unten gezeigten Muster ein, um den entsprechenden öffentlichen Schlüssel auf Ihren Remote-Computer zu kopieren.
ssh-copy-id -i id_rsa_xxx.pub username@host
💡 Tipp
Vergessen Sie nicht, .pub an das Ende des Dateinamens zu setzen, während Sie das Terminal eingeben.
Kopieren des öffentlichen Schlüssels nach der Piping-Methode
Geben Sie den folgenden Befehl in das Terminal ein, wenn ssh-copy-id
Dienstprogramm ist nicht verfügbar. Dieser Befehl mag etwas länger erscheinen, funktioniert aber entsprechend.
Katze ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Ersetzen remote_username
und Server IP Adresse
mit Ihrem Benutzernamen und Ihrer IP-Adresse.
Wenn auf Ihrem Computer mehrere SSH-Schlüssel verfügbar sind, ersetzen Sie die id_rsa.pub
mit der öffentlichen SSH-Schlüsseldatei Ihrer Wahl. Beispielsweise, id_rsa_client_1.pub
.
Geben Sie das Remote-Benutzerkennwort ein, wenn Sie dazu aufgefordert werden, und drücken Sie Eingeben
.
[email protected] Passwort:
Sobald Sie das Passwort eingeben, wird die id_rsa.pub
Datei wird in die kopiert authorisierte_keys
Datei des entfernten Servers.
Manuelles Kopieren des öffentlichen Schlüssels
Verwenden Sie diese Methode, wenn Sie über die Kennwortauthentifizierung keinen Zugriff auf Ihr Remote-System haben.
Öffne das id_rsa.pub
Datei mit dem Katze
Befehl im Terminal. Sie können es auch von einem Texteditor aus öffnen, der Zweck besteht lediglich darin, den Inhalt der Datei zu kopieren.
Katze ~/.ssh/id_rsa.pub
Der Inhalt der Datei sieht wie unten gezeigt aus.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name @ your_PC
Melden Sie sich nun bei Ihrem Remote-Server an und fügen Sie den kopierten Inhalt mit dem unten gezeigten Befehl ein. Ersetze das über_string
mit dem kopierten Inhalt.
echo über_string >> ~/.ssh/authorized_keys
Mehrere SSH-Schlüssel konfigurieren (optional)
Dieser Schritt ist für Personen gedacht, die auf ihrem Clientcomputer mehrere SSH-Schlüssel eingerichtet haben. Überspringen Sie diesen Abschnitt, wenn Sie nur ein SSH-Schlüssel-Setup haben.
Um mehrere SSH-Schlüssel zu verwalten, erstellen wir jetzt ein konfigurieren
Datei in der .ssh
Verzeichnis mit dem unten gezeigten Befehl.
cd ~/.ssh vim config
Typ ich
um in den Befehlsmodus zu wechseln und die Details mehrerer Hosts einzugeben, wie im folgenden Beispiel gezeigt:
Host-Remote-UBuntu-Server HostName 172.105.XX.XX Benutzer-Stamm IdentityFile ~/.ssh/id_rsa_client_1 Host Remote-Ubuntu-Server HostName 172.106.XX.XX Benutzer-Stamm IdentityFile ~/.ssh/id_rsa_client_2
Geben Sie auf ähnliche Weise die Details anderer Remoteserver und deren Schlüssel ein. Sobald der Vorgang abgeschlossen ist, drücken Sie Esc
und :wq
zu speichern und zu beenden.
Jetzt sind die nachfolgenden Prozesse für beide mit einem oder mehreren SSH-Schlüsseln auf dem Client-Computer gleich.
Melden Sie sich mit SSH-Schlüsseln bei Ihrem Remote-Server an
Sobald das Kopieren Ihres öffentlichen Schlüssels abgeschlossen ist, melden Sie sich bei Ihrem Remote-Server an, indem Sie den unten gezeigten Befehl eingeben.
ssh remote_username@server_ip_address
Wenn Sie die Passphrase beim Generieren des Schlüsselpaars angegeben haben, werden Sie aufgefordert, sie einzugeben. Nach Abschluss des Authentifizierungsprozesses wird eine neue Sitzung geöffnet.
Sie haben nun erfolgreich die SSH-Schlüssel-basierte Authentifizierung auf Ihrem Remote-Server konfiguriert. Aber die passwortbasierte Authentifizierung ist auf Ihrem Server immer noch aktiv, das bedeutet, dass Ihr entfernter Server immer noch anfällig für Brute-Force-Angriffe ist.
Also werden wir jetzt den passwortbasierten Anmeldemechanismus von unserem Remote-Server vollständig deaktivieren.
Deaktivieren Sie den passwortbasierten Anmeldemechanismus
Bevor Sie Änderungen vornehmen, stellen Sie sicher, dass der Root-Benutzer oder jeder sudo-aktivierte Benutzer für Ihr Remote-Konto mithilfe des SSH-Schlüsselbasierten Authentifizierungssystems Zugriff auf Ihren Server hat. Dieser Schritt sperrt oder deaktiviert die passwortbasierte Anmeldung vollständig, daher ist es wichtig, dass mindestens ein Benutzer mit Root-Rechten über einen SSH-Schlüssel auf den Server zugreifen kann.
Melden Sie sich bei Ihrem Remote-Ubuntu-Server an und geben Sie den unten gezeigten Befehl ein.
sudo vim /etc/ssh/sshd_config
- Drücken Sie
Esc
,/
und geben Sie "PasswordAuthentication" ein und drücken SieEintreten
. - Jetzt drücken
ich
und ändern Sie den Wert von ‚PasswordAuthentication yes‘ in ‚PasswordAuthentication no‘. - Drücken Sie
Esc
und wiederholen Sie den obigen Vorgang, um "ChallengeResponseAuthentication", "UsePAM" zu finden, und ändern Sie ihre Werte inNein
sowie.
PasswordAuthentication nein ChallengeResponseAuthentication nein UsePAM nein
Sobald alle Werte auf eingestellt sind Nein
, Drücken Sie Esc
, Typ :wq
und schlagen Eintreten
.
Um alle Änderungen zu aktivieren, starten Sie den ssh
Dienst mit dem folgenden Befehl.
sudo systemctl Neustart ssh
Öffnen Sie nun ein neues Terminalfenster auf Ihrem Computer und überprüfen Sie, ob Ihre SSH-Schlüssel-Authentifizierung ordnungsgemäß funktioniert, bevor Sie die aktuelle Sitzung schließen.
Schließen Sie nach Abschluss des Überprüfungsprozesses alle laufenden Sitzungen.
Wir haben nun erfolgreich die SSH-Schlüssel-basierte Authentifizierung auf unserem Ubuntu 20.04-Server konfiguriert. Jetzt kann sich niemand mehr über einen passwortbasierten Anmeldemechanismus bei Ihrem Server anmelden.