SSH

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

inactive

inactive

active

inactive

active

active

inactive

This guide explains how to prepare your SSH server and client for use with the Nitrokey. For configuring PuTTY, see this guide:

Nitrokey dovrebbe avere già installato le chiavi PGP e il portachiavi GnuPG locale dovrebbe conoscere le chiavi.

Preparazione sul cliente

  • Assicurarsi che ~/.gnupg/gpg.conf contenga “use-agent”

  • Aggiungere il supporto ssh a gnupg-agent aggiungendo “enable-ssh-support” a ~/.gnupg/gpg-agent.conf

  • Se il file non esiste ancora, è sufficiente crearlo.

  • Aggiungete il seguente codice da qualche parte nel vostro ~/.bashrc (per la fish shell, cercate qui)

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
  • Basta riavviare il sistema o provare pkill gpg-agent e aprire una nuova riga di comando per assicurarsi che tutto sia impostato

  • In caso di problemi, provare gpg2 --card-status al primo utilizzo, per assicurarsi che gpg-agent venga avviato.

Preparazione del server

Si può generare un file authorized_keys eseguendo

gpg2 --export-ssh-key keyID >> ~/authorized_keys

dove

keyID

è l’id della sottochiave usata per l’autenticazione sulla vostra Nitrokey. La Nitrokey deve essere già nota al portachiavi locale di GnuPG. Ora potete aggiungere quel file a un server remoto e quando vi connetterete al server vi verrà chiesto un pin piuttosto che una passphrase.

Risoluzione dei problemi

Se vi viene ancora richiesta una password, accertatevi che

echo $SSH_AUTH_SOCK

restituisce qualcosa come “/run/user/1000/gnupg/S.gpg-agent.ssh” o “/home/username/.gnupg/.S.gpg-agent.ssh”. Purtroppo in passato sono state apportate alcune modifiche a GnuPG, per cui il contenuto effettivo può variare a seconda del sistema e della versione di GnuPG. Su alcuni sistemi possono esserci anche più cartelle in questa variabile salvata. È necessario adattare il codice sopra riportato in .bashrc in modo che la variabile SSH_AUTH_SOCK sia corretta. In caso di dubbio, cercare “SSH_AUTH_SOCK” in

man gpg-agent

per trovare il codice effettivo per la vostra versione/sistema.

È possibile verificare se è stato installato un programma “pinentry” tramite il proprio gestore di pacchetti. Potrebbe essere necessario ` impostarlo anche nel file gpg-agent.conf <https://wiki.archlinux.org/index.php/GnuPG#pinentry>`__. Potrebbe essere necessario ` puntare gpg-agent alla TTY corretta <https://wiki.archlinux.org/index.php/GnuPG#Configure_pinentry_to_use_the_correct_TTY>`__.