Zum Inhalt springen
ecdsa.com
Git (verify-commit, log --show-signature, merge --verify-signatures) with gpg.format=sshGit

Fehlermeldung

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

Auch ausgegeben als

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

`git log --show-signature` gibt dieselbe Zeile und danach „No signature“ für den Commit aus. Das sieht so aus, als wäre der Commit nicht signiert – er ist es aber.

Was der Fehler bedeutet

Der Commit trägt eine SSH-Signatur (`gpg.format ssh`), und Git prüft solche Signaturen mit `ssh-keygen -Y verify` gegen eine Allowed-Signers-Datei, die Identitäten (E-Mail-Adressen) vertrauenswürdigen öffentlichen Schlüsseln zuordnet. Eine solche Datei ist nicht konfiguriert, deshalb kann Git nicht entscheiden, ob die Signatur von jemandem stammt, dem du vertraust, und meldet einen Fehler statt eines Prüfergebnisses. Die Signatur selbst kann völlig gültig sein. Beim Signieren ist „either user.signingkey or gpg.ssh.defaultKeyCommand needs to be configured“ die entsprechende Lücke in der Konfiguration.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Allowed-Signers-Datei anlegen

    Jede Zeile: Principal(s), optional Optionen wie `namespaces="git"`, danach der öffentliche Schlüssel. Git gleicht die E-Mail-Adresse des Committers mit dem Principal ab.

    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.

    Signierer des Teams im Repository pflegen

    Liegt eine per Review freigegebene Datei im Repository, prüfen alle (auch die CI) mit demselben Satz von Schlüsseln; Änderungen daran durchlaufen das Code-Review.

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

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen