গিট ত্রুটি - জিপিজি ডেটা সাইন করতে ব্যর্থ


149

আমি সবেমাত্র গিট ব্যবহার শুরু করেছি এবং আমি হোমব্রিউয়ের মাধ্যমে গিট এবং জিপিজি ইনস্টল করেছি। কোনও কারণে, আমি এই ত্রুটিটি পেয়েছি যখন আমি git commit এই বিষয় সম্পর্কিত অন্যান্য অনেক স্ট্যাকওভারফ্লো প্রশ্নগুলিতে নজর রেখেছি এবং সেগুলির কোনওটিই আমার পক্ষে কাজ করেনি। আমি কীভাবে এই ত্রুটিটি ঠিক করতে পারি যাতে আমি সফলভাবে আপলোড করতে পারি।

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

3
ম্যাক ব্যবহারকারীদের জন্য। আমার এই সমস্যা ছিল। এই পৃষ্ঠাগুলির পরামর্শ আমাকে উপলব্ধি করতে সহায়তা করেছিল যে আমার কাছে জিপিজি-র দুটি সংস্করণ ইনস্টল থাকতে পারে এবং আমিও করেছি। ব্রিউ থেকে একজন এবং জিপিজি স্যুট থেকে একজন। আমি জিপিজি স্যুটটি ব্যবহার করতে চেয়েছিলাম কারণ এটি সিস্টেম কীচেইনে পাসফ্রেজ ক্যাশে দেওয়ার অনুমতি দেয় allows মেশানো সংস্করণ আনইনস্টল করা আমার সমস্যার সমাধান করে। জিপিজি-এজেন্ট হত্যা সম্পর্কে @ সিডিশোবার্কারের উত্তর সহ। সুতরাং আমি ধরে নিই যে প্রতিটিটির কনফিগারেশনগুলি একে অপরের সাথে হস্তক্ষেপ করছে।
মাইকেল ওয়েলচ 16



আমি কেবল জিপিজি সাইন ইন করে একটি ইস্যুতে দৌড়েছি, সমস্যাটি ছিল আমার গিট রেপোতে স্থানীয় জিপিজি.সাইনগিংকি সেট ছিল না, তবে গ্লোবালটি ছিল। সুতরাং কেবল git config --local user.signingkeyসঠিক কীতে সেট করুন এবং এটি আবার অটোসাইন করবে। এবং সম্ভবত বিশ্বব্যাপী একটিকে আনসেট করুনgit config --global --unset user.signingkey
মারকাসজে

উত্তর:


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আপনার কমপক্ষে একটি কী জুড়ি আছে তা পরীক্ষা করতে চালান

যদি এর ফলাফলটি দেখায় যে আপনার কাছে GnuPG ব্যবহারের জন্য কোনও গোপন কী নেই, তবে আপনাকে একটি তৈরি করতে হবে:

  • চালান gpg2 --gen-key, GnuPG একটি কী জুড়ি তৈরির পদক্ষেপগুলি আপনাকে এগিয়ে যেতে করতে

যদি আপনি "ডিভাইসের পক্ষে অনুপযুক্ত আইওসিটিএল" বলে একটি ত্রুটি বার্তা পেয়ে থাকেন তবে এটি করুন:

  • চালান export GPG_TTY=$(tty)এবং / অথবা এটি আপনার ~/.bashrcবা তে যুক্ত করুন˜/.bash_profile

দ্বিতীয় কমান্ডটি চালানোর সময় আমি এই ত্রুটিটি পেয়েছি: জিপিজি: কোনও ডিফল্ট গোপন কী নয়: কোনও গোপন কী নেই জিপিজি: [স্টিডিন]: ক্লিয়ারসাইন ব্যর্থ হয়েছে: কোনও গোপন কী নয়
ইঞ্চি তে এনটাইটাইজ করুন

@ এনটাইটাইজ এটি জিপিজি ইঙ্গিত করে বলে মনে হয় না যে সাইন ইন করার জন্য আপনার কাছে কোনও কী আছে। উত্তরে আমি যুক্ত হওয়া অতিরিক্ত পদক্ষেপগুলি দেখুন; আপনি যদি gpg2 --gen-keyআগে কখনও দৌড়ে না থাকেন তবে আপনার প্রথমে এটি করা দরকার।
sideshowbarker

2
যখন আমি প্রতিধ্বনি "পরীক্ষা" | gpg2 --clearsign, এটি আমাকে দেয়: gpg-এজেন্ট [-]: কমান্ড get_passphrase ব্যর্থ হয়েছে: ডিভাইসের জন্য অনুপযুক্ত ioctl gpg: এজেন্টের সাথে সমস্যা: ডিভাইসের জন্য অনুপযুক্ত ioctl: কোনও ডিফল্ট গোপন কী নয়: অপারেশন বাতিল হয়েছে জিপিজি: [স্টিডিন]: ক্লিয়ারসাইন ব্যর্থ: অপারেশন বাতিল হয়েছে। আমি আরও অনেক সম্ভাব্য চেষ্টা করেছি, কিন্তু কোনও কাজ হয়নি। জিপিজি ছাড়াই জিআইটি ব্যবহারের উপায় আছে কি!
এনটাইটাইজ করুন

9
আপনি চেষ্টা করতে পারেন export GPG_TTY=$(tty)। যতদূর জিপিজি ছাড়াই গিট ব্যবহার করার কোনও উপায় রয়েছে, আপনি ডিফল্টরূপে এটি করতে সক্ষম হবেন বা অন্যথায় কেবল git config --global commit.gpgsign falseআপনার কমিটের জিপিজি সাইন ইন বিশ্বব্যাপী আনসেট চালিয়ে ।
sideshowbarker

10
এখানে ম্যাক ওএস এক্সে আমি ডিবাগ করতে শুরু করেছি echo "test" | gpg2 --clearsign, একটি ত্রুটি পেয়েছি এবং এটি আমাকে এই থ্রেডে নিয়ে গেছে , যা আমার সমস্যার সমাধান করেছে: আমি কেবল export GPG_TTY=$(tty)আমার ˜/.bash_profileফাইলে একটি ফাইল রেখেছিলাম এবং তারপরে পুনরায় লোড করেছিsource ˜/.bash_profile
হেরেরার

71

গিটারটি কী কী দ্বারা স্বাক্ষর করছে তা জানতে হবে।

আপনার জিপিজি, জিপিজি-এজেন্ট এবং আপনার gpg.conf ফাইল সেটআপ করার পরে ( এই গাইডটি দেখুন ) আপনাকে চালনা করতে হবে

git config --global user.signingkey EB11C755

স্পষ্টতই, আপনার নিজের দিয়ে সর্বশেষে পাবলিক কীটি প্রতিস্থাপন করুন। আপনি যদি প্রতিটি প্রতিশ্রুতি ডিফল্টরূপে স্বাক্ষর করতে চান তবে ব্যবহার করুন

git config --global commit.gpgsign true

7
আমি কেবল এটির জন্য দৌড়েছি যে অন্য কেউ আমার কাজটি করার জন্য যথেষ্ট বোকামি ছিল: নিশ্চিত হয়ে নিন যে আপনি এটি "সাইনকিকি" বানান, "সাইন ইনকি" না বানান।
জেডএনকে

1
আক্ষরিক @ZNK এর এই মন্তব্যটি আমার পক্ষে তা করেছে। আমি এটিকে "সাইনকি" এর পরিবর্তে "সাইনকি" বানান দিয়েছিলাম
জাজট

1
গৃহীত উত্তরের এটিকে প্রথম সমস্যা সমাধানের পদক্ষেপ হিসাবে উল্লেখ করা উচিত, কারণ কখনও কখনও আপনার সমস্ত কীগুলি ইতিমধ্যে স্থানে থাকে, এটি কেবল গিটটি ভুলে যায় কোনটি কী ব্যবহার করতে হবে।
f055

41

আপনার গিটটি কোনওভাবে প্রতি কমিটিকে জিপিজি সাইন করতে কনফিগার করা হয়েছে। জিপিজির সাথে সাইন ইন করার জন্য গিট ব্যবহার করে প্রতিশ্রুতিবদ্ধ বা ধাক্কা দেওয়ার প্রয়োজন হয় না। এটি সম্ভবত ত্রুটি দিচ্ছে কারণ আপনার জিপিজি সাইন ইন করার পদ্ধতিটি এখনও কনফিগার করা হয়নি।

আপনি যদি গিট করতে নতুন হন তবে প্রথমে জিপিজি সাইন ইন না করে এটি প্রথমে কাজ করার চেষ্টা করুন, তারপরে যদি আপনার সত্যিই প্রয়োজন হয় তবে পরে সাইন ইন করুন।

আপনি কীভাবে আপনার গিটটি জিপিজির সাথে কনফিগার করা হয়েছে তা যাচাই করতে পারবেন:

git config -l | grep gpg

যা শূন্য বা আরও বেশি লাইন তৈরি করতে পারে, সহ:

commit.gpgsign=true

যদি "কমিট.gpgsign" সত্য হয়, তবে আপনি জিপিজি সাইন ইন সক্ষম করেছেন। এটি দিয়ে অক্ষম করুন:

git config --global --unset commit.gpgsign

তারপরে আবার আপনার প্রতিশ্রুতি চালানোর চেষ্টা করুন। এটি এখন জিপিজি স্বাক্ষর ছাড়াই চালানো উচিত। আপনি বেসিক গিটটি কাজ করার পরে, আপনার আবার জিপিজি সাইন ইন মিশ্রণটি যুক্ত করার চেষ্টা করা উচিত।


12
অসাধারণ! git config --global --unset commit.gpgsignআমার জন্য কাজ করেছেন :)
hpaknia

কি দারুন!! এটি আমার জন্য কাজ করেছে: গিট কনফিগার
হার্ডি ম্যাথিউ

32

@ সিডিশোবার্কার, এবং @ জাভিয়ার হো দ্রষ্টব্য দেখুন, আমি নিম্নলিখিত পদক্ষেপের মাধ্যমে আমার সমস্যার সমাধান করেছি।

ধরে নিন জিপিজি 2 ব্রু দ্বারা ইনস্টল হয়েছে,

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

সেকেন্ড আরএসএ 2048/0 এ 61 সি 6 এফএসি 2017-06-29 [এসসি] [মেয়াদ শেষ: 2019-06-29]

git config --global user.signingkey 0A61C6FC

আমার সহকর্মীর দ্বারা স্মরণ করিয়ে দেওয়া, সংযোজন করা দরকার

export GPG_TTY=$(tty)

zsh ব্যবহার করে ~ / .zshrc এ যান, অন্যথায় ~ / .bash_profile এ যুক্ত করুন


ম্যাকোসের জন্য,

gpg2 ব্রিউতে gpg এর সাথে একত্রিত হয় এবং সেইজন্য gpg কমান্ডটি gpg2 এ নির্দেশিত হয়

brew install gpg2

ব্রিউ তথ্য জিপিজি

gnupg: স্থিতিশীল 2.2.6 (বোতলজাত)

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

এবং পাসফ্রেজ প্রবেশের জন্য প্যান্ট্রি-ম্যাক রয়েছে

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

লাইন যুক্ত করুন

প্যান্ট্রি-প্রোগ্রাম / ইউএসআর / স্থানীয় / বিন / প্যান্ট্রি-ম্যাক

আমার সহকর্মীর দ্বারা স্মরণ করিয়ে দেওয়া, সংযোজন করা দরকার

export GPG_TTY=$(tty)

zsh ব্যবহার করে ~ / .zshrc এ যান, অন্যথায় ~ / .bash_profile এ যুক্ত করুন


1
ম্যাকোস 10.15 (ক্যাটালিনা) GnuPG সংস্করণ ২.২.১7 সহ জাহাজগুলি সুতরাং আপনার নিজের আপডেট আপডেট করার পরিকল্পনা না করা থাকলে এটিকে আলাদাভাবে ইনস্টল করার দরকার নেই।
জোশ হাবদাস

18

আমি এটি ব্যবহার করছি। এটিতে zsha এর জন্য সমর্থন রয়েছে এবং লিনাক্সের জন্য উইন্ডোজ সাবসিস্টেমে কাজ করে:

export GPG_TTY=$(tty)

2
আমি ম্যাকস ক্যাটালিনায় zsh ব্যবহার করছি এবং এটির কাজ করার জন্য এটিই ছিল আমার কেবলমাত্র পরিবর্তন। ধন্যবাদ।
জেপি লু

আমার ডাব্লুএসএল পরিবেশে আমার কীগুলি অনুলিপি করার পরে আমি ওপি-তে ত্রুটি পেয়েছি, দেখা যাচ্ছে কীটিতে পাসফ্রেজের জন্য একটি প্রম্পট দেওয়ার জন্য আমার এটি করা দরকার। ধন্যবাদ।
নার্ভিক

10

আপনার কীটির মেয়াদ শেষ হওয়ার জন্য পরীক্ষা করুন। একবার আপনি মেয়াদ উত্তীর্ণ হওয়ার তারিখটি ঠিক করলেন (আপনি না চাইলে নতুন কী তৈরির দরকার নেই), gitস্বাভাবিক হিসাবে কাজ করবে।

মেয়াদোত্তীর্ণ কীটি ঠিক করার একটি উপায়:

(দ্রষ্টব্য: $কমান্ড লাইন প্রম্পট উপস্থাপন করে, প্রম্পটের পরে কমান্ডগুলি টাইপ করুন; প্রতিটি কমান্ডের পরে এন্টার টিপুন)

$ gpg2 --list-keysউপযুক্ত কী ID এটি (পরে অক্ষর \উপর pubলাইন)

$ gpg2 --edit-key <key id> - এটি প্রম্পটে পরিবর্তিত হয়ে জিপিজি শেলটি খুলবে gpg>

gpg> expire - প্রাথমিক কীটির জন্য নতুন মেয়াদোত্তীকরণের তারিখ নির্ধারণের জন্য নির্দেশাবলী অনুসরণ করুন

এরপরে, যদি সেখানে সাবকিগুলি শেষ হয়ে যায় ( subলাইনে প্রদর্শিত হয়), তাদের মেয়াদ শেষ হওয়ার তারিখগুলিও পুনরায় সেট করুন:

gpg> key 1- প্রথম সাবকি নির্বাচন করুন gpg> expire- সাবকির জন্য নতুন মেয়াদোত্তীকরণের তারিখ নির্ধারণের জন্য নির্দেশাবলী অনুসরণ করুন

প্রতিটি পরবর্তী সাবকি প্রয়োজন অনুসারে পুনরাবৃত্তি করুন।


প্রতিবার আমি একটি জিপিজি কী চালানোর চেষ্টা করেছি যার মেয়াদ শেষ হওয়ার তারিখ নেই this কিছু কারণে গিট পছন্দ করে না। একটি মেয়াদোত্তীকরণের তারিখ যুক্ত করতে এই পদ্ধতিটি ব্যবহার করা (ভবিষ্যতে যত দূরই আসুক না কেন) সমস্যার সমাধান হচ্ছে বলে মনে হচ্ছে।
কিছু_গুই 632

saveআপনার কাজ শেষ হয়ে গেলে জিপিজি প্রম্পটে টাইপ করতে ভুলবেন না !
ডেভিউলেস

5

এটি আমার জন্য উবুন্টু 18.04 এ কাজ করেছিল

আপনার জিপিজি কীটি পরীক্ষা করুন

gpg -K --keyid-format LONG

যদি আপনি একটি ফাঁকা প্রতিক্রিয়া পান তবে একটি জিপিজি কী তৈরি করুন

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

তাহলে আপনি যেতে ভাল! (--গ্লোবাল alচ্ছিক)

বিকল্পভাবে যদি আপনি নিজের এসএস কী দিয়ে সই করতে মন চান না

git config commit.gpgsign false

নোট করুন যে এখানে এবং এখানে এই প্রশ্ন অনুসারে কোনও সুরক্ষা সমস্যার কারণে এটি সুপারিশ করা হয়নি


"বিকল্পে যদি আপনি নিজের এসএস কী দিয়ে স্বাক্ষর করতে মন চান না" ssh এর সাথে সই করার কী আছে?
রিফ্রাফ

স্বাক্ষরিত কমিটিগুলির সাথে এসএসএইচের কিছু করার নেই। তারা জিপিজি কমিট স্বাক্ষর বন্ধ করে দেওয়ার কথা উল্লেখ করছে এবং এসএসএইচ কীগুলি ব্যবহারের উপর নির্ভর করে যখন আপনি প্রকৃতপক্ষে গিট সার্ভারে আপনার প্রতিশ্রুতিগুলি চাপান। আপনি এসএসএইচ প্রমাণীকরণ ব্যবহার করে স্বাক্ষরবিহীন কমিটগুলি ঠেকাতে (এবং এটি বেশ সাধারণ বিষয়) চাপ দিতে পারেন।
phouse512

4

আমাকে জিপিজি.প্রগ্রামটি জিপিজির নিখুঁত পথে ঠিক করতে হয়েছিল:

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-এজেন্ট.conf এও (ফাইলটি ইতিমধ্যে উপস্থিত না থাকলে তৈরি করুন):

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

allow-loopback-pinentry

EOF

তারপরে এজেন্টটি পুনরায় চালু করুন echo RELOADAGENT | gpg-connect-agentএবং আপনার যাওয়া ভাল হবে!

উৎস


1
বাহ, প্রতিটি সম্ভাব্য সমাধান চেষ্টা করে ঘন্টা ব্যয় করার পরে, এটি আমার সমস্যার সমাধান করেছে, ধন্যবাদ!
ম্যাট

আপনাকে স্বাগতম. আসলে উত্স ধন্যবাদ। আমিও এর সাথে আটকে ছিলাম।
রাহুল ঠাকুর

3

আপনার জিপিজি কীটির মেয়াদ শেষ হয়ে গেলে এই ত্রুটিটিও ঘটতে পারে। একটি নতুন কী তৈরি করা এবং এটি গিটে যুক্ত করা এর সমাধান হওয়া উচিত।


3

Gnupg 2.x এ আপগ্রেড করার পরে আমি এই সমস্যাটি অনুভব করেছি এটি দেখতে পাবে যে জিপিজি 2 কীগুলি আলাদাভাবে উল্লেখ করছে: আমার কাছে এখনও signingkey = ABC98F11(জিপিজি ভি 1 সেটিং) ছিল ~/.gitconfig। জিপিজি 2-র জন্য মূল শনাক্তকারীগুলি দীর্ঘ। তাদের সাথে সন্ধান করুন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

আপনার গিট কনফিগারেশনটি gpgsign = সত্য সেট করা হতে পারে । আপনি যদি নিজের কমিটগুলি স্বাক্ষর করতে চান না তবে এটি মিথ্যাতে সেট করার চেষ্টা করুন। আপনার সংগ্রহস্থল ফোল্ডারে যান এবং ফাইলটি পরিবর্তন করুন

ন্যানো .git / কনফিগার করুন

এটা থেকে...

[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ডেবিয়ান জিএনইউ / লিনাক্স যখন আমি থেকে সুইচ pinentry-gnome3করতে pinentry-curses(ব্যবহার update-alternatives --config pinentry) সহজ দূরবর্তী অ্যাক্সেস জন্য। এটি কেবল সাথেই ঘটেছিল, সাথে git tag -sনয়gpg (উদাহরণস্বরূপ)gpg --clearsign ) নিজেই

এক্ষেত্রে আবার কাজ করার জন্য প্রয়োজনীয় পরিবর্তনটি যুক্ত করা ছিল export GPG_TTY=$(tty) আমার শেল স্টার্টআপ ফাইলগুলিতে যুক্ত করা ছিল।

