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 SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX@my-server The key's randomart image is: |
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 |
Ü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.