In Ubuntu können Sie via Terminal ganz einfach ein SSH-Schlüs­sel­paar erstellen. An­schlie­ßend versorgen Sie Ihren Server mit dem öf­fent­li­chen Key, um dort die Mög­lich­keit der sicheren Anmeldung ein­zu­rich­ten. Wie sehen die einzelnen Schritte im Detail aus?

Dedicated Server
De­di­zier­te Server mit mo­derns­ten Pro­zes­so­ren
  • 100 % En­ter­pri­se-Hardware
  • Kon­fi­gu­rier­ba­re Hardware-Aus­stat­tung
  • ISO-zer­ti­fi­zier­te Re­chen­zen­tren

Was ist ein SSH-Key?

Wer sichere Ver­bin­dun­gen über SSH nutzen möchte, kann die Au­then­ti­fi­zie­rung mithilfe von SSH-Keys ohne Pass­wort­ein­ga­be erledigen. Konkret wird hierfür ein SSH-Schlüs­sel­paar benötigt, bestehend aus einem öf­fent­li­chen und einem privaten Key. Der öf­fent­li­che Schlüssel wird auf dem System hin­ter­legt, zu dem die SSH-Ver­bin­dung aufgebaut werden soll, bei­spiels­wei­se auf einem Server. Der private SSH-Key, der besonders zu schützen ist, wird auf Client-Seiten erstellt und ge­spei­chert und beim Ver­bin­dungs­auf­bau für die Ent­schlüs­se­lung des öf­fent­li­chen SSH-Keys benötigt.

Tipp

SSH-Schlüssel kommen mitt­ler­wei­le bei ver­schie­dens­ten Services zum Einsatz. Unter anderem ist SSH seit Ende 2021 eines von zwei ver­füg­ba­ren Au­then­ti­fi­zie­rungs­ver­fah­ren für den Kom­man­do­zei­len­zu­gang in GitHub. Mehr zu diesem Thema erfahren Sie in unserem Artikel „Ver­wen­dung eines SSH-Keys mit GitHub“.

SSH-Key in Ubuntu erstellen und ein­rich­ten: Schritt-für-Schritt-Anleitung

Sichere An­mel­dun­gen auf Servern oder bei be­stimm­ten Services – ohne Pass­wort­ein­ga­be: SSH-Schlüs­sel­paa­re für die Au­then­ti­fi­zie­rung zu nutzen, ist äußerst praktisch. In den nach­fol­gen­den Schritten prä­sen­tie­ren wir Ihnen ex­em­pla­risch am Beispiel von Ubuntu 22.04, wie Sie SSH-Keys in Ubuntu ge­ne­rie­ren und für die Au­then­ti­fi­zie­rung auf einem Server ein­rich­ten, um die SSH-Keys für Ihre Netz­werk­ver­bin­dung zu nutzen.

Tipp

Sie sind auf der Suche nach einer sicheren Fi­le­hos­ting-Lösung? Mieten Sie jetzt Ihren SFTP-Server bei IONOS, um Ihre Daten sicher per SSH und FTP zu über­tra­gen und zu speichern!

Schritt 1: SSH-Schlüs­sel­paar erstellen

SSH-Keys sind in Ubuntu schnell generiert: Sie können ein Schlüs­sel­paar aus öf­fent­li­chem und privatem Key jederzeit direkt über das Terminal erstellen. Starten Sie hierfür die Kom­man­do­zei­le von Ubuntu und lassen Sie folgenden Befehl ausführen:

ssh-keygen

Auf diese Weise wird au­to­ma­tisch ein RSA-Schlüs­sel­paar mit 3.072-Bit-Ver­schlüs­se­lung generiert, was für die meisten An­wen­dungs­fäl­le 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 aus­ge­führt haben, generiert Ubuntu ein Schlüs­sel­paar. Sie werden gefragt, ob Sie die SSH-Keys im Ubuntu-Nut­zer­ver­zeich­nis (Un­ter­ord­ner /.ssh) speichern wollen, und können diese Anfrage mit der Ein­ga­be­tas­te be­stä­ti­gen. Al­ter­na­tiv geben Sie einen anderen Pfad an.

Nachdem Sie den Spei­cher­ort des Schlüs­sel­paars fest­ge­legt haben, bietet Ihnen Ubuntu an, eine sichere Pass­phra­se zu de­fi­nie­ren. Eine Pass­phra­se fügt der ver­schlüs­sel­ten Au­then­ti­fi­zie­rungs­me­tho­de eine zu­sätz­li­che Si­cher­heits­ebe­ne hinzu, um zu ver­hin­dern, dass sich Benutzer anmelden, die nicht au­to­ri­siert sind. Tippen Sie die ge­wünsch­te Phrase ein oder lassen Sie den Eintrag leer, falls Sie auf diese Si­cher­heits­ebe­ne ver­zich­ten wollen.

In beiden Fällen be­stä­ti­gen Sie mit der Ein­ga­be­tas­te und erhalten als Be­stä­ti­gung der er­folg­rei­chen Key-Er­stel­lung ein in­di­vi­du­el­les „randomart image“ der SSH-Schlüssel:

Tipp

Sie sind sich unsicher, mit welcher Sys­tem­ver­si­on Sie gerade arbeiten? Lesen Sie in folgendem Artikel, wie Sie sich die Ubuntu-Version anzeigen lassen können.

Schritt 2: Öf­fent­li­chen Schlüssel auf Server über­tra­gen

