Git त्रुटि - gpg डेटा पर हस्ताक्षर करने में विफल रहा


149

मैंने अभी-अभी git का उपयोग करना शुरू किया है और मैं git और gpg को homebrew के माध्यम से स्थापित करता हूं। किसी कारण से, मुझे यह त्रुटि तब होती है जब मैं git commit इस विषय के बारे में कई अन्य स्टैकओवरफ़्लो प्रश्नों को देखता हूं और उनमें से किसी ने भी मेरे लिए काम नहीं किया। मैं इस त्रुटि को कैसे ठीक कर सकता हूं ताकि मैं सफलतापूर्वक अपलोड कर सकूं

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

3
मैक उपयोगकर्ताओं के लिए। मेरे पास यह मुद्दा था। इस पृष्ठ पर सलाह ने मुझे एहसास दिलाया कि मेरे पास gpg के दो संस्करण हो सकते हैं और मैंने किया। एक काढ़ा से और दूसरा जीपीजी सूट से। मैं GPG सुइट का उपयोग करना चाहता था क्योंकि यह सिस्टम किचेन में पासफ़्रेज़ को कैशिंग करने की अनुमति देता है। काढ़ा संस्करण की स्थापना रद्द करने से मेरे मुद्दों का समाधान हुआ। Gpg-agent की हत्या के बारे में @ sideshowbarker के उत्तर के साथ। इसलिए मुझे लगता है कि प्रत्येक के विन्यास एक दूसरे के साथ हस्तक्षेप कर रहे थे।
माइकल वेल्च


के संभावित डुप्लिकेट stackoverflow.com/questions/41502146/...
डॉ Beco

मैं सिर्फ gpg हस्ताक्षर के साथ एक मुद्दे में भाग गया, समस्या यह थी कि मेरे git रेपो में यह स्थानीय gpg.signingkey सेट नहीं था, लेकिन एक ग्लाइकोल था। तो बस git config --local user.signingkeyसही कुंजी पर सेट करें और यह फिर से ऑटोसाइन करेगा। और हो सकता है के साथ वैश्विक एक अनसेटgit config --global --unset user.signingkey
MarcusJ

जवाबों:


210

समस्या निवारण के लिए, पहली कोशिश करने के लिए दो चीजें:

  • चलाने के लिए git config --global gpg.program gpg2, सुनिश्चित करें कि गिट उपयोग करता है gpg2और नहींgpg
  • रन echo "test" | gpg2 --clearsign, यह सुनिश्चित करने के लिए कि gpg2खुद काम कर रहा है

अगर वह सब ठीक लग रहा है, तो अगली बात यह है कि कोशिश करें:

  • brew install pinentryपासफ़्रेज़ प्रविष्टि के लिए आपके पास एक अच्छा उपकरण है, यह सुनिश्चित करने के लिए चलाएं

यदि उसके बाद स्थापित हो और आप पुनः प्रयास करें git commitऔर फिर भी " failed to sign the data" त्रुटि प्राप्त करें :

  • gpgconf --kill gpg-agentकिसी भी चलने वाले एजेंट को मारने के लिए चलाएं जो लटका दिया जा सकता है

यदि वह कहता gpgconfहै कि स्थापित नहीं है या आपके पास कोई --killविकल्प नहीं है , तो आप यह कोशिश कर सकते हैं :

  1. cp ~/.gnupg ~/.gnupg-GOOD~/.gnupgयदि आवश्यक हो तो बाद में वापस करने के लिए अपनी कॉपी को बचाने के लिए
  2. brew install gnupg21 GnuPG 2.1 स्थापित करने के लिए

आपकी ~/.gnupgडीआईआर की एक प्रति सहेजने का कारण यह है कि GnuPG 2.1 संभावित रूप से कुछ महत्वपूर्ण डेटा बनाता है / बदलता है जो GnuPG 2.0 और इससे पहले के साथ बैकवर्ड-संगत नहीं है, इसलिए यदि आप बाद में वापस जाना चाहते हैं, तो आप कर सकते हैं mv ~/.gnupg ~/.gnupg21 && mv ~/.gnupg-GOOD ~/.gnupg


अन्यथा आप काम कर रहे GnuPG पर्यावरण मिल गया है जाँच करने के लिए चलाने के लिए कुछ बुनियादी कदम हैं:

  • चलाने gpg2 -K --keyid-format SHORT, जाँच करने के लिए कम से कम एक कुंजी युग्म है

यदि उस आउटपुट से पता चलता है कि आपके पास उपयोग करने के लिए कोई गुप्त कुंजी नहीं है, तो आपको एक बनाने की आवश्यकता है:

  • चलाने के लिए gpg2 --gen-key, एक प्रमुख जोड़ी बनाने के चरणों के माध्यम से GnuPG चलना

यदि आपको "डिवाइस के लिए अनुपयुक्त ioctl" कहते हुए एक त्रुटि संदेश मिलता है , तो यह करें:

  • चलाने export GPG_TTY=$(tty)और / या करने के लिए कि जोड़ने के अपने ~/.bashrcया˜/.bash_profile

जब मुझे दूसरी कमांड चलती है तो मुझे यह त्रुटि मिलती है: gpg: कोई डिफ़ॉल्ट गुप्त कुंजी: कोई गुप्त कुंजी gpg: [स्टड]: क्लींसिन विफल: कोई गुप्त कुंजी नहीं
प्रवेश करें

@ बताएं कि ऐसा लगता है कि gpg को लगता है कि आपके पास हस्ताक्षर करने के लिए उपयोग करने के लिए कोई कुंजी नहीं है। मैंने उत्तर में जो अतिरिक्त चरण जोड़े हैं, उन्हें देखें; यदि आप पहले कभी नहीं दौड़े हैं gpg2 --gen-key, तो आपको पहले ऐसा करने की आवश्यकता है।
साइडशोबर्कर

2
जब मैं गूंज "परीक्षण" चलाते हैं | gpg2 --clearsign, यह मुझे देता है: gpg-agent [-]: कमांड get_passphrase विफल: डिवाइस के लिए अनुपयुक्त ioctl gpg: एजेंट के साथ समस्या: डिवाइस gpg के लिए अनुपयुक्त ioctl: कोई डिफ़ॉल्ट गुप्त कुंजी नहीं: ऑपरेशन रद्द gpg: [stdin]: Clearsign विफल: ऑपरेशन रद्द किया गया मैं कई अन्य possibilites की कोशिश की है, लेकिन कोई काम नहीं। क्या बिना GPG के GIT का उपयोग करने का कोई तरीका है!
Entitize

9
आप कोशिश कर सकते हैं export GPG_TTY=$(tty)। जहाँ तक अगर बिना gpg के git का उपयोग करने का कोई तरीका है, तो आपको डिफ़ॉल्ट रूप से या बस git config --global commit.gpgsign falseअपने कमिट्स पर वैश्विक रूप से परेशान gpg पर हस्ताक्षर करके चलना चाहिए।
साइडशोर्बकर

10
यहां मैक ओएस एक्स में, मैंने डिबग करना शुरू कर दिया echo "test" | gpg2 --clearsign, एक त्रुटि मिली और यह मुझे इस धागे की ओर ले जाता है , जिसने मेरी समस्या को हल किया: मैंने बस export GPG_TTY=$(tty)अपनी ˜/.bash_profileफाइल में डाल दिया और फिर पुनः लोड कियाsource ˜/.bash_profile
herrera

71

Git को यह जानना होगा कि वह किस कुंजी के साथ हस्ताक्षर कर रहा है।

आपके पास सेटअप GPG, gpg-agent, और आपकी gpg.conf फ़ाइलें ( यह मार्गदर्शिका देखें ) होने के बाद, आपको चलाने की आवश्यकता है

git config --global user.signingkey EB11C755

जाहिर है, अंत में सार्वजनिक कुंजी को अपने स्वयं के साथ बदलें। यदि आप चाहते हैं कि हर प्रतिबद्धता डिफ़ॉल्ट रूप से हस्ताक्षरित हो, तो उपयोग करें

