SSH Para Administração de Servidores#

Este guia explica como preparar o seu servidor e cliente SSH para utilização com a Nitrokey.

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#

Pode gerar um ficheiro_chave_autorizado, executando qualquer

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

onde

keyID

é a subkey id a ser utilizada 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 ssh ao servidor ser-lhe-á pedido um pin em vez de uma frase-senha.

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