Universellen zweiten Faktor mit SSH auf Windows verwenden

Ich habe einen FIDO/U2F Stick von Thetis. Bekannter ist YubiKey. Auf dem Security Token Stick lässt sich ein SSH Schlüssel erzeugen gemäß dieser Anleitung:

ssh-keygen -t ed25519-sk -O resident

Auf den Rechnern, mit denen ich arbeite, die mit Windows laufen, sind oft mehrere im Konflikt stehende Implementierungen des SSH Klienten installiert (Windows/Powershell OpenSSH, git-scm ssh, plink). Damit git nicht verwirrt ist, muss explizit eine spezifiziert werden:

$env:GIT_SSH="C:\WINDOWS\System32\OpenSSH\ssh.exe" ; $env:GIT_SSH_VARIANT="ssh"

Wenn ich U2F auf einem anderen Rechner nutzen will, auf dem noch kein Verweis auf den privaten Schlüssel im Token existiert, muss ich dafür eine Powershell mit Administratorrechten öffnen:

  1. SSH Agent freischalten: Get-Service ssh-agent | Set-Service -StartupType Automatic
  2. SSH Agent gegebenenfalls explizit starten Start-Service ssh-agent
  3. Schüssel von Token herunterladen: cd $env:USERPROFILE"\.ssh" ; C:\WINDOWS\System32\OpenSSH\ssh-keygen.exe -K ; C:\WINDOWS\System32\OpenSSH\ssh-add.exe id_ecdsa_sk_rk_* Auch das muss in einer Powershell Sitzung mit Administratrorrechten passieren, sonst sagt ssh-keygen Cannot download keys without provider. Mehr dazu hier.

git clone und andere SSH Befehke können in einer non-Admin PowerShell verwendet werden. Der entsperrte Schlüssel ist über ssh-agent offenbar in den anderen Sitzungen verfügbar.