YubiKey para SSH y GitHub: la guía técnica para developers
Guias e Tutoriais

YubiKey para SSH e GitHub: o guia técnica para developers

A tua chave SSH privada vive num ficheiro de texto plano em ~/.ssh/. Se alguém aceder ao teu portátil ou o infectar com malware, pode copiá-la em segundos. Não precisa da tua palavra-passe nem da tua impressão digital.

Uma YubiKey muda isso. A chave privada nunca sai do hardware — nem tu consegues exportá-la. Sem a chave física na porta USB ou perto da NFC, não há autenticação possível.

O que vais configurar neste guia
  • Uma chave SSH suportada por hardware FIDO2
  • Assinatura de commits de Git com essa mesma chave
  • YubiKey como chave de segurança no GitHub (2FA)

Por que muda o modelo de ameaça

Uma chave SSH normal é um ficheiro. Pode ser copiada, filtrada numa cópia de segurança mal configurada ou roubada por malware que lê o disco.

Uma chave SSH suportada por YubiKey (-sk, de "security key") gera-se dentro do chip FIDO2. O sistema guarda apenas uma referência. Sem a chave física conectada, essa referência não serve para nada.

Além disso, podes exigir verificação táctil em cada utilização. Ainda que alguém tenha acesso remoto à tua máquina, precisaria tocar fisicamente na YubiKey para autenticar.


Gerar uma chave SSH suportada por YubiKey

Precisas de OpenSSH 8.2 ou superior. Vem incluído no macOS e na maioria das distribuições Linux modernas. No Windows, usa o cliente OpenSSH integrado ou WSL.

1
Gera a chave resident

Executa ssh-keygen -t ed25519-sk -O resident -O verify-required -C "teu-email@dominio.com". A opção resident guarda a chave também na YubiKey, não apenas no teu disco.

2
Confirma com PIN e toque

O terminal pedir-te-á o PIN da YubiKey e depois tocar no sensor. Assim gera-se o par de chaves dentro do chip.

3
Copia a chave pública

Gera-se id_ed25519_sk.pub em ~/.ssh/. Essa é a que adicionas ao GitHub, GitLab ou ao authorized_keys do teu servidor.

4
Testa a ligação

Conecta por SSH como sempre. O sistema pedir-te-á tocar na YubiKey antes de autenticar.

Se mudares de portátil

Com -O resident podes recuperar a chave da própria YubiKey num equipamento novo, com ssh-keygen -K. Não precisas de a gerar de raiz outra vez.


Assinar os teus commits de Git com a mesma chave

Desde Git 2.34 podes assinar commits usando uma chave SSH em vez de GPG. É a mesma YubiKey, sem configurar um segundo sistema de assinatura.

1
Ativa o formato SSH para assinaturas

Executa git config --global gpg.format ssh.

2
Indica qual chave usar para assinar

Executa git config --global user.signingkey ~/.ssh/id_ed25519_sk.pub.

3
Ativa a assinatura automática

Executa git config --global commit.gpgsign true. Cada commit pedirá tocar na YubiKey.

4
Regista a chave como "Signing Key" no GitHub

Em Settings → SSH and GPG keys → New SSH key, carrega a mesma chave pública mas como tipo Signing Key, não Authentication Key.

A partir daqui, os teus commits aparecem como Verified no GitHub. Qualquer um pode comprovar que saíram da tua chave física, não apenas do teu nome de utilizador.


Ativar a YubiKey como 2FA no GitHub

1
Entra em Security keys

Settings → Password and authentication → Security keys → Add.

2
Conecta ou aproxima a YubiKey

Por USB ou por NFC, consoante o modelo. GitHub detecta-a como chave WebAuthn/FIDO2.

3
Toca no sensor quando for solicitado

Confirma o registo. A partir de agora, o login pedirá a chave física, não um código temporário.

Regista duas chaves de segurança no GitHub

GitHub permite adicionar várias chaves como método de 2FA. Regista uma principal e uma de backup desde o primeiro dia.


Modelos YubiKey compatíveis para este fluxo

Modelo Conector SSH (FIDO2) 2FA GitHub
YubiKey 5 NFC USB-A + NFC ✓ ✓
YubiKey 5C NFC USB-C + NFC ✓ ✓
Security Key NFC USB-A + NFC ✓ ✓
Security Key C NFC USB-C + NFC ✓ ✓

Os quatro modelos usam o protocolo FIDO2 para gerar chaves -sk, portanto o fluxo de SSH e de 2FA no GitHub funciona igual em todos. A diferença está na porta física do teu equipamento.


Como organizar a tua chave principal e a tua cópia de segurança

Se perderes a tua única YubiKey, perdes acesso a SSH, aos teus commits assinados e ao login do GitHub. Regista sempre uma segunda chave e guarda-a num sítio diferente da principal.

Recomendado Suporte tipo cartão para YubiKey 2 ranhuras

Suporte Carteira 2 Ranhuras

Leva a tua chave principal e a tua cópia de segurança juntas, em formato cartão de crédito. Fabricado em Espanha (UE).

Compatível com: YubiKey 5 NFC · 5C NFC · Security Key NFC · Security Key C NFC
Ver na Amazon
Chaveiro com lanyard para YubiKey

Chaveiro com Lanyard

Para a chave que usas diariamente. NFC funciona sem tirar da capa. Fabricado em Espanha (UE).

Compatível com: YubiKey 5 NFC · 5C NFC · Security Key NFC · Security Key C NFC
Ver na Amazon

Perguntas frequentes

Preciso de duas YubiKeys sim ou sim?

Não é obrigatório, mas é recomendável. Sem uma chave de segurança registada, uma falha ou uma perda deixa-te sem acesso a SSH e à tua conta do GitHub até usares outro método de recuperação.

Funciona igual no Windows, macOS e Linux?

Sim, desde que tenhas OpenSSH 8.2 ou superior. macOS e as distribuições Linux recentes incluem-no por predefinição. No Windows, usa o cliente OpenSSH do sistema ou WSL.

Posso usar a mesma YubiKey para SSH e para o meu Gmail?

Sim. Uma mesma YubiKey suporta múltiplas credenciais FIDO2, uma para cada serviço onde a registares — SSH, GitHub, Gmail e demais contas compatíveis com WebAuthn.

O que acontece se perder a YubiKey que usei para assinar commits?

Os commits já assinados continuam válidos. Para continuares a assinar, regista a chave de segurança como nova Signing Key no GitHub e atualiza user.signingkey na tua configuração de Git.

Veredicto

Vale a pena migrar SSH e GitHub para YubiKey?

Se trabalhas com acesso SSH a servidores de produção ou manténs repositórios com colaboradores, sim. A chave privada deixa de ser um ficheiro copiável e passa a depender de hardware físico.

O custo real não é o da chave, mas o de não teres uma de segurança organizada. Resolve isso desde o primeiro dia.

Como Associado da Amazon, recebo comissões por compras elegíveis.

Voltar para o blogue