Ein SSH-Login kann ebenfalls durch 2FA mittels U2F FIDO2-Token abgesichert werden. In einem solchen Umfeld kann der Zielserver nur erreicht werden, wenn auf dem Client-Rechner (SSH-Client) das hinterlegte Token eingesteckt und aktiviert wird.

Das Verfahren ist analog zu dem klassischen SSH-Public/Private-Key Verfahren, nur dass in diesem Fall der Private Key durch das Token und einer entsprechenden Kommunikation zwischen Server und Client ersetzt wird.

Ziel ist hier wiederum durch ein "Besitz"-Objekt einen sensiblen Zugriff zu schützen

Voraussetzung:

  • Auf dem Ziel-Server muss ein openssh-Server der Version 8.2 oder höher laufen, wie auch auf dem Client ein openssh-client Version 8.2 oder höher installiert sein. Erst ab dieser Version werden die notwendigen Keys unterstützt. Die Distribution Ubuntu enthält diese seit der Version 20.04 LTS.
  • Ein FIDO2-kompatibles U2F-Token (Yubikey, Winkeo-A FIDO2, …) ist am Client eingesteckt

Generierung des Schlüsselpaares:

Die Generierung erfolgt auf dem Client, in dem Das U2F-Token eingesteckt ist.

Hier wird ssh-keygen verwendet, um das Schlüsselpaar zu generieren.

Beispiel:
 

$ ssh-keygen -t ecdsa-sk
Generating public/private ecdsa-sk key pair.
You may need to touch your authenticator to authorize key generation.
Enter file in which to save the key (/home/XXXXXX/.ssh/id_ecdsa_sk):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/XXXXXX/.ssh/id_ecdsa_sk
Your public key has been saved in /home/XXXXXX/.ssh/id_ecdsa_sk.pub
The key fingerprint is:

SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX@my-server

The key's randomart image is:
+-[ECDSA-SK 256]--+
...
+----[SHA256]-----+

 

Für die Generierung muss das Touch-Feld des Tokens berührt werden.

Sofern nichts anderes angegeben wird, entstehen hieraus 2 Dateien, die im eigenen ".ssh" Verzeichnis abgelegt werden:

id_ecdsa_sk
id_ecdsa_sk.pub

 

Übertragung zum Ziel-Server

Ist der Ziel-Server noch per Passwort erreichbar, kann der Befehl "ssh-copyid" verwendet werden:

ssh-copy-id -i ~/.ssh/id_ecdsa_sk.pub user@zielserver

 

Alternativ kann der Inhalt dieser Datei auch manuell auf dem Zielserver in die Datei  "~/.ssh/authorized_keys" eingetragen werden, also analog zu dem klassischen Verfahren.

Authentifizierung

Wird nun SSH verwendet, um den Ziel-Server zu erreichen, wird das Token und der U2F-Key erwartet:

$ ssh root@my-server

Confirm user presence for key ECDSA-SK SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

User presence confirmed

Linux my-server 5.15.76-v8+ #1597 SMP PREEMPT Fri Nov 4 12:16:41 GMT 2022 aarch64

 

Ab diesem Zeitpunkt können andere Authentifizierungsverfahren abgeschaltet werden. Es empfiehlt sich natürlich ein zweites Token entsprechend einzurichten, um den Fall des Verlustes oder Defektes abzudecken.

Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.