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:
- SSH Agent freischalten:
Get-Service ssh-agent | Set-Service -StartupType Automatic - SSH Agent gegebenenfalls explizit starten
Start-Service ssh-agent - 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 sagtssh-keygenCannot 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.