Aller au contenu
ecdsa.com
Git (verify-commit, log --show-signature, merge --verify-signatures) with gpg.format=sshGit

Message d’erreur

error: gpg.ssh.allowedSignersFile needs to be configured and exist for ssh signature verification

Également affiché sous la forme

  • fatal: either user.signingkey or gpg.ssh.defaultKeyCommand needs to be configured

`git log --show-signature` affiche la même ligne, puis « No signature » pour le commit, ce qui laisse croire que le commit n’est pas signé ; ce n’est pas le cas.

Ce que cela signifie

Le commit porte une signature SSH (`gpg.format ssh`), et Git vérifie ces signatures avec `ssh-keygen -Y verify` à l’aide d’un fichier « allowed signers » qui associe des identités (adresses e-mail) à des clés publiques de confiance. Aucun fichier de ce type n’est configuré : Git ne peut donc pas déterminer si la signature provient de quelqu’un en qui vous avez confiance, et signale une erreur au lieu d’un verdict. La signature elle-même peut être parfaitement valide. Côté signature, « either user.signingkey or gpg.ssh.defaultKeyCommand needs to be configured » signale le même manque dans la configuration.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Créer un fichier des signataires autorisés

    Chaque ligne : un ou plusieurs principaux, des options facultatives comme `namespaces="git"`, puis la clé publique. Git compare l’adresse e-mail du committer avec le principal.

    bash
    # One line per trusted signer: principal (email) + public key; namespaces restricts it to git
    echo "alice@example.com namespaces=\"git\" $(cut -d' ' -f1,2 ~/.ssh/id_ed25519.pub)" >> ~/.config/git/allowed_signers
    git config --global gpg.ssh.allowedSignersFile ~/.config/git/allowed_signers
    git verify-commit HEAD
  2. 2.

    Conserver les signataires de l’équipe dans le dépôt

    Un fichier relu et versionné dans le dépôt permet à tout le monde (CI comprise) de vérifier le même ensemble de clés ; ses modifications passent par la revue de code.

    bash
    # Team setup: a reviewed allowed_signers file in the repository
    git config gpg.ssh.allowedSignersFile .github/allowed_signers
    git log --show-signature -1

Erreurs associées

Parcourir toute la base de données des erreurs de signature