Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

SSH-Key einrichten

profile picture
Author
Svenja Michal
Published
2021-11-05
Time to read
20 minutes reading time

Einführung

In diesem Tutorial wird erklärt, wie Sie mit einem SSH-Key arbeiten können. Das beinhaltet das Erstellen eines SSH-Key-Paares, das Kopieren des öffentlichen Keys auf externe Geräte und das Löschen eines SSH-Key-Paares.

SSH-Key erklärt

Secure Shell (SSH) ist ein Netzwerkprotokoll, mit dem es möglich ist Daten verschlüsselt von einem Gerät auf ein anderes zu übertragen. Um über SSH eine Verbindung aufzubauen, kann entweder ein Passwort oder ein SSH-Key zur Authentifizierung genutzt werden. Ein SSH-Key-Paar besteht aus zwei Teilen, einem privaten Key und einem öffentlichen Key. Beide Teile bestehen jeweils aus einer langen Zeichenfolge.

  • Der öffentliche Key nutzt einen bestimmten Algorithmus, um Nachrichten zu verschlüsseln.
  • Der private Key nutzt einen bestimmten Algorithmus, um Nachrichten zu entschlüsseln.

Sobald eine Nachricht mit einem öffentlichen Key verschlüsselt wurde, kann diese nur noch mit dem privaten Key desselben Key-Paares entschlüsselt werden. Der öffentliche Key kann und sollte auf allen externen Geräten (Server) hinterlegt werden, auf denen Sie sich über Ihren SSH-Key authentifizieren möchten. Da der öffentliche Key wortwörtlich öffentlich ist, kann jeder der im Besitz des privaten Keys ist, ebenfalls alle Nachrichten entschlüsseln. Aus diesem Grund sollte dieser Key niemals an andere weitergegeben werden. Der Vorteil von dieser Authentifizierungsmethode ist, dass ein SSH-Key sicherer ist als beispielsweise ein Passwort.

Mit einem SSH-Key wird die Verbindung automatisch aufgebaut. Im Hintergrund laufen dabei im Wesentlichen 4 Schritte ab:

  1. Es wird überprüft, ob der öffentliche Key vom Client beim Server hinterlegt wurde.
  2. Eine willkürliche Nachricht wird vom Server mithilfe des öffentlichen Keys verschlüsselt und an den Client weitergegeben.
  3. Die Nachricht wird vom Client mithilfe des privaten Keys wieder entschlüsselt.
  4. Wenn die Nachricht richtig entschlüsselt wurde, wird die Verbindung zugelassen.

ssh

Voraussetzungen

  • Grundlegende Kenntnisse über Hetzner Cloud
  • Kommandozeilen-Tool

Beispiel-Benennungen

  • Benutzername: holu
  • IPv4: <10.0.0.1>

Beachten Sie bitte, dass in allen Beispiel-Befehlen holu mit dem eigenen Benutzernamen ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse.

Schritt 1 - SSH-Key erstellen

Um auf Ihrem lokalen Gerät einen SSH-Key zu erstellen, öffnen Sie bitte Ihre Kommandozeile. Grundsätzlich genügt es schon ssh-keygen ohne weitere Angaben auszuführen. In diesem Fall wird dann automatisch ein RSA-Key erstellt.

ssh-keygen

Alternativ können Sie zu diesem Befehl aber noch weitere Informationen ergänzen, nach denen Ihr SSH-Key erstellt werden soll. Unter anderem können Sie den Schlüsseltyp und die Schlüssellänge bestimmen.

Optionen:

  • -t bestimmt den Schlüsseltyp
  • -b bestimmt die Schlüssellänge

Typ:

  • rsa
  • ed25519
  • dsa
  • ecdsa

Je nach Typ unterscheidet sich der Algorithmus, der verwendet wird. DSA und ECDSA haben zusätzlich einen Parameter (k), der eine gewisse Sicherheitslücke bieten kann. Denn sobald derselbe Parameter zweimal verwendet wird, können Außenstehende diese Information nutzen, um den privaten Key herausfinden. Aus mathematischer Sicht ist ein Ed25519-Key vermutlich einer der Sichersten. Wenn Ihr Gerät diesen Key nicht unterstützt, können Sie auch einen RSA-Key erstellen.

  1. Ed25519-Key

    Ed25519 gilt als ziemlich sicher und wird seit OpenSSH 6.5 (2014) unterstützt. Sollte Ihr Gerät diesen Key unterstützen, empfehlen wir diesen auch zu nehmen. Die Schlüssellänge ist genau festgelegt und kann nicht individuell angepasst werden.

    $ ssh-keygen -t ed25519
  2. RSA-Key

    RSA ist schon relativ lang im Umlauf und im Vergleich nicht ganz so sicher wie ein Ed25519-Key. RSA hat standardmäßig 3072 Bit und sollte nie kleiner sein als 1024 Bit. Um die Sicherheit zu erhöhen, kann beim Erstellen des Keys auch eine Schlüssellänge von 4096 Bit festgelegt werden.

    $ ssh-keygen -t rsa -b 4096
  3. ECDSA-Key

    ECDSA wird seit OpenSSH 5.7 (2011) unterstützt. Hier ist eine Schlüssellänge von 256, 384 oder 521 Bit möglich. Wenn dazu keine Angabe gemacht wird, wird automatisch ein Schlüssel mit 256 Bit erstellt.

  4. DSA-Key

    DSA gilt als relativ unsicher und wird seit OpenSSH 7.0 (2017) nicht mehr unterstützt. Bei einem DSA-Key ist es nicht möglich die Schlüssellänge selbst zu bestimmen, da diese auf 1024 Bit festgelegt ist.

Sobald der Befehl zum Erstellen eines SSH-Keys ausgeführt wurde, sollte ein Text wie dieser erscheinen:

Generating public/private <type> key pair.
Enter file in which to save the key (/<your_home>/.ssh/id_<type>):

Standardmäßig wird ein SSH-Key unter /<your_home>/.ssh/id_<type> gespeichert. Sie können diesen Pfad mit ENTER bestätigen oder auch einen anderen bestimmen. Wenn möglich, sollte der Standardpfad aber beibehalten werden, da der SSH-Client den Key beim Authentifizieren dann automatisch finden kann. Sollten Sie unter diesem Pfad bereits einen SSH-Key besitzen, erscheint vermutlich ein Text wie dieser:

/home/your_home/.ssh/id_<type> already exists.
Overwrite (y/n)?

Wenn Sie an dieser Stelle y angeben, wird der bereits bestehende SSH-Key unwiderruflich überschrieben und Sie werden diesen nie wieder verwenden können. Überschreiben Sie diesen also besser nicht unüberlegt.

Sobald der Pfad feststeht, sollten Sie die Möglichkeit bekommen ein Passwort festzulegen.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Mit einem Passwort können Sie die Sicherheit noch weiter erhöhen. Wenn Sie eines festlegen, werden Sie dieses künftig immer angeben müssen, wenn Sie den Key verwenden. Alternativ können Sie die Eingabe auch mit ENTER überspringen. Output:

Your identification has been saved in /<your_home>/.ssh/id_<type>
Your public key has been saved in /<your_home>/.ssh/id_<type>.pub

Der SSH-Key wurde nun erstellt und unter dem zuvor festgelegten Pfad gespeichert.

Schritt 2 - SSH-Key öffnen

Beim Erstellen eines SSH-Keys wird automatisch ein SSH-Ordner mit mehreren Dateien angelegt. Wichtige Dateien sind:

  • id_<type>
  • id_<type>.pub
  • authorized_keys

Die Datei id_<type> beinhaltet den privaten Key. Diese Datei sollte niemals mit anderen geteilt oder weitergegeben werden.

Die Datei id_<type>.pub beinhaltet den öffentlichen Key. Das ist der Teil, den Sie auf den Geräten hinterlegen müssen, auf denen Sie sich per SSH-Key authentifizieren wollen. Auf diesen Geräten wird der öffentliche Key in der Datei authorized_keys hinterlegt.

Die Datei authorized_keys beinhaltet die öffentlichen Keys von allen Geräten, die per SSH-Key auf das Gerät zugreifen dürfen. In dieser Datei befindet sich immer ein Key pro Zeile. Sobald ein Gerät versucht, eine Verbindung aufzubauen, wird überprüft ob der öffentliche Key des externen Geräts in dieser Datei enthalten ist.

Um den SSH-Ordner zu öffnen, können Sie folgenden Befehl nutzen:

cd ~/.ssh

Die Namen der Dateien im SSH-Ordner können Sie sich mit ls listen lassen. Die Dateien selbst können Sie mit cat gefolgt vom Dateinamen öffnen. Um den öffentlichen SSH-Key zu öffnen, können Sie beispielsweise folgenden Befehl nutzen:

