roterfruchtzwerg
Goto Top

SSH Key mit Windows Hello absichern

Grüße,
ich möchte meinen SSH Key statt mit einer Passphrase mit meinem Windows Hello (Fingerabdruck/PIN) absichern.
Windows Hello ist eingerichtet, ich nutze es zum Rechner Login und als WebAuthN credential bei diversen Websites.
Ich habe herausgefunden dass OpenSSH ab Version 8.9 das erstellen von Keys mit FIDO erlaubt:
https://man.openbsd.org/ssh-keygen#FIDO_AUTHENTICATOR
Windows 10/11 kommen mit älteren Versionen daher, also hab ich einfach mal mit winget aktualisiert (`winget install Microsoft.OpenSSH.Beta`).
Danach klappts so halb. Wenn ich einen Key erstelle (`ssh-keygen -t ed25519-sk`) bittet mich Windows einen USB Sicherheitsschlüssel einzustecken. Aber Windows Hello / mein Fingerabdruck kommt garnicht zur Auswahl.

Sicherheit sollte nicht so schwer sein... Es war schon kompliziertgenug so weit zu kommen :/
Jemand einen Plan wie ich den letzten Schritt schaffe und Windows Hello / mein TPM nutzen kann?

Content-ID: 83764727937

Url: https://administrator.de/contentid/83764727937

Ausgedruckt am: 22.11.2024 um 00:11 Uhr

DerWoWusste
DerWoWusste 23.10.2023 um 09:59:08 Uhr
Goto Top
Hi.

Ich kann Dir alternativ erklären, wie Du den ssh-Key mit einer SmartCard (oder einer virtuellen SmartCard) absicherst via PuttyAgent.
RoterFruchtZwerg
RoterFruchtZwerg 23.10.2023 um 15:51:13 Uhr
Goto Top
Danke, aber eigentlich nein. Putty steht nicht zur Option und sofern eine virtuelle Smartcard aus Nutzer-Sicht nicht das gleiche wie Windows Hello ist, möchte ich das nicht.
Mir geht es bei der Frage nicht um ein persönliches Problem sondern auch eine "best practice" die ich kommunizieren möchte und das muss auch auf Geräten hier in einer Standard-Umgebung relativ simpel funktionieren.

Akzeptanzkriterium ist: Ich gebe im Terminal "ssh user@server" ein und das Windows Hello Popup bittet mich meinen Finger aufzulegen bzw. meinen PIN einzugeben, meinen USB-Key anzustecken sofern ich einen bei Windows Hello registriert habe, oder mein Gesicht vor die Kamera zu halten, sofern ich eben das nutze. Tue ich das, wird die SSH Verbindung erfolgreich hergestellt.

Dass es nur mit einem USB-Key funktioniert hab ich ja quasi schon erreicht (habe ich nicht getestet), aber das möchte ich nicht.
AlRoDiSa
AlRoDiSa 23.10.2023 um 16:05:14 Uhr
Goto Top
Moin

Schon mal mit einem anderen Algorithmus versucht, wie RSA - nur zum Test.
Gerade das relativ neue -ed25519- wird nicht immer direkt unterstützt.

Viel Erfolg
RoterFruchtZwerg
RoterFruchtZwerg 23.10.2023 aktualisiert um 16:28:44 Uhr
Goto Top
Laut https://man.openbsd.org/ssh-keygen#FIDO_AUTHENTICATOR gibt es nur zwei Typen die unterstützt werden, RSA gehört nicht dazu. ecdsa-sk und ed25519-sk führen beiden zum gleichen Ergebnis.

Edit: Hab auch https://github.com/PowerShell/Win32-OpenSSH/issues/2040 gefunden das sich für mich so liest als könnte es prinzipiell schon mit Windows Hello funktionieren...
DerWoWusste
DerWoWusste 23.10.2023 um 16:41:46 Uhr
Goto Top
sofern eine virtuelle Smartcard aus Nutzer-Sicht nicht das gleiche wie Windows Hello ist, möchte ich das nicht.
Ist das selbe. Ich starte Pagent (Puttyagent) und wähle das Profil des Zielservers und muss die PIN eingeben - fertig.
TK1987
TK1987 23.10.2023 aktualisiert um 19:19:23 Uhr
Goto Top
Moin,

mit KeePassXC lässt sich das Ganze auch einfach umsetzen.

  • Datenbank anlegen. Sobald diese später erneut entsperrt wird, bietet Windows Hello automatisch an, dass Passwort zu speichern.
  • Den Windows-Dienst "OpenSSH Authentication Agent" starten und auf Starttyp "Automatisch starten" stellen. Alternativ über Powershell (als Admin):
Set-Service ssh-agent -StartupType Automatic -Status Running
  • in KeepassXC "Werkzeuge > Einstellungen" unter "SSH-Agent" die Integration aktivieren und "OpenSSH verwenden" auswählen
screenshot
  • SSH-Key ohne Passphrase generieren
  • in der Datenbank einen Eintrag anlegen, unter Fortgeschritten als Anhang den generierten SSH-Key auswählen, dann im Bereich SSH-Agent "Key zum Agenten hinzufügen, wenn Datenbank geöffnet/entsperrt wird" und "Schlüssel vom Agenten entfernen, wenn Datenbank geschlossen wird" aktivieren, unter Anhang den Schlüssel auswählen.
screenshot_2
  • nicht vergessen, dass Keyfile vom Rechner zu löschen

Fertig. Die Datenbank lässt sich per Windows Hello entsperren, der SSH-Key wird automatisch zum SSH-Agent hinzugefügt und beim schließen der Datenbank wieder entfernt.

Gruß Thomas
RoterFruchtZwerg
RoterFruchtZwerg 24.10.2023 um 08:07:48 Uhr
Goto Top
Danke, das ist auf jeden Fall gut zu wissen.
Meiner Vorstellung entspricht es aber trotzdem nicht face-sad ein zusätzliches Tool für den Nutzer, das Einrichten und dann das offen lassen des Containers wenn man es nutzen will ist leider wenig komfortabel im Gegensatz zur simplen Abfrage beim Aufbau einer SSH Verbindung face-sad