git config --global commit.gpgsign true

7
मैं सिर्फ इस मामले में भाग गया कि कोई और भी मूर्ख था जो मैंने किया था: सुनिश्चित करें कि आपने इसे "हस्ताक्षर" और "साइनकी" नहीं किया।
ZNK

1
सचमुच यह टिप्पणी @ZNK ने मेरे लिए की। मैंने इसे "साइनकी" के बजाय "साइनकी" के रूप में लिखा था
जज़ट

1
स्वीकार किए गए उत्तर को इसे पहले समस्या निवारण चरण के रूप में उद्धृत करना चाहिए, क्योंकि कभी-कभी आपके पास पहले से ही आपकी सभी चाबियां होती हैं, यह सिर्फ यह भूल जाता है कि किस कुंजी का उपयोग करना है।
f055

41

किसी तरह आपका git हर कमिट GPG साइन करने के लिए कॉन्फ़िगर किया गया है। GPG के साथ साइन इन करने के लिए git का उपयोग करना या धक्का देना आवश्यक नहीं है। यह त्रुटि देने की संभावना है क्योंकि आपका gpg हस्ताक्षर तंत्र अभी तक कॉन्फ़िगर नहीं किया गया है।

यदि आप git के लिए नए हैं, तो पहले GPG पर हस्ताक्षर किए बिना इसे काम करने का प्रयास करें, फिर बाद में साइन इन करें यदि आपको वास्तव में इसकी आवश्यकता है।

आप यह सत्यापित कर सकते हैं कि आपके git को gpg के संबंध में कैसे कॉन्फ़िगर किया गया है:

git config -l | grep gpg

जिसमें शून्य या अधिक लाइनें शामिल हो सकती हैं, जिनमें शामिल हैं:

commit.gpgsign=true

यदि "प्रतिबद्ध.gpgsign" सत्य है, तो आपके पास gpg सक्षम होना चाहिए। इसके साथ अक्षम करें:

git config --global --unset commit.gpgsign

फिर अपने कमिट को फिर से चलाने की कोशिश करें। यह अब बिना gpg हस्ताक्षर के चलना चाहिए। जब आपको मूल गिट काम करना शुरू हो जाता है, तो आपको मिश्रण में वापस gpg जोड़ने की कोशिश करनी चाहिए।


12
बहुत बढ़िया! git config --global --unset commit.gpgsignमेरे लिए काम किया :)
hpaknia

वाह!! इसने मेरे लिए काम किया: git config --global --unset प्रतिबद्ध.gpgsign
हार्डी मैथ्यू

32

@Sideshowbarker, और @Xavier Ho समाधान का संदर्भ लें, मैंने निम्नलिखित चरणों के माध्यम से अपनी समस्या को हल किया।

काढ़ा द्वारा स्थापित gpg2 मान लें,

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

सेकंड rsa2048 / 0A61C6FC 2017-06-29 [SC] [एक्सपायर: 2019-06-29]

git config --global user.signingkey 0A61C6FC

मेरे सहयोगी ने याद दिलाया, अपील करने की जरूरत है

export GPG_TTY=$(tty)

~ / .zshrc अगर zsh का उपयोग कर रहे हैं, तो बाकी ~ / .bash_profile पर जाएं


MacOS के लिए,

gpg2 को काढ़ा में gpg के साथ जोड़ा जाता है और इसलिए gpg कमांड को gpg2 की ओर इंगित किया जाता है

brew install gpg2

काढ़ा जानकारी gpg

gnupg: स्थिर 2.2.6 (बोतलबंद)

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

और पासफ़्रेज़ प्रविष्टि के लिए पिनेंट्री-मैक है

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

लाइन जोड़ें

pinentry-program / usr / लोकल / बिन / pinentry-mac

मेरे सहयोगी ने याद दिलाया, अपील करने की जरूरत है

export GPG_TTY=$(tty)

~ / .zshrc अगर zsh का उपयोग कर रहे हैं, तो बाकी ~ / .bash_profile पर जाएं


1
GOSPG संस्करण 2.2.17 के साथ macOS 10.15 (कैटालिना) जहाज तब तक इसे अलग से स्थापित करने की आवश्यकता नहीं है जब तक कि आप अपने दम पर अपडेट प्रबंधित करने की योजना नहीं बनाते हैं।
जोश हबदास

18

मैं इसका उपयोग कर रहा हूं। इसमें zsha का समर्थन है और लिनक्स के लिए विंडोज सबसिस्टम पर काम करता है:

export GPG_TTY=$(tty)

2
मैं macOS कैटालिना पर zsh का उपयोग कर रहा हूं और यह एकमात्र बदलाव था जिसे मुझे काम करने के लिए आवश्यक था। धन्यवाद।
जेपी लेव

मुझे अपने WSL वातावरण में अपनी कुंजियाँ कॉपी करने के बाद ओपी में त्रुटि प्राप्त हो रही थी, पता चलता है कि मुझे कुंजी पर पासफ़्रेज़ के लिए संकेत प्रदान करने के लिए ऐसा करने की आवश्यकता थी। धन्यवाद।
कथा

10

अपनी कुंजी की समय सीमा समाप्त होने के लिए जाँच करें। एक बार जब आप समाप्ति तिथि को ठीक कर लेंगे (जब तक आप चाहते हैं एक नई कुंजी बनाने की आवश्यकता नहीं है), gitसामान्य रूप से काम करेंगे।

एक्सपायर की गई चाबी को ठीक करने का एक तरीका:

(नोट: $कमांड लाइन प्रॉम्प्ट का प्रतिनिधित्व करता है, प्रॉम्प्ट के बाद कमांड टाइप करें। प्रत्येक कमांड के बाद एंटर दबाएं)

$ gpg2 --list-keysउचित कुंजी आईडी खोजने के लिए (के बाद पात्रों \पर pubलाइन)

$ gpg2 --edit-key <key id> - यह gpg खोलता है, जिसमें शीघ्रता से परिवर्तन होता है gpg>

gpg> expire - प्राथमिक कुंजी के लिए नई समाप्ति तिथि निर्धारित करने के लिए निर्देशों का पालन करें

अगला, अगर उपकुंजियाँ हैं जो समाप्त हो चुकी हैं ( subपंक्ति पर पता चलता है), उनकी समाप्ति तिथियां रीसेट करें, भी:

gpg> key 1- पहले उपकुंजी का चयन करता है - उपकुंजी के gpg> expireलिए नई समाप्ति तिथि निर्धारित करने के लिए निर्देशों का पालन करें

आवश्यकतानुसार प्रत्येक बाद की उपकुंजी के लिए दोहराएं।


मुझे हर बार यह समस्या हुई है कि मैंने एक gpg कुंजी चलाने की कोशिश की है जिसकी समाप्ति तिथि नहीं थी। किसी कारण के लिए git को यह पसंद नहीं है। समाप्ति की तारीख जोड़ने के लिए इस पद्धति का उपयोग करना (भविष्य में कोई फर्क नहीं पड़ता) समस्या को हल करने के लिए लगता है।
some_guy632

saveजब आप काम कर लें तो gpg प्रॉम्प्ट पर टाइप करना न भूलें !
daviewales

5

इसने ubuntu 18.04 पर मेरे लिए काम किया

अपनी gpg कुंजी जांचें

gpg -K --keyid-format LONG

यदि आपको एक खाली प्रतिक्रिया मिलती है, तो एक GPG कुंजी उत्पन्न करें

gpg --generate-key

पहले कमांड को फिर से चलाएँ, आपको एक आउटपुट मिलना चाहिए:

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]

गायन कुंजी सेट करें

git config --global user.singingkey 95A854E0593B3214

तो आप जाने के लिए अच्छे हैं! (--ग्लोबल वैकल्पिक है)

वैकल्पिक रूप से अगर आपको अपनी ssh कुंजी के साथ हस्ताक्षर करने में कोई आपत्ति नहीं है

git config commit.gpgsign false

ध्यान दें कि इस प्रश्न के अनुसार सुरक्षा की समस्या के कारण यहाँ और यहाँ इसकी अनुशंसा नहीं की गई है


"वैकल्पिक रूप से अगर आपको अपनी ssh कुंजी पर हस्ताक्षर करने में कोई आपत्ति नहीं है" तो ssh को हस्ताक्षर के साथ क्या करना है?
रिफ़्राफ़ सफ़

SSH के पास हस्ताक्षर करने के लिए कुछ भी नहीं है। जब वे वास्तव में अपने कमिट को एक git सर्वर पर धकेलते हैं, तो वे प्रमाणित करने के लिए SSP कुंजियों का उपयोग करने पर निर्भर करते हुए GPG को बंद करने का उल्लेख कर रहे हैं। आप SSH प्रमाणीकरण का उपयोग करके अहस्ताक्षरित पुश करने के लिए धक्का दे सकते हैं (और यह काफी सामान्य है)।
phouse512

4

मुझे gpg.program को निरपेक्ष पथ को gpg में ठीक करना था:

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

मैं साइबरविन के साथ विंडोज का उपयोग कर रहा हूं।


3
मेरे लिए यही समाधान था। मैं चॉकलेट का उपयोग कर gnupg स्थापित किया है।
एलेक्स एस

धन्यवाद, मेरे लिए भी काम किया। मैंने किया थाchoco install gpg4win
गोकुल नेकां

4

उपाय:

Issue: Disabled loopback pinentry mode

समस्या को हल करने के लिए, आपको लूपबैक पिनेंट्री मोड को ~ / .gnupg / gpg.conf में सक्षम करना होगा :

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

use-agent 
pinentry-mode loopback

EOF

और ~ / .gnupg / gpg-agent.conf में भी (यदि यह पहले से मौजूद नहीं है तो फ़ाइल बनाएँ):

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

allow-loopback-pinentry

EOF

फिर एजेंट को फिर से शुरू करें echo RELOADAGENT | gpg-connect-agentऔर आपको जाने के लिए अच्छा होना चाहिए!

स्रोत


1
वाह, हर संभव समाधान की कोशिश कर घंटों बिताने के बाद, इसने मेरी समस्या को ठीक कर दिया, धन्यवाद!
मैट

आपका स्वागत है। वास्तव में स्रोत के लिए धन्यवाद। मैं भी इससे चिपक गया था।
राहुल ठाकुर

3

यह त्रुटि तब भी हो सकती है जब आपकी GPG कुंजी समाप्त हो गई हो। एक नई कुंजी उत्पन्न करके इसे Git में जोड़ना चाहिए।


3

मैंने gnupg 2.x में अपग्रेड करने के बाद इस समस्या का अनुभव किया। यह देखा कि gpg2 कुंजी को अलग-अलग संदर्भित कर रहा है: मेरे पास अभी भी signingkey = ABC98F11(gpg v1 सेटिंग) था ~/.gitconfig। Gpg2 के लिए प्रमुख पहचानकर्ता अधिक लंबे हैं। उन्हें साथ देखोgpg --list-secret-keys


1

मैंने / / & के gitलिए 3 अलग-अलग कुंजियों के साथ एक कुंजी बनाई थी, जो कि भविष्य में समाप्त हो गई थी (कुछ दिनों के लिए ठीक काम करने के बाद):certifysignencrypt

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     ]

समस्या को हल करने के लिए अलग उपकुंजियों को जोड़े बिना एक नई कुंजी बनाई।


1

हो सकता है कि आपका Git config gpgsign = true सेट किया गया हो । यदि आप अपने कमेंट्स को नहीं चाहते हैं तो इसे झूठा सेट करने का प्रयास करें। अपने रिपॉजिटरी फ़ोल्डर में जाएं और फ़ाइल को बदलें

नैनो .it / config

इस से...

[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

इसके लिए...

[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

मेरे लिए इस त्रुटि के साथ होने के लिए शुरू कर दिया git tag -sडेबियन GNU / लिनक्स पर जब मैं से बदल pinentry-gnome3करने के लिए pinentry-curses(का उपयोग करते हुए update-alternatives --config pinentry) आसान दूरदराज के उपयोग के लिए। यह केवल (उदाहरण के लिए) के git tag -sसाथ हुआgpggpg --clearsign ) ही।

इस मामले में फिर से काम करने के लिए आवश्यक एकमात्र परिवर्तन export GPG_TTY=$(tty)मेरे शेल स्टार्टअप फ़ाइलों में जोड़ना था ।

हालांकि मुझे इस प्रश्न के एक अन्य उत्तर में इस फिक्स के लिए संकेतक के रूप में उल्लेखित "डिवाइस के लिए अनुपयुक्त आईओक्टल" त्रुटि संदेश नहीं मिला।

नोट: चूंकि इस त्रुटि का कारण export GPG_TTY=$(tty)इस सवाल के अन्य उत्तरों में (आमतौर पर एक तरफ संकेत के रूप में) पहले सुझाव देने वालों की तुलना में पूरी तरह से अलग था , मैंने तय किया कि इस प्रश्न को एक और उत्तर की आवश्यकता है जिसमें उल्लेख है कि export GPG_TTY=$(tty)मुख्य निर्धारण हो सकता है और कुछ मामलों में एकमात्र आवश्यक है।


धन्यवाद! update-alternatives --config pinentryमेरे लिए किया। मैं अपने डेस्कटॉप में SSH'd हूँ और pinentryकरने के लिए स्थापित किया गया था /usr/bin/pinentry-gnome3(जो चाहिए जब SSH'd में या जब एक आभासी console पर स्विच एक TTY फ़ॉलबैक है)। लेकिन यह काम नहीं कर रहा था, जाहिरा तौर पर। /usr/bin/pinentry-ttyमेरे लिए ट्रिक करने के लिए डिफॉल्ट सेट करना । मुझे अपने डेस्कटॉप पर वापस आने पर इसे वापस सेट करना पड़ सकता है, लेकिन, अब के लिए, मैं अच्छा हूं। export GPG_TTY=$(tty)पर्याप्त नहीं था। मैंने ऐसा किया, लेकिन pinentryअपनी प्रतिबद्धता पर हस्ताक्षर करने से पहले मुझे स्विच करने की आवश्यकता थी।
कार्ल विल्बर

1

मेरे लिए इसे हल करने से यह सुनिश्चित हो गया कि कुंजी का नाम मेरे git उपयोगकर्ता नाम से मेल खाता है। मुझे लगता है कि ईमेल का भी मिलान करना होगा। यह मेरे मैक पर GPG कीचेन का उपयोग करके मेरे साथ करना पड़ सकता है। निश्चित नहीं।

मुझे लगा कि मैं कुंजी को नाम दे रहा था जब मैंने इसे भरा था, लेकिन मुझे लगता है कि यह मेरा नाम (git उपयोगकर्ता नाम) पूछ रहा था।

जीपीजी कीचेन फॉर्म


अफ़सोस की बात है कि यह जवाब इतना नीचे है कि कई लोग अपने मुद्दे की तलाश में यहाँ नहीं पहुंचेंगे।
MaciekS

1

मैकोस पर मेरी यह त्रुटि थी - यह देखने के लिए कि क्या उन्होंने प्रयोग करके समाप्त कर दिया है, यह देखने के लिए मैंने सूचीकरण कुंजियों को आज़माया है gpg2 --list-keys- मैंने सत्यापित किया कि कुंजियाँ समाप्त नहीं हुई थीं और उचित कुंजी का उपयोग मेरे विन्यास में सेट किया गया थाgit config --global user.signingkey

जब मैंने उन आदेशों को चलाया था, तब मैं बिना किसी समस्या के फिर से हस्ताक्षरित कमिट करने में सक्षम था। मैंने अपनी कॉन्फ़िग फाइल या कुंजियाँ नहीं बदलीं - मैंने एक नया टर्मिनल उदाहरण भी नहीं बनाया। ऐसा लग रहा था जैसे gpg2 मेरे मैक पर किसी अजीब स्थिति में था।


0

मैं brew install gpg2तो स्थापित कर समस्या को हल कियाgit config --global gpg.program gpg2


0

जब आप अपने git config में कुंजी की समय सीमा समाप्त कर चुके हों, तो समान त्रुटि भी हो सकती है।

की सामग्री की जांच करके cat .git/configके लिए और देखो signingkeyमूल्य और देखें कि क्या यह समाप्त हो गया है। यदि हां इसे नए के साथ अपडेट करें।


0

यदि आप अपनी GPG कुंजी को संग्रहीत करने के लिए स्मार्ट कार्ड / yubikey का उपयोग कर रहे हैं और आपने सेट किया हैsignkey कार्ड में संग्रहीत कुंजी द्वारा git हैं (और ऊपर दिए गए सभी उत्तर आपकी समस्या को हल नहीं करते हैं), तो कार्ड का आपका ब्लॉक किया गया पिन हो सकता है इस मुद्दे का मूल कारण।

अवरुद्ध पिन की जांच करने के लिए:

gpg --card-status

यदि काउंटर के समान है

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

फिर आपका पिन ब्लॉक हो जाता है (3 असफल प्रयासों के बाद)।

पिन अनब्लॉक करने के लिए:

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

मेरे लिए एक साधारण brew unintstall gnupg && brew cask reinstall gpg-suite समस्या हल करती है।

यह (मेरे मामले में) मैन्युअल रूप से होमब्रे-इस्लेटेड gpg और पूरे GPG सुइट को पुनर्स्थापित करता है।


0

मेरे मामले में, मैंने यहाँ कमिशन साइनिंग डॉक्यूमेंट में दिए गए gpg कॉन्फिगरेशन और स्मिग्निस कॉन्फ़िगरेशन को मिलाया था: https://help.github.com/en/github/authenticating-to-github/telling-git-about-your-signing- चाभी

घंटों तक इस पर काम करने के बाद, मैंने इसे सही करने का सबसे अच्छा तरीका पाया कि यह gpg से जुड़ी हर चीज से परेशान था, और gpg को फिर से जोड़ना।

जैसा कि @Jason थ्रैशर के उत्तर में बताया गया है, gpg का उपयोग कर संबंधित सभी git config देखें:

git config -l | grep gpg

फिर स्थानीय रूप से उपयोग करने के साथ-साथ सब कुछ golablly परेशान करें:

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

फिर ऊपर दिए गए आधिकारिक दस्तावेज के बाद पुन: कॉन्फ़िगर करें। उम्मीद है की यह मदद करेगा।


इसके अलावा, मैं gpg2 का उपयोग कर रहा हूं
शुभम गुप्ता

0

यदि आपने पहले अपनी पेंटेंट्री और gpg सेटअप किया था, और इसने कहीं भी काम करना बंद कर दिया:

जांचें कि क्या आपका gpg काम करता है:

echo "test" | gpg --clearsign

यदि यह कहता है gpg: signing failed: No pinentry, तो बस gpg डेमॉन क्लाइंट को पुनरारंभ करें, जो समय-समय पर अटक जाता है:

gpgconf --kill gpg-agent

अब यह काम करना चाहिए:

echo "test" | gpg --clearsign

0

मेरे मामले में, यह त्रुटि तब हुई जब git commitएक छोटी tmuxखिड़की पर चल रहा था जो पासफ़्रेज़ प्रॉम्प्ट को फिट करने में सक्षम नहीं था।

$ 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

इससे आपको इससे छुटकारा पाने में मदद मिलेगी

git config commit.gpgsign false


1
मैं नीचे के वोट को नहीं समझता, इसने मेरे लिए एक आकर्षण की तरह प्रस्तावित मुद्दे को हल कर दिया।
शाम

2
इस आदेश से बचना चाहिए। यह केवल जीआईटी प्रतिबद्ध पर हस्ताक्षर करने की आवश्यकता को हटा देगा, उस व्यक्ति को प्रमाणित करने के मुद्दे को हल नहीं करेगा जो इसे प्रतिबद्ध बना रहा है।
काइल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.