SSH-Key unter Ubuntu erstellen und einrichten

In Ubuntu können Sie via Terminal ganz einfach ein SSH-Schlüsselpaar erstellen. Anschließend versorgen Sie Ihren Server mit dem öffentlichen Key, um dort die Möglichkeit der sicheren Anmeldung einzurichten. Wie sehen die einzelnen Schritte im Detail aus?

Dedicated Server von IONOS

Hardware trifft Cloud: Dedicated Server mit Cloud-Integration und mit minutengenauer Abrechnung, inklusive persönlichem Berater!

24/7 Support
Unbegrenzter Traffic
SSL Zertifikat

Was ist ein SSH-Key?

Wer sichere Verbindungen über SSH nutzen möchte, kann die Authentifizierung mithilfe von SSH-Keys ohne Passworteingabe erledigen. Konkret wird hierfür ein SSH-Schlüsselpaar benötigt, bestehend aus einem öffentlichen und einem privaten Key. Der öffentliche Schlüssel wird auf dem System hinterlegt, zu dem die SSH-Verbindung aufgebaut werden soll, beispielsweise auf einem Server. Der private SSH-Key, der besonders zu schützen ist, wird auf Client-Seiten erstellt und gespeichert und beim Verbindungsaufbau für die Entschlüsselung des öffentlichen SSH-Keys benötigt.

Tipp

SSH-Schlüssel kommen mittlerweile bei verschiedensten Services zum Einsatz. Unter anderem ist SSH seit Ende 2021 eines von zwei verfügbaren Authentifizierungsverfahren für den Kommandozeilenzugang in GitHub. Mehr zu diesem Thema erfahren Sie in unserem Artikel „Verwendung eines SSH-Keys mit GitHub“.

SSH-Key in Ubuntu erstellen und einrichten: Schritt-für-Schritt-Anleitung

Sichere Anmeldungen auf Servern oder bei bestimmten Services – ohne Passworteingabe: SSH-Schlüsselpaare für die Authentifizierung zu nutzen, ist äußerst praktisch. In den nachfolgenden Schritten präsentieren wir Ihnen exemplarisch am Beispiel von Ubuntu 22.04, wie Sie SSH-Keys in Ubuntu generieren und für die Authentifizierung auf einem Server einrichten, um die SSH-Keys für Ihre Netzwerkverbindung zu nutzen.

Tipp

Sie sind auf der Suche nach einer sicheren Filehosting-Lösung? Mieten Sie jetzt Ihren SFTP-Server bei IONOS, um Ihre Daten sicher per SSH und FTP zu übertragen und zu speichern!

Schritt 1: SSH-Schlüsselpaar erstellen

SSH-Keys sind in Ubuntu schnell generiert: Sie können ein Schlüsselpaar aus öffentlichem und privatem Key jederzeit direkt über das Terminal erstellen. Starten Sie hierfür die Kommandozeile von Ubuntu und lassen Sie folgenden Befehl ausführen:

ssh-keygen

Auf diese Weise wird automatisch ein RSA-Schlüsselpaar mit 3.072-Bit-Verschlüsselung generiert, was für die meisten Anwendungsfälle mehr als genug ist. Sie können auch größere Schlüssel mit 4.096 Bit erstellen, indem Sie das Kommando um den Parameter „-b 4096“ erweitern.

ssh-keygen -b 4096

Sobald Sie den Befehl ausgeführt haben, generiert Ubuntu ein Schlüsselpaar. Sie werden gefragt, ob Sie die SSH-Keys im Ubuntu-Nutzerverzeichnis (Unterordner /.ssh) speichern wollen, und können diese Anfrage mit der Eingabetaste bestätigen. Alternativ geben Sie einen anderen Pfad an.

Nachdem Sie den Speicherort des Schlüsselpaars festgelegt haben, bietet Ihnen Ubuntu an, eine sichere Passphrase zu definieren. Eine Passphrase fügt der verschlüsselten Authentifizierungsmethode eine zusätzliche Sicherheitsebene hinzu, um zu verhindern, dass sich Benutzer anmelden, die nicht autorisiert sind. Tippen Sie die gewünschte Phrase ein oder lassen Sie den Eintrag leer, falls Sie auf diese Sicherheitsebene verzichten wollen.

In beiden Fällen bestätigen Sie mit der Eingabetaste und erhalten als Bestätigung der erfolgreichen Key-Erstellung ein individuelles „randomart image“ der SSH-Schlüssel:

Tipp

Sie sind sich unsicher, mit welcher Systemversion Sie gerade arbeiten? Lesen Sie in folgendem Artikel, wie Sie sich die Ubuntu-Version anzeigen lassen können.

Schritt 2: Öffentlichen Schlüssel auf Server übertragen

Im nächsten Schritt gilt es, den öffentlichen Key an das Zielsystem zu übertragen, mit dem Sie später sichere SSH-Verbindungen aufbauen wollen. Hierfür benötigen Sie den Benutzernamen, den Sie für die Anmeldung auf dem System verwenden, sowie die IP-Adresse bzw. Domain des Systems. Sollten Sie noch keinen Usernamen definiert haben, können Sie stattdessen den User „root“ verwenden.

Für die Übertragung des öffentlichen SSH-Keys hält Ubuntu standardmäßig das Tool ssh-copy-id bereit. Die Syntax des passenden Kommandos sieht wie folgt aus:

ssh-copy-id username@ip-adresse/domain

Wenn Sie zum ersten Mal eine Verbindung zu dem Ziel-Host herstellen, präsentiert Ihnen das Terminal die Meldung, dass die Authentifizierung des Hosts nicht festgestellt werden kann („authenticity of host … can’t be established“). Geben Sie „yes“ ein und bestätigen Sie die Eingabe, um mit der Einrichtung fortzufahren.

Im Anschluss sucht der Dienst nach dem zuvor erstellten Schlüssel. Wird er gefunden, können Sie den Prozess fortsetzen, indem Sie das Passwort für die Anmeldung auf dem Zielsystem eingeben. Die Einrichtung wird abgeschlossen und Sie erhalten folgenden Output, wenn der öffentliche Key erfolgreich übertragen werden konnte:

Schritt 3: SSH-Authentifizierung auf dem Ziel-Host

Sie können sich nun jederzeit per SSH auf dem Gerät bzw. dem Server anmelden, der über den öffentlichen Schlüssel verfügt. Wie bereits bei der Übertragung des Keys benötigen Sie den Benutzernamen sowie die IP-Adresse bzw. Domain des Ziel-Hosts. Diese sind beim folgenden Kommando entsprechend einzutragen:

ssh username@ip-adresse/domain

Haben Sie eine Passphrase für das Schlüsselpaar eingerichtet, wird diese im nächsten Schritt abgefragt. Geben Sie das vergebene Kennwort ein und drücken Sie abschließend auf „Entsperren“, um sich mit dem Zielsystem zu verbinden.

Schritt 4: Passwort-Eingabe deaktivieren

War die Anmeldung mit dem SSH-Schlüsselpaar erfolgreich, benötigen Sie die standardmäßige Passwort-Anmeldung in der Folge nicht mehr. Grundsätzlich ist dieses Authentifizierungsverfahren aber natürlich weiterhin aktiv – auch für Unbefugte, die sich, etwa in Form von Brute-Force-Angriffen, Zugang zu dem System verschaffen wollen.

Um in diesem Punkt für mehr Sicherheit zu sorgen, können Sie die Anmeldung per Passwort auf dem Server bzw. Zielgerät deaktivieren. Melden Sie sich zu diesem Zweck über SSH an und öffnen Sie dann die Konfigurationsdatei des SSH-Services:

sudo nano /etc/ssh/sshd_config

Suchen Sie in der Konfigurationsdatei nach dem Eintrag „PasswordAuthentication“ und setzen Sie diesen auf „no“.

Speichern Sie die Änderungen an der Konfigurationsdatei und starten Sie danach den SSH-Dienst mit folgendem Kommando neu:

sudo systemctl restart ssh

So übertragen Sie Ihren SSH-Key in Ubuntu manuell

Nicht auf allen Systemen ist das im zweiten Schritt beschriebene Tool ssh-copy-id verfügbar. In diesem Fall können Sie den erstellten öffentlichen Schlüssel aber ganz einfach manuell auf das Zielsystem übertragen.

Lassen Sie sich zu diesem Zweck zunächst Ihren öffentlichen Schlüssel anzeigen, indem Sie folgendes Kommando ausführen:

cat ~/.ssh/id_rsa.pub

Den ausgespielten Key kopieren Sie jetzt in die Datei „authorized_keys“ im „ssh“-Verzeichnis auf dem Ziel-Host. Sollte das Verzeichnis noch nicht vorhanden sein, erstellen Sie es mit folgenden Kommandos:

mkdir -p ~/.ssh

Die Übertragung des Schlüssels gelingt anschließend durch folgenden Befehl:

echo Schlüssel >> ~/.ssh/authorized_keys

Anstelle von „Schlüssel“ tragen Sie in dem Kommando den zuvor erhaltenen Output ein, beginnend mit „ssh-rsa“.

Im letzten Schritt sorgen Sie dafür, dass für das „ssh“-Verzeichnis und die Datei „authorized_keys“ alle Gruppen- und andere Berechtigungen entfernt werden:

chmod -R go= ~/.ssh
Tipp

Suchen Sie nach mehr Informationen zu den Themen „SSH“ und „Ubuntu“? Folgende Artikel im Digital Guide könnten Sie ebenfalls interessieren: