Von der Schlüsselgenerierung bis zur Verwaltung: SSH-Keys effektiv nutzen

Verwaltung von SSH-Keys mit der Shell

14.06.2023

dehowtoshellsshtutorial
Gregor Wedlich
Gregor Wedlich
Life, the Universe and Everything.
Donate with:
Lightning
Alby

Inhaltsverzeichnis

    Hier ist ein kurzes Tutorial, wie ich meine SSH-Keys verwalte. Ich arbeite hauptsächlich mit der Shell und nutze keine Tools wie Putty.

    Zuerst werde ich dir zeigen, wie ich mittels ssh-keygen meine Schlüssel generiere und dann möchte ich dir auch zeigen, wie ich über Aliase diese bequem auf der Shell verwende.

    Als erstes legst du folgende Ordner und Dateien an:

    Der Hauptordner für SSH:

    1mkdir -p ~/.ssh && chmod 700 ~/.ssh

    Eine Datei, welche die Configs einbindet. Du gibst ihr direkt die entsprechenden Rechte, in diesem Fall Lese- und Schreibrechte (600), aber nur für den ausführenden Benutzer:

    1touch ~/.ssh/config && chmod 600 ~/.ssh/config

    Einen Ordner für die Configs:

    1mkdir -p ~/.ssh/ssh_configs

    Config Dateien:

    1touch ~/.ssh/ssh_configs/private.ssh_config 2touch ~/.ssh/ssh_configs/work.ssh_config

    Ich nutze eine Config für meine privaten SSH-Zugänge und eine Config für meine dienstlichen. Du kannst es so gestalten, wie du möchtest, oder auch alle in einer Datei verwalten und ggf. mit Kommentaren trennen.

    Einen Ordner für die SSH Keys:

    1mkdir -p ~/.ssh/ssh_keys

    Erstelle jeweils einen Ordner für die privaten und öffentlichen Schlüssel. Ich benenne sie nach den Kategorien in meinem Beispiel: 'private' und 'work':

    1mkdir -p ~/.ssh/ssh_keys/private 2mkdir -p ~/.ssh/ssh_keys/work

    Jetzt hast du alle Ordner und Dateien, welche du brauchst, um deine SSH-Keys über Aliase zu verwalten.

    SSH Key Algorithmus ed25519

    Ich erstelle mittlerweile alle meine SSH-Keys nur noch mit dem Algorithmus ed25519, da dieser viele Vorteile bietet. ed25519 ist ein Algorithmus, der auf der elliptischen Kurve Curve25519 basiert. Curve25519 gehört zu einer Familie von Algorithmen der elliptischen Kurvenkryptographie (ECC), die für ihre hohe Sicherheit und Leistungseffizienz bekannt sind.

    Vorteile von ed25519

    Sicherheit: ed25519 bietet eine sehr hohe Sicherheit, sogar bei relativ kurzen Schlüssellängen. Ein ed25519-Schlüssel mit einer Länge von 256 Bit bietet eine Sicherheit, die mit einem 3072-Bit-RSA-Schlüssel vergleichbar ist.

    Effizienz: Im Vergleich zu anderen Algorithmen wie RSA benötigt ed25519 weniger Ressourcen (sowohl hinsichtlich des Speicherplatzes als auch der Prozessorzeit), um Schlüssel zu erzeugen, zu signieren und zu verifizieren.

    Kollisionsresistenz: Während SHA-1, der in DSA und älteren Versionen von RSA verwendet wird, anfällig für Kollisionsangriffe ist, ist ed25519 gegen solche Angriffe resistent. Kollisionsresistenz

    Schutz vor Side-Channel-Angriffen: ed25519 wurde entwickelt, um widerstandsfähig gegen verschiedene Side-Channel-Angriffe zu sein, einschließlich Timing-Angriffen. Side-Channel-Angriffen

    Für den fall das du dich tiefer einlesen möchtest habe ich einige quellen verlinkt.

    SSH Key erstellen

    Einen SSH-Key erstellst du mit folgendem Befehl:

    1ssh-keygen -t ed25519 -C "COMMENT" -f ~/.ssh/ssh_keys/private/<my_ssh_key>

    Die einzelnen Optionen haben folgende Bedeutungen:

    -t ed25519: Gibt den Typ des zu generierenden Schlüssels an. In diesem Fall wird ein ED25519-Schlüssel erzeugt.

    -C "COMMENT": Fügt einen Kommentar zum Schlüssel hinzu.

    -f ~/.ssh/ssh_keys/private/my-key: Bestimmt den Dateipfad und den Namen der Schlüsseldatei. In diesem Fall wird der Schlüssel unter ~/.ssh/ssh_keys/private/my-key gespeichert. Wenn das Verzeichnis noch nicht existiert, muss es vor der Ausführung dieses Befehls erstellt werden.

    Nachdem du diesen Befehl eingegeben hast, wirst du nach einer Passphrase gefragt. Wähle eine sichere und nur dir bekannte aus und bestätige diese Eingabe ein zweites Mal. Wenn alles erfolgreich durchgelaufen ist, solltest du nun folgende Ausgabe erhalten und im Ordner ssh_keys deinen Private und Public Key liegen haben.

    1Generating public/private ed25519 key pair. 2Enter passphrase (empty for no passphrase): 3Enter same passphrase again: 4Your identification has been saved in /home/user/.ssh/ssh_keys/private/my-key 5Your public key has been saved in /home/user/.ssh/ssh_keys/private/my-key.pub 6The key fingerprint is: 7SHA256:csdfsdfsdfsdfjeowiurff9weujfoiwefjowpef COMMENT 8The key's randomart image is: 9+--[ED25519 256]--+ 10| o..+o | 11| . +-=. | 12| . .oO.= | 13| . o . B.B.+ . | 14|. = F + S.B = . | 15| o o o . + C . | 16| . . o . = | 17| o-. o . | 18|o*o | 19+----[SHA256]-----+

    Den Public Key musst du nun auf deinem Server hinterlegen. Logge dich dazu mit ssh auf diesen ein und bearbeite die Datei nano ~/.ssh/authorized_keys.

    Den Public Key findest du in der Datei ~/.ssh/ssh_keys/private/my-key.pub, du erkennst die richtige Datei an der endung .pub diesen key kannst du auch mit anderen Kollegen teilen da sich daraus nicht der Private-Key ableiten lässt.

    Es kann sein das du deinen SSH Service auf deinem Server neuladen musst das kannst du in regel mit folgenden Befehl tun service ssh reload

    Aliase anlegen

    Als erstes müssen wir in der config Datei den Pfad mit den Configs hinterlegen.

    1nano ~/.ssh/config

    Und fügen dort folgende Zeile ein:

    1Include ~/.ssh/ssh_configs/*.ssh_config

    Zuletzt müssen wir in der Config den Pfad zu unserem Private-Key hinterlegen:

    Dazu bearbeite die folgende Datei:

    1nano ~/.ssh/ssh_configs/private.ssh_config

    Nun fügen wir unsere Konfiguration ein:

    1# Irgendein Kommentar was dir hilft deine Settings zu unterscheiden 2Host private private.myServer myServer 3 HostName <DNS oder IP von deinem Server> 4 User admin 5 Port 22 6 IdentityFile ~/.ssh/ssh_keys/private/my-key 7 8#Weitere Keys... 9...

    Ich werde nicht weiter auf die Konfiguration eingehen da ich davon aussgehe das diese selbsterklärend ist.

    Nun speicherst du die Datei und solltest über folgenden Befehl auf dich mit deinem Server verbinden können:

    1ssh private.myServer

    Tipp: Mit der Tabulator-Taste (TAB) kannst du dir deine Aliase anzeigen lassen, z.B. ssh private. TAB-Taste.

    Fazit

    Du hast gelernt, wie du mit der Shell und dem ssh-keygen Befehl eigene Schlüssel generierst. Zudem haben wir aufgezeigt, wie du diese Keys dank der Verwendung von Aliase bequem in der Shell verwalten kannst.

    Mit dem Einsatz des ed25519 Algorithmus sorgst du für eine hohe Sicherheit deiner Schlüssel und profitierst gleichzeitig von dessen Effizienz.

    Die Verwendung von Config-Dateien ermöglicht dir eine saubere Trennung zwischen privaten und dienstlichen SSH-Zugängen und erleichtert somit die Verwaltung deiner SSH-Keys. Der finale Schritt war das Erstellen eines SSH-Keys und das Hinzufügen von Aliase in deiner Konfigurationsdatei, um schnell und einfach auf deine Server zugreifen zu können.

    Quelllen:

    Image: Midjourney

    1A computer designed as a surreal chain lock, twisted and intricate, in the distinctive style of Moebius --ar 16:9

    Comments: