Le cas de la signature SSH
GPG est puissant mais opérationnellement pénible. Depuis Git 2.34, vous pouvez signer commits et tags avec les clés SSH que vous utilisez déjà pour push. Pas de keyring, pas de jonglerie de passphrase, pas de réseau de confiance séparé. GitHub, GitLab, Gitea et Forgejo acceptent tous les commits signés SSH.
Configuration
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
Fichier des signataires autorisés
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
Vérification
git log --show-signature
git verify-commit HEAD
git verify-tag v1.0.0
Clés appuyées par le matériel
OpenSSH supporte les clés FIDO/U2F (ssh-keygen -t ed25519-sk).
Révocation
git config --global gpg.ssh.revocationFile ~/.config/git/revoked_keys
Erreurs courantes
Email mal apparié entre auteur du commit et entrée allowed signers. Pointer user.signingkey vers un chemin de clé privée ; vous voulez la .pub.
Environnements mixtes
Les commits SSH-signés et GPG-signés peuvent coexister dans un repo.