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/