cat id_<type>.pub

Beachten Sie bitte, dass <type> so angepasst werden muss, dass es dem tatsächlichen Namen der Datei entspricht.

Schritt 3 - Mit dem Server verbinden

In Schritt 2 wurden bereits drei der wichtigsten Dateien innerhalb eines SSH-Ordners vorgestellt. Neben den Dateien für den SSH-Key gibt es aber noch eine andere wichtige Datei.

  • known_hosts

Diese Datei benötigen Sie, wenn Sie sich über SSH mit einem anderen Gerät verbinden. Denn darin werden die Fingerprints zu den Geräten hinterlegt, mit denen Sie sich verbinden möchten. Vor allem wenn Sie sich das erste Mal mit Ihrem Server verbinden, sollten Sie daher ein paar Punkte dazu beachten. Über SSH verbinden:

$ ssh holu@<10.0.0.1>

Beachten Sie bitte, dass holu mit dem eigenen Benutzernamen ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse. Wenn Sie einen neuen Server verwenden und noch keine neuen Benutzer erstellt haben, ist der Benutzername vermutlich root.

Wenn Sie das erste Mal eine Verbindung mit einem Server aufbauen, erscheint für gewöhnlich eine Warnung bezüglich host authenticity. An dieser Stelle kann yes angegeben werden. Der in der Warnung angegebene Fingerprint wird dann lokal in der known_hosts-Datei gespeichert und in Zukunft automatisch erkannt, wenn Sie sich mit dieser IP-Adresse erneut verbinden möchten. Der Fingerprint dient im Grunde zum Identifizieren eines Geräts. Normalerweise sollte sich dieser Fingerprint nie verändern. Sobald Sie aber beispielsweiße Ihren Cloud Server löschen, wird dieser Fingerprint nicht mehr gültig sein. Der Fingerprint bleibt allerdings weiterhin in der Datei enthalten und wird nicht automatisch entfernt. Sollten Sie zu einem späteren Zeitpunkt wieder eine Verbindung zu einem neuen Server mit Ihrer alten IP-Adresse aufbauen wollen, wird es zu einer Fehlermeldung kommen. Ihr lokales Gerät wird den bereits zuvor in der known_hosts-Datei gespeicherten Fingerprint überprüfen. Diesmal wird er aber nicht mehr gültig sein. Wenn Sie sich also mit dem Server verbinden wollen, wird eine Warnung wie diese erscheinen:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:XEBOdibbPpSSWWZZ+0VO6ayoCjFghKys0FfVE6EDWZz.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:7
  remove with:
  ssh-keygen -f "/home/user/.ssh/known_hosts" -R "<10.0.0.1>"
ECDSA host key for <10.0.0.1> has changed and you have requested strict checking.
Host key verification failed.

Wenn Ihnen keine Warnung angezeigt wird, können Sie die folgenden zwei Stichpunkte überspringen.

Wenn Sie eine solche Warnung angezeigt bekommen, obwohl Sie keine größeren Änderungen vorgenommen haben, sollten Sie diese ernst nehmen und versuchen den Grund dafür herauszufinden.