যদিও আমি এই প্রশ্নের অন্য উত্তরে এই ফিক্সটির সূচক হিসাবে উল্লিখিত "ডিভাইসের জন্য অনুপযুক্ত আইওসিটিএল" ত্রুটি বার্তাটি পাইনি।

দ্রষ্টব্য: যেহেতু এই ত্রুটিটি পাওয়ার কারণটি export GPG_TTY=$(tty)এই প্রশ্নের অন্যান্য উত্তরে যারা আগে (সাধারণত সাইড ইঙ্গিত হিসাবে) পরামর্শ দিয়েছিলেন তার চেয়ে একেবারে আলাদা ছিল , তাই আমি সিদ্ধান্ত নিয়েছিলাম যে এই প্রশ্নের আরও একটি উত্তর দরকার যা উল্লেখ export GPG_TTY=$(tty)করতে পারে যে এটি মূল সমাধান হতে পারে এবং কিছু ক্ষেত্রে প্রয়োজন একমাত্র জিনিস।


ধন্যবাদ! update-alternatives --config pinentryএটা আমার জন্য। আমি আমার ডেস্কটপে এসএসএইচড আছি এবং pinentryসেট হয়ে গিয়েছিলাম /usr/bin/pinentry-gnome3( যখন এসএসএইচ'র সাথে থাকা বা ভার্চুয়াল কনসোলটিতে স্যুইচ করা হয়েছিল তখন টিটিওয়াই ফ্যালব্যাক হওয়া উচিত )। তবে এটি কার্যকর ছিল না, দৃশ্যত। /usr/bin/pinentry-ttyআমার জন্য কৌশলটি ডিফল্ট সেট করা । আমি যখন আমার ডেস্কটপে ফিরে আসি তখন আমাকে এটিকে আবার সেট করতে হতে পারে, তবে, আপাতত আমি ভাল আছি। export GPG_TTY=$(tty)যথেষ্ট ছিল না। আমি এটি করেছি তবে pinentryআমার প্রতিশ্রুতিতে সাইন করতে সক্ষম হবার আগে স্যুইচ করা দরকার ।
কার্ল উইলবার

1

আমার জন্য এটি কী সমাধান করেছে তা নিশ্চিত করছিল কীটির নামটি আমার গিট ব্যবহারকারীর নামের সাথে মেলে। আমি ধরে নিচ্ছি ইমেলগুলিও খুব মেলাতে হবে। এটি আমার ম্যাকের জিপিজি কীচেন ব্যবহার করে আমার সাথে করতে পারে। নিশ্চিত না.

আমি ভেবেছিলাম আমি এটি পূরণ করার সময় কীটি নামকরণ করেছি, তবে আমার ধারণা এটি আমার নাম (গিট ব্যবহারকারীর নাম) চেয়েছিল।

জিপিজি কীচেন ফর্ম


দুঃখের বিষয় এই উত্তরটি এত পিছনে রয়েছে যে অনেকে এখানে তাদের সমস্যা খুঁজছেন না।
ম্যাকিকস

1

আমার ম্যাকোজে এই ত্রুটি ছিল - চেষ্টা করে সমস্যা সমাধানের জন্য আমি কীগুলি ব্যবহার করে মেয়াদ শেষ হয়ে গেছে কিনা তা দেখার জন্য তালিকাটি চেষ্টা করার চেষ্টা করেছি gpg2 --list-keys- আমি যাচাই করেছিলাম যে কীগুলি শেষ হয়ে যায় নি এবং সঠিক কীটি ব্যবহার করে আমার কনফিগারেশনে সেট করা হয়েছিল git config --global user.signingkey

আমি এই আদেশগুলি চালানোর পরে আমি হঠাৎ কোনও সমস্যা ছাড়াই আবার স্বাক্ষরিত কমিটগুলি করতে সক্ষম হয়েছি। আমি আমার কনফিগার ফাইল বা কীগুলি পরিবর্তন করি নি - আমি একটি নতুন টার্মিনাল উদাহরণও তৈরি করি নি। দেখে মনে হয়েছিল জিপিজি 2 আমার ম্যাকের একরকম অদ্ভুত অবস্থায় ছিল।


0

ইনস্টল করার brew install gpg2পরে সমস্যাটি সমাধান করেছিgit config --global gpg.program gpg2


0

আপনি যখন আপনার গিট কনফিগারেশনে কী শেষ হয়ে গেছেন তখন একই ত্রুটিও ঘটতে পারে।

দয়া করে এর সামগ্রীটি পরীক্ষা করুন cat .git/configএবং signingkeyমানটি দেখুন এবং এটির মেয়াদ শেষ হয়েছে কিনা তা দেখুন check যদি হ্যাঁ এটি নতুন দিয়ে আপডেট করুন।


0

আপনি যদি নিজের জিপিজি কী সঞ্চয় করতে স্মার্ট কার্ড / ইউবিকি ব্যবহার করছেন এবং আপনি এটি সেট করেনsignkey কার্ডে সঞ্চিত কী দ্বারা গিট কনফিগারেশন (এবং উপরের সমস্ত উত্তরগুলি আপনার সমস্যার সমাধান করবে না বলে মনে হয়) তবে আপনার কার্ডের অবরুদ্ধ পিনটি হতে পারে এই সমস্যাটির মূল কারণ।

অবরুদ্ধ পিনটি পরীক্ষা করতে:

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 সমস্যা সমাধান করে।

এটি (আমার ক্ষেত্রে) ম্যানুয়ালি হোমব্রিউ-আইটলড জিপিজি আনইনস্টল করে এবং পুরো জিপিজি স্যুটটি পুনরায় ইনস্টল করে।


0

আমার ক্ষেত্রে, আমি এখানে জিপিজি কনফিগারেশন এবং স্মিমেসাইন কনফিগারেশনটি কমিট স্বাক্ষরকারী ডকুমেন্টেশনে দেওয়া হয়েছিল: https://help.github.com/en/github/authenticating-to-github/telling-git-about-your-signing- চাবি

ঘন্টাখানেক কাজ করার পরে, আমি এটি সংশোধন করার সর্বোত্তম উপায়টি খুঁজে পেয়েছি জিপিজি সম্পর্কিত সমস্ত কিছু আনসেট করা এবং জিপিজি পুনরায় কনফিগার করা।

@ জেসন থ্রেশরের উত্তরে উল্লিখিত হিসাবে, জিপিজি সম্পর্কিত সমস্ত গিট কনফিগারেশন ব্যবহার করে এটি আবিষ্কার করুন:

git config -l | grep gpg

তারপরে স্থানীয়ভাবে ব্যবহারের পাশাপাশি সমস্ত গ্লাবলি আনসেট করুন:

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

তারপরে উপরে প্রদত্ত অফিসিয়াল ডকুমেন্টেশন অনুসরণ করে পুনরায় কনফিগার করুন। আশাকরি এটা সাহায্য করবে.


এছাড়াও, আমি জিপিজি
শুভম গুপ্ত

0

আপনি যদি আগে নিজের পেন্সেন্ট্রি এবং জিপিজি সেটআপ রেখেছিলেন এবং এটি কোথাও কাজ করা বন্ধ করে দিয়েছে:

আপনার জিপিজি কাজ করে কিনা তা পরীক্ষা করুন:

echo "test" | gpg --clearsign

যদি এটি বলে gpg: signing failed: No pinentry, কেবল জিপিজি ডেমন ক্লায়েন্টটি পুনরায় চালু করুন, যা সময়ে সময়ে আটকে যায়:

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
আমি ডাউন ভোট বুঝতে পারছি না, এটি আমার জন্য মনোমুগ্ধের মতো প্রস্তাবিত বিষয়টি সমাধান করেছে solved
জেএমএস

2
এই আদেশটি এড়ানো উচিত। এটি কেবল গিট কমিটে স্বাক্ষর করার প্রয়োজনীয়তা সরিয়ে ফেলবে, প্রতিশ্রুতিবদ্ধ ব্যক্তির অনুমোদনের বিষয়টি সমাধান করবে না।
কাইল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.