SSH per l’amministrazione del server#

Questa guida spiega come preparare il server e il client SSH per l’uso di Nitrokey.

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, guardate 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#

È possibile generare un file authorized_keys eseguendo il comando

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

dove

keyID

è l’id della sottochiave utilizzata per l’autenticazione sulla Nitrokey. La Nitrokey deve essere già nota al portachiavi GnuPG locale. È ora possibile aggiungere questo file alle chiavi autorizzate di un server remoto e quando si accede al server con ssh verrà richiesto un pin anziché 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>`_.