Wenn Sie eine solche Warnung angezeigt bekommen und die Ursache kennen (z. B. Cloud Server gelöscht), können Sie den alten Fingerprint aus der known_hosts-Datei entfernen. Dabei haben Sie zwei Möglichkeiten:

  • Eine Möglichkeit einen bereits vorhandenen Fingerprint aus der known_hosts-Datei zu entfernen ist, den in der Warnung vorgeschlagenen Befehl zu übernehmen:

    ssh-keygen -f "/home/user/.ssh/known_hosts" -R "<10.0.0.1>"

    Output:

    # Host <10.0.0.1> found: line 7
    /home/user/.ssh/known_hosts updated.
    Original contents retained as /home/user/.ssh/known_hosts.old
    user@<hostname>:/mnt/c/Users/user$

    Wie im Output angegeben, wird mit dieser Methode allerdings nicht nur der Fingerprint aus der Datei entfernt, sondern er wird gleichzeitig auch in der known_hosts.old Datei gespeichert, für den Fall, dass Sie diesen zu einem späteren Zeitpunkt doch nochmal benötigen.

    Wenn Sie keine Kopie der ursprünglichen known_hosts-Datei benötigen, können Sie die known_hosts.old-Datei und den gesamten Inhalt mit rm -v known_hosts.old löschen oder Sie nutzen die zweite Möglichkeit, um den Fingerprint manuell aus der known_hosts-Datei entfernen. Sobald der Fingerprint nicht mehr in der Datei enthalten ist, können Sie erneut mit ssh holu@<10.0.0.1> eine Verbindung zu Ihrem Server aufbauen. Diesmal sollte lediglich eine Warnung bezüglich host authenticity erscheinen. Geben Sie an dieser Stelle yes an, damit der neue Fingerprint wieder lokal in der known_hosts-Datei gespeichert wird.

  • Eine weitere Möglichkeit ist, den Fingerprint manuell aus der known_hosts-Datei zu entfernen. Wenn bei Ihnen bereits mehrere Fingerprints in dieser Datei gespeichert sind, können Sie der Warnung die Zeile entnehmen, in welcher der ungültige Fingerprint gespeichert ist. In der Warnung steht Offending ECDSA key in /home/user/.ssh/known_hosts:7. Das bedeutet, dass der Fingerprint in diesem Beispiel in Zeile 7 steht. Mit folgendem Befehl können Sie sich aber auch den gesamten Fingerprint zu Ihrer IP-Adresse anzeigen lassen:

    ssh-keygen -H -F <10.0.0.1>

    Beachten Sie bitte, dass auch hier wieder <10.0.0.1> mit der eigenen IP-Adresse ersetzt werden muss.

    Im Output wird Ihnen dann angezeigt in welcher Zeile der Fingerprint zu Ihrer IP-Adresse gespeichert wurde und wie dieser lautet. Nutzen Sie anschließend nano, um die known_hosts-Datei zu öffnen und zu bearbeiten.

    $ nano ~/.ssh/known_hosts

    Entfernen Sie nun den Fingerprint zu Ihrer IP-Adresse. Sobald Sie fertig sind, können Sie die Datei mit CTRL+X schließen, mit Y speichern und mit ENTER bestätigen.

    Sobald der Fingerprint nicht mehr in der Datei enthalten ist, können Sie erneut mit ssh holu@<10.0.0.1> eine Verbindung zu Ihrem Server aufbauen. Diesmal sollte lediglich eine Warnung bezüglich host authenticity erscheinen. Geben Sie an dieser Stelle yes an, damit der neue Fingerprint wieder lokal in der known_hosts-Datei gespeichert wird.

Schritt 4 - SSH-Key auf Server hinterlegen

Sobald der SSH-Key erstellt wurde und Sie wissen, wie Sie sich mit Ihrem externen Gerät verbinden, kann auf diesem der öffentliche Key hinterlegt werden. Beachten Sie, dass Sie sich dazu authentifizieren müssen. Sie müssen also entweder das Passwort kennen oder bereits einen anderen SSH-Key bei dem Benutzer hinterlegt haben, bei dem Sie gerne einen neuen öffentlichen Key ergänzen würden.

Um den öffentlichen Key auf einem anderen Gerät zu hinterlegen, gibt es mehrere Möglichkeiten. Die Einfachste ist vermutlich den ssh-copy-id-Befehl zu nutzen. Sollten Sie diesen Befehl nicht nutzen können, werden folgend auch noch weitere Möglichkeiten aufgeführt.

Befehle Voraussetzungen
Option 1 ssh-copy-id Auf lokalem Gerät (Client) eingeloggt
Option 2 cat mkdir Auf lokalem Gerät (Client) eingeloggt
Option 3 cd cat nano Auf lokalem Gerät (Client) eingeloggt Auf externem Gerät (Server) eingeloggt
Option 4 rsync Auf externem Gerät (Server) eingeloggt
  • Mit Optionen 1 und 2 wird der öffentliche Key automatisch vom lokalen Gerät (Client) kopiert und anschließend automatisch auf dem externen Gerät (Server) in der authorized_keys-Datei hinzugefügt.

  • Mit Option 3 wird der öffentliche Key manuell vom lokalen Gerät (Client) kopiert und anschließend manuell auf dem externen Gerät (Server) in der authorized_keys-Datei hinzugefügt.

  • Mit Option 4 wird der gesamte SSH-Ordner von einem Benutzer (Benutzer 1) auf dem externen Gerät (Server) auf einen anderen Benutzer (Benutzer 2) auf demselben externen Gerät (Server) übertragen. Dazu muss der öffentliche Key zuvor bereits bei Benutzer 1 hinterlegt worden sein. Beispielsweise mithilfe einer der anderen drei Optionen.

