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:

A Nitrokey já deve ter chaves PGP instaladas e o chaveiro local GnuPG deve conhecer as chaves.

Preparação no cliente

  • Certifique-se de que ~/.gnupg/gpg.conf contém “use-agent”

  • Adicionar suporte ssh ao gnupg-agent adicionando “enable-ssh-support” a ~/.gnupg/gpg-agent.conf

  • Se o ficheiro ainda não existir, pode simplesmente criá-lo.

  • Adicione o seguinte código algures no seu ~/.bashrc (para carapaça de peixe, procure here)

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 reiniciar o seu sistema ou tentar pkill gpg-agent e abrir uma nova linha de comando para ter a certeza de que tudo está definido

  • Em caso de problemas, tente gpg2 --card-status na primeira utilização para garantir que o gpg-agent começa

Preparação para o servidor

Você pode gerar um arquivo authorized_keys executando

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

onde

keyID

é a identificação da sub-chave que está a ser usada para autenticação na sua Nitrokey. O Nitrokey já deve ser conhecido pelo chaveiro local GnuPG. Pode agora anexar esse ficheiro a um servidor remoto’s autorizado_keys e quando você ssh ao servidor você’ser-lhe-á pedido um pin em vez de uma frase-chave.

Resolução de problemas

Se ainda lhe for pedida uma palavra-passe, por favor assegure-se de que

echo $SSH_AUTH_SOCK

devolve algo como “/run/user/1000/gnupg/S.gpg-agent.ssh” ou “/home/username/.gnupg/.S.gpg-agent.ssh”. Infelizmente, houve algumas mudanças no GnuPG no passado, de modo que o conteúdo real pode diferir do sistema e da versão GnuPG. Em alguns sistemas podem mesmo existir múltiplas pastas nesta variável guardadas. É necessário adaptar o código acima dado em .bashrc para que a variável SSH_AUTH_SOCK esteja correcta. Em dúvida procure por “SSH_AUTH_SOCK” em

man gpg-agent

para encontrar o código real da sua versão/sistema.

Pode verificar se tem um “pinentry” programa instalado através do seu gestor de pacotes. Pode precisar de instalá-lo no gpg-agent.conf também. Pode ser necessário ` apontar o gpg-agent para o TTY correcto <https://wiki.archlinux.org/index.php/GnuPG#Configure_pinentry_to_use_the_correct_TTY>`__.