Rationalisiert: Zweistufige SSH-Einrichtung ohne Passwort unter Ubuntu
14:45, 07.12.2023
Das Erreichen einer bequemeren Benutzererfahrung ist eine der wichtigsten Richtungen der Organisation des Arbeitsprozesses für jeden Benutzer. Wenn Sie einen VPS oder dedizierten Server haben, jedes Mal mit demselben Gerät darauf zugreifen und es leid sind, jedes Mal das Passwort einzugeben, wenn Sie mit Ihrem Server arbeiten, dann könnten Sie daran interessiert sein, ein passwortloses Login in Ihren Server einzurichten. Dazu müssen Sie die Public-Key-Authentifizierungsmethode einrichten, die eine Alternative zur Authentifizierungsmethode mit einem Passwort darstellt. In der folgenden Anleitung wird detailliert beschrieben, wie Sie als Ubuntu-Benutzer diese Methode auf Ihrem Remote-Desktop einrichten können.
Eine Kurzanleitung zum Einrichten einer passwortlosen SSH-Authentifizierung
Schritt 1: Erzeugen eines öffentlichen/privaten Schlüsselpaars auf Ihrem Ubuntu-Desktop
Der erste Schritt besteht darin, das Paar aus öffentlichem und privatem Schlüssel auf Ihrem Ubuntu-Desktop zu erzeugen. Geben Sie dazu den Befehl auf Ihrem Ubuntu-Desktop ein (nicht auf Ihrem Server):
ssh-keygen -t rsa -b 4096
Der Befehl ist für die Erstellung des Standard-Schlüsselpaars vom Typ RSE zuständig
-t bezieht sich auf "type".
-b bezieht sich auf Bits. Die Standardlänge eines Schlüssels beträgt 3072 Bits. Sie können sie optional erhöhen, um ein höheres Maß an Sicherheit zu erreichen.
Sie können die Eingabetaste drücken, um den Standardspeicherort (~/.ssh/id_rsa) zu akzeptieren, und die Passphrase aus Bequemlichkeit leer lassen oder eine für zusätzliche Sicherheit hinzufügen.
Nachdem alles generiert wurde, erhalten Sie etwas wie:
Your identification has been saved in /home/your_username/.ssh/id_rsa.
Your public key has been saved in /home/your_username/.ssh/id_rsa.pub.
Schritt 2: Hochladen Ihres öffentlichen Schlüssels auf einen entfernten Linux-Server
Nun, da alles, was Sie benötigen, generiert wurde, können Sie es auf Ihren Server hochladen. Es muss nicht unbedingt ein Ubuntu-Server sein, es kann jede Linux-Distribution laufen, solange der OpenSSH-Server darauf läuft.
Geben Sie zunächst den folgenden Befehl ein, um den öffentlichen Server auf den entfernten Desktop zu kopieren. "Ihr_Benutzername" und "remote_server_ip" sind durch den entsprechenden Benutzernamen und die IP-Adresse zu ersetzen.
ssh-copy-id yIhr_Benutzername@remote_server_ip
Als Nächstes werden Sie aufgefordert, das Passwort des Remote-Servers einzugeben, wenn Sie im vorherigen Schritt eine Passphrase festgelegt haben.
Sobald der Schlüssel kopiert ist, erhalten Sie eine ähnliche Ausgabe:
Number of keys added: 1
Von nun an haben Sie einen passwortlosen Zugang zu Ihrem Server eingerichtet
Deaktivieren der kennwortbasierten Authentifizierung
Nach der Konfiguration der passwortlosen Authentifizierung können Sie die passwortbasierte Authentifizierung deaktivieren und nur die auf dem SSH-Schlüssel basierende Authentifizierung übrig lassen, um Ihre Sicherheit noch weiter zu erhöhen und Ihren Server Bruteforce-sicher zu machen. So machen Sie es:
- Zugriff auf Ihren Server: ssh ihr_benutzername@remote_server_ip
- Öffnen Sie die Datei /etc/ssh/sshd_config auf dem Server mit einem Texteditor Ihrer Wahl (z. B. Nano oder Vim)
- Suchen Sie die folgende Zeile und ändern Sie ihren Wert in no: PasswordAuthentication no
- Suchen Sie die ChallengeResponseAuthentication Zeile und vergewissern Sie sich, dass ihr Status ebenfalls no ist ChallengeResponseAuthentication no
- Speichern Sie und beenden Sie den Texteditor.
- Starten Sie den SSH-Dienst neu, um die Änderungen zu übernehmen: Debian/Ubuntu: sudo systemctl restart ssh RHEL/CentOS: sudo systemctl restart sshd
Jetzt muss die Passwortauthentifizierung vollständig deaktiviert werden, und Zugriffsversuche ohne Authentifizierungsschlüssel werden nicht mit Ausgaben wie Permission denied (publickey) oder Read:Verbindung von Gegenstelle zurückgesetzt funktionieren.
Beachten Sie, dass sowohl PasswordAuthentication als auch ChallengeResponseAuthentication auf "no" gesetzt sein müssen, da sonst die Passwortauthentifizierung weiterhin verfügbar ist.
Sichern Sie Ihr öffentliches/privates Schlüsselpaar mit Backups.
Nach Abschluss der Konfiguration des Paares aus öffentlichem und privatem Schlüssel müssen Sie im nächsten Schritt Sicherungskopien erstellen. Da die Schlüssel nun für die Anmeldung bei Ihrem Server erforderlich sind, kann ihr Verlust dazu führen, dass Sie den Zugang zu Ihrem Server verlieren. Aus diesem Grund sollten Sie Sicherungskopien Ihres öffentlichen/privaten Schlüsselpaars an einem sicheren Ort erstellen, auf den Sie leicht zugreifen können (z. B. auf einem USB-Laufwerk usw.). Im Folgenden wird Schritt für Schritt gezeigt, wie Sie eine Sicherungskopie Ihres öffentlichen/privaten Schlüsselpaars erstellen.
- Suchen Sie den Ort, an dem sich Ihre Schlüssel befinden. Normalerweise sollte es ein Verzeichnis wie ~/.ssh sein.
- Kopieren Sie Ihr Schlüsselpaar: Kopieren Sie das Schlüsselpaar an den gewünschten sicheren Ort mit dem cp Befehl
cp ~/.ssh/id_rsa ~/.ssh/id_rsa_backup
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub_backup
id_rsa und id_rsa.pub sollten durch die tatsächlichen Namen Ihrer Schlüsseldateien ersetzt werden, falls diese abweichen.
- Nachdem Sie nun Ihr Schlüsselpaar aus öffentlichem und privatem Schlüssel kopiert haben, sollten Sie es an einem sicheren Ort aufbewahren.
Wenn der von Ihnen gewählte Speicherort ein anderes Gerät ist, müssen Sie auch den Benutzer der Schlüssel auf diesem anderen Gerät ändern:
sudo chown new-user:new-user ~/.ssh/id_rsa*
Damit wird es möglich sein, auch von einem anderen Gerät aus auf Ihren Server zuzugreifen.
<H3> Wiederherstellung Ihres Schlüsselpaares
Wenn Sie Ihr Schlüsselpaar aus dem Backup, das Sie gemäß den obigen Anweisungen erstellt haben, wiederherstellen müssen, können Sie diese Schritte ausführen:
- Kopieren Sie die Sicherungsdateien: Kopieren Sie die Dateien des Schlüsselpaares, das Sie gesichert haben, in Ihr ~/.ssh-Verzeichnis:
cp ~/.ssh/id_rsa_backup ~/.ssh/id_rsa
cp ~/.ssh/id_rsa.pub_backup ~/.ssh/id_rsa.pub
- Angemessene Berechtigungen festlegen: Stellen Sie sicher, dass die Berechtigungen für diese Dateien sicher sind:
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
Testen Sie das Schlüsselpaar: Um zu prüfen, ob alles funktioniert, testen Sie das Schlüsselpaar, indem Sie Ihren Server per SSH verbinden
ssh ihr_benutzername@remote_server
Wenn Ihr Server mit einer Passphrase geschützt ist, werden Sie aufgefordert, diese einzugeben.
Erhöhte Sicherheit durch Speicherung von Schlüsselpasswörtern im SSH-Agenten
Wenn Sie einen Linux-Rechner verwenden, der nur über die Befehlszeile funktioniert, müssen Sie die Passphrase jedes Mal eingeben, wenn Sie über SSH auf ein anderes Linux-Gerät zugreifen. Um dies zu beheben, müssen Sie die Schlüssel-Passphrase im SSH-Agenten speichern. So geht's:
- Schlüsselbund installieren:
sudo apt install keychain
- Nehmen Sie Änderungen an der Datei .bash_profile oder .profile vor, um die Ausführung der Befehle zu automatisieren:
- /usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh
- Wenn Sie sich erneut anmelden, erhalten Sie eine ähnliche Ausgabe wie diese:
Last login: Sun Aug 12 15:20:07 2020 from 203.45.67.89
-
keychain 2.7.1 ~ http://www.funtoo.org -
Found existing ssh-agent: 17892
Adding 1 ssh key(s): /home/johndoe/.ssh/id_rsa
Enter passphrase for /home/johndoe/.ssh/id_rsa:
-
ssh-add: Identities added: /home/johndoe/.ssh/id_rsa
Jetzt, da der Schlüsselbund konfiguriert und das Schlüsselpaar gespeichert ist, müssen Sie die Passphrase nicht mehr jedes Mal eingeben, wenn Sie Ihren Server per SSH verbinden.
Ändern der Passphrase Ihres privaten Schlüssels
Wenn Sie irgendwann Ihre Passphrase für den privaten Schlüssel ändern möchten, können Sie folgenden Befehl verwenden:
ssh-keygen -f ~/.ssh/id_rsa -p