Yubikey: Difference between revisions

From NixOS Wiki
imported>Mic92
offline key generation
imported>Aaronduino
provide a full code sample for yubikey+ssh
Line 15: Line 15:
In order to manage OTP keys you can install the <code>yubioath-desktop</code> package in your profile.
In order to manage OTP keys you can install the <code>yubioath-desktop</code> package in your profile.
This application will also both the udev rules as well as pcscd enabled.
This application will also both the udev rules as well as pcscd enabled.
Based on [a guide](https://github.com/drduh/YubiKey-Guide) by [@drduh](https://github.com/drduh), the following should be sufficient for a yubikey usable for ssh:
<syntaxHighlight lang=nix>
services.pcscd.enable = true;
services.udev.packages = [ pkgs.yubikey-personalization ];
environment.shellInit = ''
  export GPG_TTY="$(tty)"
  gpg-connect-agent /bye
  export SSH_AUTH_SOCK="/run/user/$UID/gnupg/S.gpg-agent.ssh"
'';
programs = {
  ssh.startAgent = false;
  gnupg.agent = {
    enable = true;
    enableSSHSupport = true;
  };
};
</syntaxHighlight>


== Offline key generation ==
== Offline key generation ==

Revision as of 23:42, 12 March 2019

This article describes how Yubico's YubiKey works and how you can use it.

To access the yubikey as user add the following udev rules to your configuration.nix:

 services.udev.packages = [ pkgs.yubikey-personalization ];

To use the smart card mode (CCID) of Yubikey, you will also need the PCSC-Lite daemon:

services.pcscd.enable = true;

In order to manage OTP keys you can install the yubioath-desktop package in your profile. This application will also both the udev rules as well as pcscd enabled.

Based on [a guide](https://github.com/drduh/YubiKey-Guide) by [@drduh](https://github.com/drduh), the following should be sufficient for a yubikey usable for ssh:

services.pcscd.enable = true;
services.udev.packages = [ pkgs.yubikey-personalization ];


environment.shellInit = ''
  export GPG_TTY="$(tty)"
  gpg-connect-agent /bye
  export SSH_AUTH_SOCK="/run/user/$UID/gnupg/S.gpg-agent.ssh"
'';

programs = {
  ssh.startAgent = false;
  gnupg.agent = {
    enable = true;
    enableSSHSupport = true;
  };
};

Offline key generation

It is best practice to create the keys on a system without network connection to avoid leakages. This guide explains in depth the steps needed for that. There is also a nix expression that creates a nixos live image with all necessary dependencies pre-installed. The image can be created with the nixos-generator tool and depending on the image copied onto a usb stick or executed directly using kexec