SSH ist eine hervorragende Technologie, die vielfältige Möglichkeiten bietet. Sie ermöglicht es, VPN-Verkehr zu verschleiern, die Verbindung zu Webseiten zu sichern und vieles mehr. Einziges Manko ist die wiederholte Passworteingabe bei jeder Verbindung zu einem entfernten Rechner. Dies kann insbesondere für Entwickler frustrierend sein, die per Bash-Skript gleichzeitig mit vielen Computern via SSH kommunizieren möchten, oder für Nutzer, die einfach keine Lust mehr auf die ständige Passworteingabe haben. Die Lösung hierfür ist passwortloses SSH. Bei diesem Verfahren wird auf dem Host-Rechner ein sicherer SSH-Schlüssel generiert und zur Authentifizierung des Zugriffs genutzt. Mit diesem Schlüssel kann sich jeder anmelden, auch ohne das Passwort zu kennen. Im Folgenden erklären wir, wie Sie dies einrichten können.
Was genau sind SSH-Schlüssel?
Ein SSH-Schlüssel ist eine einzigartige Identifikationsdatei, die in Verbindung mit Secure Shell verwendet wird. Sie dient dazu, einem Nutzer eine eindeutige Identität zuzuweisen und ihn bei der Anmeldung als „vertrauenswürdig“ zu kennzeichnen. Diese Schlüssel sind mehr als nur Dateien, die die Identität einer Person bestätigen. Sie ermöglichen es, sich statt mit einem Passwort über SSH anzumelden. Anstatt also jedes Mal ein Passwort eingeben zu müssen, authentifizieren Sie sich mit dem SSH-Schlüssel.
Der SSH-Schlüssel wird an einem geschützten Ort in Ihrer Linux-Installation gespeichert. Von dort aus können Sie sich ohne erneute Passworteingabe beliebig oft mit dem Remote-Rechner verbinden.
Erstellung sicherer SSH-Schlüssel
Um sichere SSH-Schlüssel zu erstellen, ist zunächst eine betriebsbereite SSH-Umgebung erforderlich. Dies bedeutet nicht zwingend, dass ein SSH-Server laufen muss, sondern lediglich, dass die grundlegenden SSH-Tools und -Technologien auf Ihrem Linux-Rechner installiert sind. Wenn Sie unsicher sind, wie Sie SSH einrichten, folgen Sie unserer Anleitung hier.
Es ist wichtig, die SSH-Schlüssel immer auf dem System zu erstellen, das den SSH-Server hostet. Generieren Sie die Schlüssel nicht auf einem Server, der keine SSH-Sitzung hostet, um sie dann auf den eigentlichen SSH-Host-Rechner zu kopieren. Dies wird nicht funktionieren.
Um den Schlüsselgenerierungsprozess zu starten, öffnen Sie ein Terminal. Dort geben Sie folgenden Befehl ein:
ssh-keygen -t rsa
Nach der Ausführung von ssh-keygen wird die Meldung „Generating public/private rsa key pair“ ausgegeben. Dies bedeutet, dass das System sowohl einen öffentlichen als auch einen privaten Schlüssel für Sie erstellt. Der öffentliche Schlüssel ist für jedermann bestimmt und kann problemlos weitergegeben werden. Der private Schlüssel hingegen sollte niemals an Dritte weitergegeben werden, daher der Name „privat“.
Die Schlüssel werden unter /home/Benutzername/.ssh/id_rsa gespeichert.
Achtung: Löschen Sie den Ordner ~/.ssh auf keinen Fall, da dieser Ihre Schlüssel enthält. Jegliche Manipulation dieses Ordners kann dazu führen, dass die SSH-Anmeldung fehlschlägt und eine Warnung ausgegeben wird, die den Zugriff unterbindet.
SSH-Schlüssel auf den Remote-Rechner übertragen
Nachdem die SSH-Schlüssel (öffentlicher und privater) erstellt wurden, müssen diese auf das System kopiert werden, von dem aus Sie sich anmelden möchten. Dieser Vorgang ist auf allen Rechnern zu wiederholen, von denen Sie sich über SSH anmelden möchten. Andernfalls ist auf diesen Rechnern die Anmeldung per Passwort notwendig.
Um die Schlüssel auf das Remote-System zu übertragen, folgen Sie diesem Beispiel. Stellen Sie sicher, dass Sie dies vom Host-Rechner über SSH ausführen:
ssh [email protected] mkdir -p .ssh
Dieser SSH-Befehl erstellt einen versteckten Ordner ~/.ssh im Home-Verzeichnis des Remote-Rechners (mit dem zum Anmelden verwendeten Benutzer). Dieser Ordner ist wichtig, da wir dort die generierten SSH-Schlüsseldateien speichern.
Um die SSH-Schlüsseldateien zu kopieren, führen Sie noch einen weiteren Befehl vom SSH-Host-Rechner zum Remote-Rechner aus, der die Schlüssel benötigt:
cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Der Kopiervorgang kann je nach Netzwerkgeschwindigkeit einige Sekunden dauern. Nach Abschluss des Vorgangs verfügt der Remote-Rechner über die generierten Schlüssel und kann sich ohne Passwort beim SSH-Host-Rechner anmelden.
Sicherung von SSH-Schlüsseln
SSH-Schlüssel sind wertvolle Elemente und jeder ist einzigartig. Daher ist es ratsam, diese zu sichern. Das Problem ist jedoch, dass bei einer Speicherung an einem ungeschützten Ort jemand Ihre SSH-Schlüssel in seinen Besitz bringen und für eigene Zwecke verwenden kann. Eine gute Möglichkeit zur sicheren Sicherung von SSH-Schlüsseln ist die Verschlüsselung.
Die schnellste, effizienteste und einfachste Methode zur Verschlüsselung ist die Verwendung von GnuPG. Dieses Tool ist in den meisten Linux-Verschlüsselungswerkzeugen integriert und die erste Wahl für die Verschlüsselung von Dateien. Um GnuPG zu installieren, öffnen Sie ein Terminal und suchen Sie über Ihren Paketmanager nach „gpg“. Das Programm ist selbst auf eher unbekannten Linux-Distributionen leicht zu finden.
Sobald GPG betriebsbereit ist, starten Sie den Verschlüsselungsprozess, indem Sie Ihr ~/.ssh-Verzeichnis in eine tar-Archivdatei komprimieren. Dies erspart Ihnen die Notwendigkeit, jede einzelne Datei im Ordner ~/.ssh einzeln zu verschlüsseln.
tar -czvf ssh-stuff.tar.gz /home/Benutzername/.ssh
Nachdem die Komprimierung abgeschlossen ist, starten Sie den Verschlüsselungsprozess.
Hinweis: Führen Sie vor der Verschlüsselung den Befehl gpg im Terminal aus, um einen neuen Schlüsselbund zu generieren.
gpg -c ssh-stuff.tar.gz
Nach Abschluss des Verschlüsselungsprozesses erstellt GnuPG eine Datei mit der Bezeichnung „ssh-stuff.tar.gz.gpg“. Die ursprüngliche, unverschlüsselte Version der Datei können Sie nun löschen. Zur Entschlüsselung Ihres Sicherungsarchivs gehen Sie wie folgt vor:
gpg ssh-stuff.tar.gz.gpg