SSH

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>`__.