Git-Fehler - gpg konnte keine Daten signieren


148

Ich habe gerade angefangen, git zu verwenden und ich installiere git und gpg über Homebrew. Aus irgendeinem Grund erhalte ich diesen Fehler, wenn ich git commit mir so viele andere Fragen zum Stapelüberlauf zu diesem Thema angesehen habe und keine davon für mich funktioniert hat. Wie kann ich diesen Fehler beheben, damit ich erfolgreich hochladen kann?

error: gpg failed to sign the data
fatal: failed to write commit object

3
Für Mac-Benutzer. Ich hatte dieses Problem. Die Ratschläge auf dieser Seite haben mir klar gemacht, dass möglicherweise zwei Versionen von gpg installiert sind, und das habe ich auch getan. Eine von Brew und eine von GPG Suite. Ich wollte die GPG Suite verwenden, da sie das Zwischenspeichern von Passphrasen im Systemschlüsselbund ermöglicht. Durch die Deinstallation der Brew-Version wurden meine Probleme behoben. Zusammen mit der Antwort von @ pageshowbarker über das Töten von gpg-agent. Ich gehe also davon aus, dass sich die Konfigurationen der beiden gegenseitig störten.
Michael Welch



Ich bin gerade auf ein Problem mit der GPG-Signierung gestoßen. Das Problem war, dass in meinem Git-Repo nicht die lokale gpg.signingkey festgelegt war, sondern die gllobale. git config --local user.signingkeyStellen Sie einfach den richtigen Schlüssel ein und es wird erneut automatisch signiert. und vielleicht deaktivieren Sie die globale mitgit config --global --unset user.signingkey
MarcusJ

Antworten:


208

Versuchen Sie zur Fehlerbehebung zunächst zwei Dinge:

  • laufen git config --global gpg.program gpg2, um sicherzustellen, dass Git verwendet gpg2und nichtgpg
  • laufen echo "test" | gpg2 --clearsign, um sicherzustellen, dass gpg2selbst funktioniert

Wenn das alles in Ordnung aussieht, versuchen Sie es als nächstes:

  • Führen brew install pinentrySie diese Option aus, um sicherzustellen, dass ein gutes Tool für die Eingabe von Passphrasen installiert ist

Wenn Sie nach dieser Installation erneut versuchen git commitund trotzdem den failed to sign the dataFehler " " erhalten:

  • rennen gpgconf --kill gpg-agent, um einen laufenden Agenten zu töten, der möglicherweise hängen bleibt

Wenn dies besagt, dass gpgconfes nicht installiert ist oder keine --killOption hat, können Sie Folgendes versuchen:

  1. cp ~/.gnupg ~/.gnupg-GOODum eine Kopie von Ihnen zu speichern und ~/.gnupgbei Bedarf später darauf zurückzugreifen
  2. brew install gnupg21 um GnuPG 2.1 zu installieren

Der Grund für das Speichern einer Kopie Ihres ~/.gnupgVerzeichnisses besteht darin, dass GnuPG 2.1 möglicherweise einige Schlüsseldaten auf eine Weise erstellt / ändert, die nicht mit GnuPG 2.0 und früher abwärtskompatibel ist. Wenn Sie also später zurückkehren möchten, können Sie dies tun mv ~/.gnupg ~/.gnupg21 && mv ~/.gnupg-GOOD ~/.gnupg.


Andernfalls müssen einige grundlegende Schritte ausgeführt werden, um zu überprüfen, ob Sie eine funktionierende GnuPG-Umgebung haben:

  • Führen Sie aus gpg2 -K --keyid-format SHORT, um zu überprüfen, ob Sie mindestens ein Schlüsselpaar haben

Wenn die Ausgabe zeigt, dass Sie keinen geheimen Schlüssel für GnuPG haben, müssen Sie einen erstellen:

  • Ausführen gpg2 --gen-key, damit GnuPG Sie durch die Schritte zum Erstellen eines Schlüsselpaars führt

Wenn Sie die Fehlermeldung "Unangemessenes ioctl für Gerät" erhalten , gehen Sie wie folgt vor :

  • Führen Sie das aus export GPG_TTY=$(tty)und / oder fügen Sie es Ihrem ~/.bashrcoder hinzu˜/.bash_profile

Ich erhalte diesen Fehler, wenn ich den zweiten Befehl ausführe: gpg: kein geheimer Standardschlüssel: kein geheimer Schlüssel gpg: [stdin]: Löschzeichen fehlgeschlagen: kein geheimer Schlüssel
Entitize

@Entitize Das scheint darauf hinzudeuten, dass gpg nicht glaubt, dass Sie Schlüssel zum Signieren haben. Siehe die zusätzlichen Schritte, die ich der Antwort hinzugefügt habe. Wenn Sie noch nie gpg2 --gen-keyzuvor gelaufen sind, müssen Sie dies zuerst tun.
Sideshowbarker

2
wenn ich echo "test" | starte gpg2 --clearsign, es gibt mir: gpg-agent [-]: Befehl get_passphrase fehlgeschlagen: Unangemessenes ioctl für Gerät gpg: Problem mit dem Agenten: Unangemessenes ioctl für Gerät gpg: kein geheimer Standardschlüssel: Operation abgebrochen gpg: [stdin]: Löschzeichen fehlgeschlagen: Vorgang abgebrochen. Ich habe so viele andere Möglichkeiten ausprobiert, aber keine funktioniert. Gibt es eine Möglichkeit, GIT ohne GPG zu verwenden?
Entitize

9
Sie könnten es versuchen export GPG_TTY=$(tty). Soweit es eine Möglichkeit gibt, git ohne gpg zu verwenden, sollten Sie dies standardmäßig tun können, oder indem Sie einfach die git config --global commit.gpgsign falseglobal nicht festgelegte gpg-Signatur Ihrer Commits ausführen.
Sideshowbarker

10
Hier in Mac OS X begann ich mit dem Debuggen echo "test" | gpg2 --clearsign, fand einen Fehler und führte mich zu diesem Thread , der mein Problem löste: Ich habe einfach einen export GPG_TTY=$(tty)in meine ˜/.bash_profileDatei source ˜/.bash_profile
eingefügt

71

Git muss wissen, mit welchem ​​Schlüssel es signiert.

Nachdem Sie GPG, gpg-agent und Ihre gpg.conf-Dateien eingerichtet haben (siehe dieses Handbuch ), müssen Sie ausführen

git config --global user.signingkey EB11C755

Ersetzen Sie natürlich den öffentlichen Schlüssel am Ende durch Ihren eigenen. Wenn Sie möchten, dass jedes Commit standardmäßig signiert wird, verwenden Sie

git config --global commit.gpgsign true

7
Ich bin nur darauf gestoßen, falls jemand anderes dumm genug war, das zu tun, was ich getan habe: Stellen Sie sicher, dass Sie es "Signaturschlüssel" und nicht "Signaturschlüssel" buchstabieren.
ZNK

1
buchstäblich hat dieser Kommentar von @ZNK es für mich getan. Ich hatte es "signkey" statt "signingkey" geschrieben
jzatt

1
In der akzeptierten Antwort sollte dies als erster Schritt zur Fehlerbehebung angeführt werden, da manchmal alle Schlüssel bereits vorhanden sind und nur vergessen wird, welcher Schlüssel verwendet werden soll.
f055

41

Irgendwie ist dein Git so konfiguriert, dass es bei jedem Commit GPG signiert. Das Signieren mit GPG ist nicht erforderlich, um mit git ein Commit oder Push durchzuführen. Es ist wahrscheinlich, dass der Fehler auftritt, weil Ihr GPG-Signaturmechanismus noch nicht konfiguriert ist.

Wenn Sie neu in Git sind, versuchen Sie, es zuerst ohne GPG-Signierung zum Laufen zu bringen, und fügen Sie dann später die Anmeldung hinzu, wenn Sie es wirklich brauchen.

Sie können überprüfen, wie Ihr Git in Bezug auf GPG konfiguriert ist, indem Sie Folgendes tun:

git config -l | grep gpg

Welche null oder mehr Zeilen erzeugen können, einschließlich:

commit.gpgsign=true

Wenn "commit.gpgsign" wahr ist, ist die GPG-Signatur aktiviert. Deaktivieren Sie es mit:

git config --global --unset commit.gpgsign

Versuchen Sie dann erneut, Ihr Commit auszuführen. Es sollte jetzt ohne GPG-Signatur ausgeführt werden. Nachdem Sie das grundlegende Git zum Laufen gebracht haben, sollten Sie versuchen, dem Mix wieder eine GPG-Signatur hinzuzufügen.