Es genügt sich für eine der vier Optionen zu entscheiden und nur diese durchzuführen.

Option 1

Diese Option ist vermutlich die Einfachste der vier oben gezeigten Varianten. Wenn Sie nur einen SSH-Key besitzen, können Sie schlicht folgenden Befehl ausführen. Beachten Sie aber, dass Sie das Passwort des Benutzers kennen müssen, bei dem Sie den SSH-Key gerne hinterlegen würden.

$ ssh-copy-id holu@<10.0.0.1>

Beachten Sie bitte, dass auch hier wieder holu mit dem eigenen Benutzernamen ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse. Der öffentliche SSH-Key wird dann automatisch vom lokalen Gerät kopiert und beim angegebenen Benutzer des externen Geräts (IP-Adresse) im authorized_keys-Ordner hinterlegt.

Wenn Sie auf Ihrem lokalen Gerät bereits mehrere SSH-Keys besitzen, sollte zusätzlich der Dateiname ergänzt werden unter welchem der SSH-Key gespeichert wurde, der beim neuen Benutzer hinterlegt werden soll.

$ ssh-copy-id -i ~/.ssh/id_<type>.pub holu@<10.0.0.1>

Beachten Sie bitte, dass auch hier wieder holu mit dem eigenen Benutzernamen ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse. Zusätzlich sollten Sie noch <type> so anpassen, dass es dem Namen der Datei entspricht, in der Ihr Public SSH-Key gespeichert ist. Wenn Sie sich mit dem Dateinamen nicht ganz sicher sind, können Sie sich mit ls ~/.ssh alle Dateien anzeigen lassen, die in Ihrem SSH-Ordner enthalten sind. Eine Datei sollte entsprechend id_<type>.pub heißen. Sollten Sie Ihren SSH-Key nicht unter dem Standardpfad gespeichert haben, dann passen Sie den Pfad im oben genannten Befehl bitte entsprechend an. Der im Befehl angegebene öffentliche SSH-Key wird dann automatisch vom lokalen Gerät kopiert und beim angegebenen Benutzer des externen Geräts (IP-Adresse) im authorized_keys-Ordner hinterlegt.

Der SSH-Key wurde nun gespeichert und wird künftig automatisch erkannt, sobald Sie sich mit dem Gerät verbinden möchten.

Option 2

Sollten Sie ssh-copy-id nicht verwenden können, können Sie alternativ auch folgenden Befehl nutzen. Beachten Sie, dass Sie das Passwort des Benutzers kennen müssen, bei dem Sie den SSH-Key gerne hinterlegen würden.

$ cat ~/.ssh/id_<type>.pub | ssh holu@<10.0.0.1> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Beachten Sie bitte, dass auch hier wieder holu mit dem eigenen Benutzernamen ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse. Zusätzlich sollten Sie noch <type> so anpassen, dass es dem Namen der Datei entspricht, in der Ihr Public SSH-Key gespeichert ist. Wenn Sie sich mit dem Dateinamen nicht ganz sicher sind, können Sie sich mit ls ~/.ssh alle Dateien anzeigen lassen, die in Ihrem SSH-Ordner enthalten sind. Eine Datei sollte entsprechend id_<type>.pub heißen. Sollten Sie Ihren SSH-Key nicht unter dem Standardpfad gespeichert haben, dann passen Sie den Pfad im oben genannten Befehl bitte entsprechend an. Mit >> wird im Befehl vorgegeben, dass der neue Key den bisherigen Inhalt nicht überschreiben darf. Stattdessen wird er in der nächsten freien Zeile zum bestehenden Inhalt hinzugefügt. Sobald Sie den Befehl ausführen, wird der darin angegebene öffentliche SSH-Key automatisch vom lokalen Gerät kopiert und beim angegebenen Benutzer des externen Geräts (IP-Adresse) im authorized_keys-Ordner hinterlegt.

Der SSH-Key wurde nun gespeichert und wird künftig automatisch erkannt, sobald Sie sich mit dem Gerät verbinden möchten.

Option 3

Um den SSH-Key manuell auf einem externen Gerät zu hinterlegen, müssen Sie den öffentlichen SSH-Key von Ihrem lokalen Gerät kopieren. Öffnen Sie dazu die Datei, in welcher dieser gespeichert wurde. Sollten Sie sich mit dem Dateinamen nicht ganz sicher sein, können Sie sich mit ls ~/.ssh alle Dateien anzeigen lassen, die im SSH-Ordner enthalten sind. Mit cat gefolgt vom Dateinamen können Sie die Datei einsehen:

$ cat ~/.ssh/id_<type>.pub

Kopieren Sie den gesamten Output, beginnend mit dem Typ des Keys ssh-<type>.

$ ssh-<type> AAA...fjdkl== user@example

Anschließend können Sie diesen auf ihrem externen Gerät hinterlegen. Öffnen Sie dazu ein neues Kommandozeilenfenster und verbinden Sie sich mit dem entsprechenden Gerät. Beachten Sie, dass Sie das Passwort des Benutzers kennen müssen, bei dem Sie den SSH-Key gerne hinterlegen würden.

$ ssh holu@<10.0.0.1>

Überprüfen Sie anschließend, ob dieser Benutzer bereits einen SSH-Ordner hat.

$ ls -l ~/.ssh/

Wenn dieser Benutzer bereits einen SSH-Ordner hat, sollten Ihnen nun die darin enthaltenen Dateien angezeigt werden. Sollte dieser Benutzer noch keinen SSH-Ordner haben, wird Ihnen an dieser Stelle vermutlich ls: cannot access '/home/new/.ssh/': No such file or directory angezeigt. In diesem Fall müssen Sie nun zunächst den SSH-Ordner selbst erstellen.

  • SSH-Ordner erstellen

    $ mkdir -p ~/.ssh

    Ändern Sie nun die Berechtigungen:

    $ chmod 700 ~/.ssh

    Nun können Sie in diesem Ordner die Datei authorized_keys erstellen, unter der der öffentliche SSH-Key hinterlegt wird. Öffnen Sie dazu zunächst mit cd ~/.ssh den SSH-Ordner und führen Sie anschließend folgenden Befehl aus:

    $ touch authorized_keys

    Ändern Sie nun die Berechtigungen:

    $ chmod 600 ~/.ssh/authorized_keys

Sobald Sie einen SSH-Ordner und eine authorized_keys-Datei besitzen, können Sie Ihren öffentlichen SSH-Key hinzufügen. Öffnen Sie die authorized_keys-Datei dazu mit nano.

$ nano ~/.ssh/authorized_keys

Fügen Sie nun den öffentlichen SSH-Key ein, den Sie sich im ersten Kommandozeilenfenster auf Ihrem lokalen Gerät anzeigen lassen haben (cat ~/.ssh/id_<type>.pub). Beachten Sie bitte, dass in der authorized_keys-Datei immer ein SSH-Key pro Zeile steht. Entfernen Sie also gegebenenfalls vorhandene Absätze, bis der Key nur noch über eine einzige Zeile geht. Sollten Sie künftig noch weitere öffentliche Keys hinzufügen wollen, können Sie diese einfach unter dem Ersten ergänzen, immer einen pro Zeile. Sobald Sie fertig sind, können Sie die Datei mit CTRL+X schließen, mit Y speichern und mit ENTER bestätigen.

Der SSH-Key wurde nun gespeichert und wird künftig automatisch erkannt, sobald Sie sich mit dem Gerät verbinden möchten.

Option 4

Mit den oben gezeigten Varianten wird lediglich in der authorized_keys-Datei des Benutzers ein neuer SSH-Key hinzugefügt. Sollten Sie auf dem externen Gerät einen anderen Benutzer (B1) schon länger verwenden und in Ihrem .ssh-Ordner bereits mehr Daten gespeichert haben, die Sie nun gerne auch bei einem neuen Benutzer (B2) hätten, können Sie auch den gesamten .ssh-Ordner von Ihrem alten Benutzer (B1) auf Ihren neuen Benutzer (B2) übertragen. Öffnen Sie dazu zunächst ein neues Kommandozeilenfenster und verbinden Sie sich anschließend darüber als alter Benutzer (B1) mit Ihrem externen Gerät.

$ ssh user@<10.0.0.1>

Beachten Sie bitte, dass user mit dem eigenen Benutzernamen (B1) ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse. Führen Sie anschließend folgenden Befehl aus, um den SSH-Ordner beim neuen Benutzer (B2) hinzuzufügen:

# rsync --archive --chown=holu:holu ~/.ssh /home/holu

Beachten Sie bitte, dass auch hier wieder holu mit dem eigenen Benutzernamen (B2) ersetzt werden muss. Mit diesem Befehl wird auch automatisch der Eigentümer der Dateien angepasst. Achten Sie darauf, dass ~/.ssh nicht mit einem Schrägstrich endet ~/.ssh/, da sonst lediglich der Inhalt kopiert wird.

Schritt 5 - SSH-Key testen

Sobald der öffentliche SSH-Key bei einem Benutzer in der authorized_keys-Datei hinterlegt wurde, können Sie das Authentifizieren damit testen, indem Sie sich auf Ihrem externen Gerät anmelden. Beenden Sie dazu zunächst mit CTRL+D die Verbindung in Ihrem zweiten Kommandozeilenfenster. Stellen Sie anschließend die Verbindung neu her:

$ ssh holu@<10.0.0.1>

Beachten Sie bitte, dass auch hier wieder holu mit dem eigenen Benutzernamen ersetzt werden muss und <10.0.0.1> mit der eigenen IP-Adresse. Sollten Sie sich das erste Mal mit einem Server verbinden, beachten Sie bitte die in Schritt 3 beschriebenen Besonderheiten.

Wenn Sie für Ihren SSH-Key ein Passwort festgelegt haben, werden Sie nun aufgefordert dieses anzugeben. Anschließend sollten Sie mit Ihrem Server verbunden sein.

Schritt 6 - SSH-Key-Passwort hinzufügen, ändern oder löschen

Sollten Sie das Passwort zu Ihrem privaten SSH-Key ändern oder doch ganz entfernen wollen, können Sie dies auf Ihrem lokalen Gerät machen. Beachten Sie aber, dass Sie dafür Ihr ursprüngliches Passwort kennen müssen. Sollten Sie Ihr Passwort vergessen haben, können Sie den SSH-Key leider nicht weiter verwenden. In diesem Fall können Sie den alten SSH-Key aber wie im nächsten Schritt beschrieben löschen und anschließend mit ssh-keygen einen Neuen erstellen. Wenn Sie Ihr Passwort aber noch kennen, nutzen Sie folgenden Befehl:

$ ssh-keygen -p

Output:

Enter file in which the key is (/root/.ssh/id_rsa):

Geben Sie nun den Pfad des entsprechenden SSH-Keys an. Wenn Ihr SSH-Key unter dem Standartpfad gespeichert wurde, können Sie den Output in der Klammer kopieren und den Dateinamen anpassen /root/.ssh/id_<type>.

Sollten Sie bereits ein Passwort besitzen, müssen Sie dieses nun angeben, um fortzufahren. Bestimmen Sie anschließend ein neues Passwort und wiederholen Sie es zum Bestätigen. Sollten Sie kein Passwort mehr haben wollen, können Sie die Eingabe mit ENTER überspringen.

Schritt 7 - SSH-Key löschen

Sobald Sie einen bestimmten SSH-Key nicht mehr verwenden wollen, sollte der öffentlichen Key auf den Geräten, auf denen dieser hinterlegt wurde, aus der authorized_keys-Datei entfernt werden.

  • Dies können Sie wie bereits beim Hinzufügen des Keys manuell machen. Verbinden Sie sich dazu mit dem Benutzer, bei dem Sie den öffentlichen Key hinterlegt haben. Öffnen Sie anschließend die authorized_keys-Datei:

    $ nano ~/.ssh/authorized_keys

    Entfernen Sie nun den öffentlichen Key, den Sie künftig nicht mehr verwenden möchten. Bitte beachten Sie, dass Sie sich anschließend nicht mehr mit diesem Key auf diesem Server anmelden können. Hinterlegen Sie vor dem Löschen des Keys also einen neuen SSH-Key und stellen Sie sicher, dass dieser auch funktioniert. Sobald Sie fertig sind, können Sie die Datei mit CTRL+X schließen, mit Y speichern und mit ENTER bestätigen.

Mit rm können Sie zusätzlich die Key-Paar-Dateien von Ihrem lokalen Gerät entfernen:

rm id_<type>
rm id_<type>.pub

Ergebnis

Im vorangegangenen Tutorial haben Sie gelernt wie Sie einen SSH-Key erstellen, auf einem Server hinterlegen, ein SSH-Key-Passwort hinzufügen, ändern oder löschen, und einen SSH-Key löschen.

License: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue
Try Hetzner Cloud

Get 20€ free credit!

Valid until: 31 December 2024 Valid for: 3 months and only for new customers
Get started
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more