Im nächsten Schritt gilt es, den öf­fent­li­chen Key an das Ziel­sys­tem zu über­tra­gen, mit dem Sie später sichere SSH-Ver­bin­dun­gen aufbauen wollen. Hierfür benötigen Sie den Be­nut­zer­na­men, 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 statt­des­sen den User „root“ verwenden.

Für die Über­tra­gung des öf­fent­li­chen SSH-Keys hält Ubuntu stan­dard­mä­ß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 Ver­bin­dung zu dem Ziel-Host her­stel­len, prä­sen­tiert Ihnen das Terminal die Meldung, dass die Au­then­ti­fi­zie­rung des Hosts nicht fest­ge­stellt werden kann („au­then­ti­ci­ty of host … can’t be es­tab­lished“). Geben Sie „yes“ ein und be­stä­ti­gen Sie die Eingabe, um mit der Ein­rich­tung fort­zu­fah­ren.

Im Anschluss sucht der Dienst nach dem zuvor er­stell­ten Schlüssel. Wird er gefunden, können Sie den Prozess fort­set­zen, indem Sie das Passwort für die Anmeldung auf dem Ziel­sys­tem eingeben. Die Ein­rich­tung wird ab­ge­schlos­sen und Sie erhalten folgenden Output, wenn der öf­fent­li­che Key er­folg­reich über­tra­gen werden konnte:

Schritt 3: SSH-Au­then­ti­fi­zie­rung auf dem Ziel-Host

Sie können sich nun jederzeit per SSH auf dem Gerät bzw. dem Server anmelden, der über den öf­fent­li­chen Schlüssel verfügt. Wie bereits bei der Über­tra­gung des Keys benötigen Sie den Be­nut­zer­na­men sowie die IP-Adresse bzw. Domain des Ziel-Hosts. Diese sind beim folgenden Kommando ent­spre­chend ein­zu­tra­gen:

ssh username@ip-adresse/domain

Haben Sie eine Pass­phra­se für das Schlüs­sel­paar ein­ge­rich­tet, wird diese im nächsten Schritt abgefragt. Geben Sie das vergebene Kennwort ein und drücken Sie ab­schlie­ßend auf „Ent­sper­ren“, um sich mit dem Ziel­sys­tem zu verbinden.

Schritt 4: Passwort-Eingabe de­ak­ti­vie­ren

War die Anmeldung mit dem SSH-Schlüs­sel­paar er­folg­reich, benötigen Sie die stan­dard­mä­ßi­ge Passwort-Anmeldung in der Folge nicht mehr. Grund­sätz­lich ist dieses Au­then­ti­fi­zie­rungs­ver­fah­ren aber natürlich weiterhin aktiv – auch für Unbefugte, die sich, etwa in Form von Brute-Force-Angriffen, Zugang zu dem System ver­schaf­fen wollen.

Um in diesem Punkt für mehr Si­cher­heit zu sorgen, können Sie die Anmeldung per Passwort auf dem Server bzw. Zielgerät de­ak­ti­vie­ren. Melden Sie sich zu diesem Zweck über SSH an und öffnen Sie dann die Kon­fi­gu­ra­ti­ons­da­tei des SSH-Services:

sudo nano /etc/ssh/sshd_config

Suchen Sie in der Kon­fi­gu­ra­ti­ons­da­tei nach dem Eintrag „Pass­wordAu­then­ti­ca­ti­on“ und setzen Sie diesen auf „no“.

Speichern Sie die Än­de­run­gen an der Kon­fi­gu­ra­ti­ons­da­tei und starten Sie danach den SSH-Dienst mit folgendem Kommando neu:

sudo systemctl restart ssh

So über­tra­gen Sie Ihren SSH-Key in Ubuntu manuell

Nicht auf allen Systemen ist das im zweiten Schritt be­schrie­be­ne Tool ssh-copy-id verfügbar. In diesem Fall können Sie den er­stell­ten öf­fent­li­chen Schlüssel aber ganz einfach manuell auf das Ziel­sys­tem über­tra­gen.

Lassen Sie sich zu diesem Zweck zunächst Ihren öf­fent­li­chen Schlüssel anzeigen, indem Sie folgendes Kommando ausführen:

cat ~/.ssh/id_rsa.pub

Den aus­ge­spiel­ten Key kopieren Sie jetzt in die Datei „aut­ho­ri­zed_keys“ im „ssh“-Ver­zeich­nis auf dem Ziel-Host. Sollte das Ver­zeich­nis noch nicht vorhanden sein, erstellen Sie es mit folgenden Kommandos:

mkdir -p ~/.ssh

Die Über­tra­gung des Schlüs­sels gelingt an­schlie­ßend durch folgenden Befehl:

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

Anstelle von „Schlüssel“ tragen Sie in dem Kommando den zuvor er­hal­te­nen Output ein, beginnend mit „ssh-rsa“.

Im letzten Schritt sorgen Sie dafür, dass für das „ssh“-Ver­zeich­nis und die Datei „aut­ho­ri­zed_keys“ alle Gruppen- und andere Be­rech­ti­gun­gen entfernt werden:

chmod -R go= ~/.ssh
Tipp

Suchen Sie nach mehr In­for­ma­tio­nen zu den Themen „SSH“ und „Ubuntu“? Folgende Artikel im Digital Guide könnten Sie ebenfalls in­ter­es­sie­ren:

Zum Hauptmenü