12
Genial! git config --global --unset commit.gpgsignarbeitete für mich :)
hpaknia

Beeindruckend!! es hat bei mir funktioniert: git config --global --unset commit.gpgsign
Hardy Mathew

32

Siehe @sideshowbarker und @ Xavier Ho Lösung, ich habe mein Problem durch die folgenden Schritte gelöst.

Angenommen, gpg2 wurde von Brew installiert.

git config --global gpg.program gpg2
brew install pinentry
gpgconf --kill gpg-agent
gpg2 -K --keyid-format SHORT
// no key found then generate new one
gpg2 --gen-key

gpg2 -K --keyid-format SHORT 

... /. gnupg / pubring.gpg

sec rsa2048 / 0A61C6FC 29.06.2017 [SC] [läuft ab: 29.06.2019]

git config --global user.signingkey 0A61C6FC

Von meinem Kollegen erinnert, muss anhängen

export GPG_TTY=$(tty)

an ~ / .zshrc, wenn zsh verwendet wird, andernfalls an ~ / .bash_profile anhängen


Für macOS

Das gpg2 wird im Gebräu mit gpg kombiniert, und daher zeigt der Befehl gpg auf gpg2

brew install gpg2

brauen info gpg

gnupg: stabil 2.2.6 (abgefüllt)

git config --global gpg.program gpg
gpg -K --keyid-format SHORT 

und es gibt pinentry-mac für die Eingabe von Passphrasen

brew install pinentry-mac
vim ~/.gnupg/gpg-agent.conf

Zeile hinzufügen

pinentry-program / usr / local / bin / pinentry-mac


1
macOS 10.15 (Catalina) wird mit GnuPG Version 2.2.17 ausgeliefert, sodass Sie es nicht separat installieren müssen, es sei denn, Sie möchten Updates selbst verwalten.
Josh Habdas

18

Ich benutze es. Es unterstützt zsha und funktioniert unter Windows Subsystem for Linux:

export GPG_TTY=$(tty)

2
Ich verwende zsh unter MacOS Catalina und dies war die einzige Änderung, die ich brauchte, um es zum Laufen zu bringen. Vielen Dank.
JP Lew

Ich habe den Fehler im OP erhalten, nachdem ich meine Schlüssel in meine WSL-Umgebung kopiert habe. Es stellte sich heraus, dass ich dies tun musste, um eine Aufforderung zur Eingabe der Passphrase für den Schlüssel bereitzustellen. Vielen Dank.
Narwic

9

Überprüfen Sie, ob Ihr Schlüssel abgelaufen ist. Sobald Sie das Ablaufdatum festgelegt haben (Sie müssen keinen neuen Schlüssel erstellen, es sei denn, Sie möchten), gitfunktioniert dies wie gewohnt.

Eine Möglichkeit, den abgelaufenen Schlüssel zu beheben:

(Hinweis: $Stellt die Eingabeaufforderung dar. Geben Sie die Befehle nach der Eingabeaufforderung ein. Drücken Sie nach jedem Befehl die Eingabetaste.)

$ gpg2 --list-keysdie entsprechende Taste - ID (Zeichen nach finden \auf pubLinie)

$ gpg2 --edit-key <key id> - Dadurch wird die GPG-Shell geöffnet und die Eingabeaufforderung in geändert gpg>

gpg> expire - Befolgen Sie die Anweisungen, um das neue Ablaufdatum für den Primärschlüssel festzulegen

Wenn als nächstes Unterschlüssel abgelaufen sind ( subwird in der Zeile angezeigt ), setzen Sie auch deren Ablaufdatum zurück:

gpg> key 1- wählt den ersten Unterschlüssel aus gpg> expire- Befolgen Sie die Anweisungen, um das neue Ablaufdatum für den Unterschlüssel festzulegen

Wiederholen Sie diesen Vorgang nach Bedarf für jeden nachfolgenden Unterschlüssel.


Ich hatte dieses Problem jedes Mal, wenn ich versucht habe, einen GPG-Schlüssel auszuführen, der kein Ablaufdatum hatte. Aus irgendeinem Grund mag git das nicht. Die Verwendung dieser Methode zum Hinzufügen eines Ablaufdatums (egal wie weit in der Zukunft) scheint das Problem zu lösen.
some_guy632

5

Dies funktionierte für mich am Ubuntu 18.04

Überprüfen Sie Ihren GPG-Schlüssel

gpg -K --keyid-format LONG

Wenn Sie eine leere Antwort erhalten, generieren Sie einen GPG-Schlüssel

gpg --generate-key

Führen Sie den ersten Befehl erneut aus. Sie sollten eine Ausgabe erhalten als:

sec   rsa3072/95A854E0593B3214 2019-05-06 [SC] [expires: 2021-05-05]
      AF2F7514568DC26B0EB97B9595A854E0593B74D8
uid                 [ultimate] yourname<your_email>
ssb   rsa3072/EFD326E6C611117C 2019-05-06 [E] [expires: 2021-05-05]

setze git Gesangstaste

git config --global user.singingkey 95A854E0593B3214

dann bist du gut zu gehen! (--global ist optional)

Alternativ, wenn es Ihnen nichts ausmacht, mit Ihrem SSH-Schlüssel zu signieren

git config commit.gpgsign false

Beachten Sie, dass dies aufgrund eines Sicherheitsproblems gemäß dieser Frage hier und hier nicht empfohlen wird


"Alternativ, wenn es Ihnen nichts ausmacht, mit Ihrem SSH-Schlüssel zu signieren" Was hat SSH mit Signieren zu tun?
Riffraff

SSH hat nichts mit dem Signieren von Commits zu tun. Sie beziehen sich auf das Deaktivieren der GPG-Commit-Signatur und auf die Verwendung von SSH-Schlüsseln zur Authentifizierung, wenn Sie Ihre Commits tatsächlich an einen Git-Server senden. Sie können nicht signierte Commits mithilfe der SSH-Authentifizierung pushen (und dies ist durchaus üblich).
Telefon512

4

Ich musste das gpg.program auf den absoluten Pfad zu gpg korrigieren:

git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

Ich benutze Windows mit Cygwin.


3
Das war die Lösung für mich. Ich habe Gnupg mit Chocolatey installiert.
Alex S

Danke, hat auch für mich gearbeitet. Ich hatte getanchoco install gpg4win
Gokul NC

4

Lösung:

Issue: Disabled loopback pinentry mode

Um das Problem zu lösen, müssen Sie den Loopback-Pinentry-Modus in ~ / .gnupg / gpg.conf aktivieren :

cat <<'EOF' >> ~/.gnupg/gpg.conf

use-agent 
pinentry-mode loopback

EOF

Und auch in ~ / .gnupg / gpg-agent.conf (erstelle die Datei, falls sie noch nicht existiert):

cat <<'EOF' >> ~/.gnupg/gpg-agent.conf

allow-loopback-pinentry

EOF

Starten Sie dann den Agenten mit neu echo RELOADAGENT | gpg-connect-agentund Sie sollten bereit sein!

Quelle


1
Wow, nachdem ich stundenlang alle möglichen Lösungen ausprobiert hatte, wurde mein Problem behoben, danke!
Matt

Bitte. Danke eigentlich an die Quelle. Ich war auch damit festgefahren.
Rahul Thakur

3

Dieser Fehler kann auch auftreten, wenn Ihr GPG-Schlüssel abgelaufen ist. Das Generieren eines neuen Schlüssels und das Hinzufügen zu Git sollte dies beheben.


3

Ich habe dieses Problem nach dem Upgrade auf gnupg 2.x festgestellt. Es würde sich herausstellen, dass gpg2 Schlüssel anders referenziert: Ich hatte immer noch signingkey = ABC98F11(gpg v1-Einstellung) in meinem ~/.gitconfig. Die Schlüsselkennungen für gpg2 sind länger. Schlage sie mit nachgpg --list-secret-keys


1

Ich hatte einen gitSchlüssel mit 3 separaten Schlüsseln für certify/ sign/ encrypt& erstellt. Der Schlüssel wurde in Zukunft als abgelaufen angezeigt (nachdem ich einige Tage lang einwandfrei gearbeitet hatte):

pub   rsa4096/4CD1E9DA 2017-04-26 [C] [expired: 2017-04-28]
      Key fingerprint = 4670 59C1 7592 08B8 7FA5  313B 2A42 B6A6 4CD1 E9DA
uid         [ expired] Stuart Cardall (GIT Development Keys) <xxxxxx>
sub   rsa4096/5195E715 2017-04-26 [E] [expired: 2019-04-26]
sub   rsa4096/DB74C297 2017-04-26 [S] [expired: 2019-04-26]
sub   rsa2048/A3913A3C 2017-04-28 [] [expired: never     ]

hat einen neuen Schlüssel erstellt, ohne separate Unterschlüssel hinzuzufügen, um das Problem zu lösen.


1

Möglicherweise wurde Ihre Git-Konfiguration auf gpgsign = true gesetzt . Versuchen Sie, es auf false zu setzen, wenn Sie Ihre Commits nicht zuweisen möchten. Gehen Sie zu Ihrem Repository-Ordner und ändern Sie die Datei

nano .git / config

Davon...

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@bitbucket.org:yourrepo/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[user]
    signingkey = <GPG-KEY>
[commit]
    gpgsign = true

Dazu ...

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@bitbucket.org:yourrepo/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[user]
    signingkey = <GPG-KEY>
[commit]
    gpgsign = false

1

Bei mir trat dieser Fehler unter git tag -sDebian GNU / Linux auf, als ich für einen einfacheren Fernzugriff von pinentry-gnome3auf pinentry-curses(using update-alternatives --config pinentry) wechselte . Es geschah nur mit git tag -s, nicht mit gpg(zB gpg --clearsign) sich selbst.

Die einzige Änderung, die erforderlich ist, damit es in diesem Fall wieder funktioniert, war das Hinzufügen export GPG_TTY=$(tty)zu meinen Shell-Startdateien.

Ich habe jedoch nicht die Fehlermeldung "Unangemessenes Ioctl für Gerät" erhalten, die als Indikator für dieses Update in einer anderen Antwort auf diese Frage angegeben wurde.

Hinweis: Da die Ursache für diesen Fehler völlig anders war als für diejenigen, die export GPG_TTY=$(tty)zuvor (normalerweise als Nebenhinweis) in anderen Antworten auf diese Frage vorgeschlagen haben, habe ich beschlossen, dass diese Frage eine andere Antwort benötigt, in der erwähnt wird, dass dies export GPG_TTY=$(tty)möglicherweise die Hauptbehebung ist einzige Sache, die in einigen Fällen notwendig ist.


Vielen Dank! update-alternatives --config pinentryhabe es für mich getan. Ich bin SSH'd in meinen Desktop und pinentrywurde auf /usr/bin/pinentry-gnome3(was sollte eine TTY Notlösung , wenn SSH'd in oder beim Einschalten auf eine virtuelle Konsole). Aber es hat anscheinend nicht funktioniert. Das Setzen der Standardeinstellung /usr/bin/pinentry-ttyhat den Trick für mich erledigt. Ich muss es möglicherweise zurücksetzen, wenn ich wieder auf meinem Desktop bin, aber im Moment bin ich gut. export GPG_TTY=$(tty)war nicht genug. Ich habe es getan, musste aber wechseln, pinentrybevor ich mein Commit unterschreiben konnte.
Karl Wilbur

1

Was es für mich gelöst hat, war sicherzustellen, dass der Name des Schlüssels mit meinem Git-Benutzernamen übereinstimmt. Ich gehe davon aus, dass die E-Mails auch übereinstimmen müssen. Dies hat möglicherweise damit zu tun, dass ich GPG KeyChain auf meinem Mac verwende. Nicht sicher.

Ich dachte, ich würde den Schlüssel benennen, als ich ihn ausfüllte, aber ich glaube, er fragte nach meinem Namen (Git-Benutzername).

GPG-Schlüsselbundformular


Es ist schade, dass diese Antwort so weit hinten liegt, dass viele nicht hierher kommen, um nach ihrem Problem zu suchen.
MaciekS

1

Ich hatte diesen Fehler auf Macos - um zu versuchen, Fehler zu beheben, habe ich versucht, Schlüssel aufzulisten, um festzustellen, ob sie mit abgelaufen sind. gpg2 --list-keysIch habe überprüft, ob die Schlüssel nicht abgelaufen sind und ob der richtige Schlüssel in meiner Konfiguration mit festgelegt wurdegit config --global user.signingkey .

Nachdem ich diese Befehle ausgeführt hatte, konnte ich plötzlich wieder ohne Probleme signierte Commits ausführen. Ich habe meine Konfigurationsdateien oder Schlüssel nicht geändert - ich habe nicht einmal eine neue Terminalinstanz erstellt. Es schien nur so, als ob das gpg2 auf meinem Mac irgendwie in einem seltsamen Zustand war.


0

Ich löste das Problem bei der Installation brew install gpg2dann tungit config --global gpg.program gpg2


0

Der gleiche Fehler kann auch verursacht werden, wenn Sie den Schlüssel in Ihrer Git-Konfiguration abgelaufen sind.

Bitte überprüfen Sie den Inhalt von cat .git/configund suchen Sie nach signingkeyWert und prüfen Sie, ob er abgelaufen ist. Wenn ja, aktualisieren Sie es mit dem neuen.


0

Wenn Sie Smartcard / yubikey zum Speichern Ihres GPG-Schlüssels verwenden und den einstellensignkey Git-Konfiguration anhand des auf der Karte gespeicherten (und alle obigen Antworten scheinen Ihr Problem nicht zu lösen), ist Ihre blockierte PIN der Karte möglicherweise die Grundursache für dieses Problem.

So überprüfen Sie die gesperrte PIN:

gpg --card-status

Wenn der Zähler ähnlich ist

Reader ...........: Yubico YubiKey
PIN retry counter : 3 0 3

Dann wird Ihre PIN gesperrt (nach 3 erfolglosen Versuchen).

So entsperren Sie die PIN:

gpg --card-edit
gpg/card> admin
Admin commands are allowed

gpg/card> passwd
gpg: OpenPGP card no. … detected

1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit

Your selection? 2
PIN unblocked and new PIN set.

1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit

Your selection? q

0

Für mich ein einfaches brew unintstall gnupg && brew cask reinstall gpg-suite löst Lösung das Problem.

Es deinstalliert das (in meinem Fall) manuell von Homebrew installierte GPG und installiert die gesamte GPG Suite neu.


0

In meinem Fall hatte ich eine gemischte GPG-Konfiguration und Smimesign-Konfiguration, die in der Commit-Signatur-Dokumentation hier angegeben sind: https://help.github.com/de/github/authenticating-to-github/telling-git-about-your-signing- Schlüssel

Nachdem ich stundenlang daran gearbeitet hatte, fand ich heraus, dass der beste Weg, dies zu korrigieren, darin bestand, alles, was mit gpg zu tun hat, zu deaktivieren und gpg neu zu konfigurieren.

Wie in der Antwort von @Jason Thrasher erwähnt, finden Sie alle Git-Konfigurationen im Zusammenhang mit GPG mit:

git config -l | grep gpg

Dann deaktivieren Sie alles golablly sowie lokal mit:

git config --global --unset <config_name>
git config --local --unset <config_name>

Konfigurieren Sie dann gemäß der oben angegebenen offiziellen Dokumentation neu. Hoffe das hilft.


Außerdem benutze ich gpg2
Shubham Gupta

0

Wenn Sie Ihre Pinentry und Ihr GPG zuvor eingerichtet hatten und es aus dem Nichts nicht mehr funktionierte:

Überprüfen Sie, ob Ihr GPG funktioniert:

echo "test" | gpg --clearsign

Wenn es heißt gpg: signing failed: No pinentry, starten Sie einfach den gpg-Daemon-Client neu, der von Zeit zu Zeit hängen bleibt:

gpgconf --kill gpg-agent

Jetzt sollte es funktionieren:

echo "test" | gpg --clearsign

0

In meinem Fall trat dieser Fehler auf, wenn er git commitin einem kleinen tmuxFenster ausgeführt wurde, das nicht zur Passphrase-Eingabeaufforderung passte.

$ echo "test" | gpg --clearsign
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

test
gpg: signing failed: Screen or window too small
gpg: [stdin]: clear-sign failed: Screen or window too small

-6

Dies wird Ihnen helfen, es loszuwerden

git config commit.gpgsign false


1
Ich verstehe die Abstimmung nicht, sie hat das vorgeschlagene Problem wie ein Zauber für mich gelöst.
Jms

2
Dieser Befehl sollte vermieden werden. Es wird nur die Anforderung zum Signieren des Git-Commits entfernt, nicht das Problem der Authentifizierung der Person, die das Commit durchführt.
Kyle
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.