Por Anónimo (no verificado) , 29 Abril 2026

El caso de la firma SSH

GPG es potente pero operativamente doloroso. Desde Git 2.34, puedes firmar commits y tags con las llaves SSH que ya usas para hacer push. Sin keyring, sin malabarismos de passphrase, sin red de confianza separada. GitHub, GitLab, Gitea y Forgejo aceptan commits firmados con SSH.

Configuración

git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
git config --global tag.gpgsign true

Archivo de signers permitidos

cat > ~/.config/git/allowed_signers <<EOF
[email protected] ssh-ed25519 AAAA... alice
[email protected]   ssh-ed25519 AAAA... bob
EOF
git config --global gpg.ssh.allowedSignersFile ~/.config/git/allowed_signers

Verificación

git log --show-signature
git verify-commit HEAD
git verify-tag v1.0.0

Llaves respaldadas por hardware

OpenSSH soporta llaves FIDO/U2F (ssh-keygen -t ed25519-sk). Funcionan transparentemente para firmar.

Revocación

git config --global gpg.ssh.revocationFile ~/.config/git/revoked_keys

Errores comunes

Email desajustado entre autor del commit y entrada en signers permitidos. Apuntar user.signingkey a una llave privada; quieres la .pub. Olvidar subir la llave pública a la plataforma host.

Entornos mixtos

Los commits firmados con SSH y con GPG pueden coexistir en un repo. Elige uno para nuevos commits y documenta la política.