tetractic / SK-SSH-Agent

An SSH agent that supports using FIDO/U2F security keys with PuTTY and OpenSSH for Windows.
GNU General Public License v3.0
23 stars 1 forks source link

SK SSH Agent

An SSH agent that supports using FIDO/U2F security keys with PuTTY and OpenSSH for Windows.

Features

Requirements

You need a FIDO/U2F security key, obviously.

Client

Note: Only one agent can be listening on an IPC pipe at a time. Therefore, Pageant and/or OpenSSH agent cannot be used while SK SSH Agent is running, and vice versa.

Server

Getting Started

Key Generation

  1. Ensure Pageant and/or OpenSSH agent are not running.
  2. Run SK SSH Agent.
  3. In the Key menu, click Generate in Security Key....
  4. Check the Require User Verification checkbox if your security key supports user verification and you want to be prompted for your PIN when you authenticate using your security key.
  5. Click Generate.
  6. Windows will guide you through setting up your security key.
  7. When Windows is done setting up your security key, SK SSH Agent will ask where you want to save the private key file. If you have no preference, use the default location.
  8. SK SSH Agent will ask whether it should load the key. Click Yes.

Key Authorization

  1. In the SK SSH Agent window, select the key in the key list.
  2. In the Edit menu, click Copy OpenSSH Key Authorization.
  3. Paste the copied key authorization line into ~/.ssh/authorized_keys on the server.

Authentication works as it normally would with Pageant or OpenSSH agent.

Limitations

Differences from OpenSSH

Credential Protection

SK SSH Agent does not require the security key to support the Credential Protection (credProtect) FIDO extension in order to generate a key with the verify-required option. The authenticator attests (and the SSH server can verify) that user verification was performed, without this extension.

SK SSH Agent will include the verify-required option in the key authorization when applicable. The option will not be present in the public key, so if you use ssh-copy-id to authorize the key then you must add the verify-required option to the authorized_keys file manually.

Some services, such as GitHub, do not support key authorization options. Without the verify-required option, the key will still work, but the user verification will provide no additional security because the service will not verify that user verification was performed. In this case, Credential Protection is useful.

Tips

If you supply the path to a key file as a command-line argument when launching SK SSH Agent, it will load the key and start out minimized to the notification area.