Kurze Anleitung wie man ganz einfach einen Yubikey 4 für SSH verwendet.

Die Anleitung zielt nicht auf absolute Sicherheit ... wer Bedenken hat sollte folgende Dinge zusätzlich machen:

  • offline Live-System verwenden und danach löschen
  • management-Key setzen
  • PINs anpassen
  • den Key auf dem Sicherungs-Datenträger zusätzlich verschlüsseln
  • Passphares beim SSH-Key
  • den Key direkt auf den Stick erstellen (keine Backup-Möglichkeit)

Pakete installieren

sudo apt-get install yubikey-personalization yubico-piv-tool opensc pcscd

SSH-Key erstellen

Stick auf PGP umstellen:

ykpersonalize -m82

Temporäres Verzeichnis für die Schlüssel:

mkdir ~/tmp_key
cd ~/tmp_key

SSH-Key generieren:

ssh-keygen -t rsa -b 2048 -f id_rsa

Den Stick mit den Schlüssel füttern:

openssl rsa -in id_rsa -out id_rsa.pem -outform pem
yubico-piv-tool -a import-key -s 9a -i id_rsa.pem
rm id_rsa.pem

Den Stick mit den Zertifikaten füttern (PIN ggf. anpassen):

ssh-keygen -e -f id_rsa.pub -m PKCS8 > id_rsa.pub.pkcs8
yubico-piv-tool -a verify -P 123456 -a selfsign-certificate -s 9a -S "/CN=joe/O=Test/" -i id_rsa.pub.pkcs8 -o 9a-cert.pem
yubico-piv-tool -a verify -P 123456 -a import-certificate -s 9a -i 9a-cert.pem

Schauen ob alles geklappt hat:

yubico-piv-tool -a status

Die Datei "id_rsa.pub" können wir behalten, diese brauchen wir später noch.Die Dateien "id_rsa" und "id_rsa.pub" am besten auf einer Speicherkarte oder Stick speichern und sicher verwahren.Das löschen des Verzeichnis "tmp_key" auf den PC nicht vergessen:

rm -rf ~/tmp_key

SSH-Key erstellen für Paranoide

Diese Variante bietet kein Backup vom Key!

Stick auf PGP umstellen:

ykpersonalize -m82

Temporäres Verzeichnis für die Schlüssel:

mkdir ~/tmp_key
cd ~/tmp_key

Schlüssel direkt auf den Stick erstellen:

yubico-piv-tool -a generate --touch-policy=always -s 9a -o public.pem

Den Stick mit den Zertifikaten füttern (PIN ggf. anpassen):

yubico-piv-tool -a verify-pin -P 123456 -a selfsign-certificate -s 9a -S "/CN=SSH key/" -i public.pem -o cert.pem
yubico-piv-tool -a import-certificate -s 9a -i cert.pem

Den Public-Key generieren:

export OPENSC=$(dpkg -L opensc-pkcs11 | grep \\/opensc-pkcs11.so\\$ | head -n1 )
ssh-keygen -D $OPENSC -e

SSH-Key Anwenden

SSH-Key auf den Zielsystem installieren:

ssh-copy-id -i id_rsa.pub holy_moly_server.de

SSH-Agent starten und den Stick als Quelle angeben:

export OPENSC=$(dpkg -L opensc-pkcs11 | grep \\/opensc-pkcs11.so\\$ | head -n1 )
eval `ssh-agent -s`
ssh-add -s $OPENSC

Zum Zielsystem mit den Stick verbinden:

ssh -A holy_moly_server.de

Quellen

https://wikitech.wikimedia.org/wiki/Yubikey-SSH

http://blog.rchapman.org/posts/Import_an_existing_ssh_key_into_Yubikey_NEO_applet/