SSH Authentication with FIDO2

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

inactive

O SSH (Secure Shell) é um protocolo de rede utilizado para aceder e gerir de forma segura sistemas remotos, como servidores ou repositórios de código (por exemplo, GitLab, GitHub). Ele usa pares de chaves criptográficas para autenticação, permitindo logins sem senha com forte segurança. Com um Nitrokey, a chave SSH privada é gerada e armazenada diretamente no dispositivo, pelo que nunca sai do hardware. Para cada início de sessão, é necessário tocar na Nitrokey, adicionando uma confirmação física simples que protege contra o acesso não autorizado.

Generating SSH Key

  1. Insert the Nitrokey into your computer.

  2. Abra um terminal e crie sua chave SSH. Substitua "your_comment" por uma etiqueta para a identificar (por exemplo, «Nitrokey GitLab»). Por padrão, a chave é uma chave não residente, o que significa que um identificador de chave local é armazenado em ~/.ssh/ enquanto a chave privada permanece segura no Nitrokey. Use a opção -O resident se quiser que a chave seja portável entre sistemas.

    ssh-keygen -t ed25519-sk -C "your_comment"
    

    ou para criar uma chave residente

    ssh-keygen -t ed25519-sk -O resident -C "your_comment"
    

    Nota

    As chaves residentes podem ser posteriormente listadas e importadas para outro sistema com:

    ssh-keygen -K
    
  3. Durante a geração da chave, pode também ser-lhe pedido que defina uma frase-chave **** . Esta frase-chave encripta o identificador de chave local armazenado em ~/.ssh/ (não a chave privada no Nitrokey, que permanece sempre segura dentro do dispositivo). A frase-passe é diferente do PIN do dispositivo FIDO2. O PIN protege a chave física em si, enquanto a frase secreta protege o seu ficheiro de chave pública SSH local. Recomendamos a utilização de uma frase-chave para proteger apenas as chaves não residentes.

  4. Quando lhe for pedido um caminho para o ficheiro, aceite a opção predefinida (~/.ssh/id_ed25519_sk) ou escolha um nome personalizado como id_ed25519_sk_gitlab.

  5. Se a Nitrokey ficar intermitente, confirmar a operação tocando-lhe.

Eventualmente, serão criados os seguintes ficheiros. Os nomes dos ficheiros podem ser diferentes se tiver especificado um nome personalizado ao gerar a chave.

~/.ssh/id_ed25519_sk → identificador da chave privada (armazenada de forma segura no Nitrokey)

~/.ssh/id_ed25519_sk.pub → ficheiro de chave pública

img0

Adding Your Public Key

Assim que o par de chaves SSH for gerado, a chave pública deve ser adicionada ao serviço ou servidor a que pretende aceder.

  1. Display your public key:

    cat ~/.ssh/id_ed25519_sk.pub
    

    Exemplo de saída (não utilizar esta tecla):

    sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
    
  2. Copie a saída e adicione-a às configurações da chave SSH da sua conta. Consulte GitLab <https://docs.gitlab.com/user/ssh/#add-an-ssh-key-to-your-gitlab-account> ou GitHub <https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account> para obter etapas detalhadas. Para habilitar o acesso remoto ao servidor SSH, adicione sua chave pública ao arquivo ~/.ssh/authorized_keys da sua conta de usuário no servidor SSH.