জিপিজি ডেটা মারাত্মকভাবে সাইন করতে ব্যর্থ হয়েছে: কমিট অবজেক্ট লিখতে ব্যর্থ হয়েছে [গিট ২.১০.০]


319

গিট ২.১০ রিলিজ নোটের বেশ কয়েকটি বৈশিষ্ট্য নিয়ে আমি কয়েকটি নিবন্ধ অনুসরণ করেছি । যা দিয়ে গিটটি ২.১০.০ এ উন্নীত করা হয়েছে এবং বিশ্বব্যাপী পরিবর্তনের ফলে নিম্নরূপ হয়েছে -.gitconfig

[filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = xyz
    email = abc.def@gmail.com
    signingkey = AAAAAAA
[core]
    excludesfile = /Users/xyz/.gitignore_global
    editor = 'subl' --wait
[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path = 
[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true
[alias]
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
[color "diff"]
    old = red strike
    new = green italic

তবে এখন আমি আমার কমিটগুলি ব্যবহার করে স্বাক্ষর করার চেষ্টা করছি

git commit -a -S -m "message"

আমি নিম্নলিখিত ত্রুটিটি দেখতে পাচ্ছি -

এর গোপন কীটি আনলক করতে আপনার একটি পাসফ্রেজ দরকার

ব্যবহারকারী: "এক্সওয়াইজেড (ডিজিটালি স্বাক্ষরিত)"

2048-বিট আরএসএ কী, আইডি এএএএএএএএএ তৈরি করা হয়েছে 2016-07-01

ত্রুটি: জিপিজি ডেটা মারাত্মকভাবে সাইন করতে ব্যর্থ: কমিট অবজেক্ট লিখতে ব্যর্থ

দ্রষ্টব্য - আমি এখনও ব্যবহার করে পরিবর্তন করতে পারিgit commit -a -m "message"

একই কাটিয়ে ওঠার উপায় আছে কি? অথবা gpgগিটের আপগ্রেডেশনটি পেতে কনফিগগুলিতে কোনও পরিবর্তন প্রয়োজন ?


আপডেট 1

এছাড়াও আরও উপযোগিতা সন্ধান করে, জিপিজি কী দিয়ে গিটে "অটোসাইন" করার কোন উপায় আছে? । আমি ইতিমধ্যে ব্যবহার করে কীটি কনফিগার করেছি

git config --global user.signingkey ED5CDE14(with my key) 
git config --global commit.gpgsign true

এবং সম্ভবত স্পষ্টতই ত্রুটি একইভাবে পাচ্ছে।


3
আমি একই সমস্যার মুখোমুখি। আমি উইন্ডোজটিতে গিট ২.৮ (গিট-স্কিম) আনইনস্টল করেছি। এবং ইনস্টল 2.10। এখন আমি gpg failed to sign the dataপ্রতিটি সময় ব্যবহার করি -S। ২.৮-এ, আমি কোনও সমস্যা ছাড়াই কোনও প্রতিশ্রুতিতে সাইন করতে পারি। আমি জানি না কি হয়।
আলোকসজ্জা

5
যোগ করার ফলে user.signingkeyআমার সমস্যাটি স্থির হয়েছে, আশ্চর্যের বিষয় যথেষ্ট।
জাভেয়ের হো

1
@ নালপয়েন্টার আমি সেখান থেকে আমার উত্তরটি মুছে ফেলেছি, কারণ গভীর অনুসন্ধান করার পরে আমি বুঝতে পারি যে এটি একটি নকল!
শায়ান আমানী

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

1
আমার জন্য user.name
ফিক্সটি

উত্তর:


460

আমি এই সমস্যাটি ওএসএক্সের সাথে ছড়িয়েছি।

আসল উত্তর:

দেখে মনে হচ্ছে কোনও জিপিজি আপডেট (ব্রি-এর) এর স্থানে পরিবর্তিত gpgহয়েছে gpg1, আপনি বাইনারিটি পরিবর্তন করতে পারেন যেখানে গিট জিপিজি দেখায়:

git config --global gpg.program gpg1

আপনি gpg1 না থাকে তাহলে: brew install gpg1

আপডেট উত্তর:

দেখে মনে হচ্ছে জিপিজি 1 হ্রাস করা হচ্ছে / "আস্তে আস্তে ন্যাজড ইউজ অফ" , সুতরাং আপনার সম্ভবত সম্ভবত জিপিজি 2 এ আপডেট হওয়া উচিত, দুর্ভাগ্যক্রমে এতে আরও কয়েকটি ধাপ / কিছুটা সময় জড়িত:

brew upgrade gnupg  # This has a make step which takes a while
brew link --overwrite gnupg
brew install pinentry-mac
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent

প্রথম অংশটি জিপিজি 2 ইনস্টল করে এবং পরেরটি এটির জন্য প্রয়োজনীয় হ্যাক । সমস্যার সমাধানের জন্য, এই উত্তরটি দেখুন (যদিও এটি লিনাক্স না কাটা সম্পর্কে) তবে এটি একটি ভাল পরীক্ষার পরামর্শ দেয়:

echo "test" | gpg --clearsign  # on linux it's gpg2 but brew stays as gpg

যদি এই পরীক্ষাটি সফল হয় (কোনও ত্রুটি / আউটপুটে পিজিপি স্বাক্ষর অন্তর্ভুক্ত নয়), আপনি সফলভাবে সর্বশেষতম জিপিজি সংস্করণে আপডেট করেছেন।

আপনি এখন আবার গিট সাইন ব্যবহার করতে সক্ষম হবেন!
এটি আপনার কাছে রাখা দরকার:

git config --global gpg.program gpg  # perhaps you had this already? On linux maybe gpg2
git config --global commit.gpgsign true  # if you want to sign every commit

দ্রষ্টব্য: আপনি একটি স্বাক্ষরিত প্রতিশ্রুতি চালানোর পরে, আপনি এটি এর সাথে স্বাক্ষরিত যাচাই করতে পারবেন:

git log --show-signature -1

যা শেষ প্রতিশ্রুতির জন্য জিপিজি তথ্য অন্তর্ভুক্ত করবে।


7
Gpg.program / usr / local / bin / gpg ("" 1 "নয়) এ সেট করা আমার জন্য এটি স্থির করে।
ইসকার

5
এটা একটি আপডেট বলে মনে হয় gnupg2সঙ্গে brewsymlinks সঙ্গে তছনছ এইভাবে gpgসরানো হয়েছে আমি ব্যবহার ফিক্স লিঙ্ক ছিল, brew link --overwrite gnupg2
ব্রাইস

8
এইচএম ... কাজ করে না। এক্সকোড সাইন ইন করার পরেও আমার ত্রুটি দেয়।
অ্যালবার্ট টি। ওয়াং

1
@ DRBeco যে আসল অবস্থান / আচরণ নয়? আমার এখনও অক্সে একই সমস্যা রয়েছে (আমি মনে করি আমি সম্প্রতি আমার মদ তৈরির বিষয়টি মোটামুটি আপডেট করেছি), gpg1এটি এখনও এক্সপোর্টযোগ্য এক্সিকিউটেবল।
অ্যান্ডি হেডেন

29
killall gpg-agent && gpg-agent --daemon --use-standard-socket --pinentry-program /usr/local/bin/pinentryঅবশেষে এটি আমার জন্য স্থির করে
ড্যান বেচার্ড

317

Gnupg2 এবং gpg-এজেন্ট 2.x ব্যবহার করা হয়, পরিবেশ পরিবর্তনশীল সেট করতে ভুলবেন না GPG_TTY

export GPG_TTY=$(tty)

সাধারণ সমস্যাগুলি সম্পর্কে জিপিজির ডকুমেন্টেশন দেখুন ।


17
যদি মাছ ব্যবহার করা set -x GPG_TTY (tty)হয় তবে আপনার প্রোফাইলে রাখুন।
fasfsfgs

@ স্টুয়ার্টকার্ডল chown আদেশের মূল বিষয় কি? সাধারণত আপনি যখন লগ ইন বা সিডো-টিটি তৈরি করেন তখন এটি একটি সিস্টেম প্রক্রিয়া দ্বারা ইতিমধ্যে আপনাকে অর্পণ করা হবে। যদি এটি অন্য কারও মালিকানাধীন থাকে এবং আপনি রুট না হন তবে এটি ব্যর্থ হবে। গ্রুপটি যদি অন্য কিছু হয় তবে সম্ভবত এটি কোনও ব্যাপার নয় এবং ব্যবহারকারীরা সাধারণত গ্রুপ টিটিতে থাকবেন না।
পুলি

@ পুলি - আপনি যদি রিমোট সার্ভারে suযান তবে এটি গুরুত্বপূর্ণroot
স্টুয়ার্ট কার্ডাল

6
আমি ভেরিয়েবলটি যুক্ত করেছি ~/.zshrcএবং আমি আবারও কমিট করতে পারি, এখন এটি টার্মিনালের সাথে সঠিকভাবে সংযুক্ত হয়েছে। সব আপনার সাহায্যের জন্য ধন্যবাদ!
অ্যালেক্স গুরোলা

এটি গিটহাবের নির্দেশিকায়ও রয়েছে: হেল্পথিতথথ.ইথথ.ব.আর্টিক্যালস
সেলিং

198

যদি সবকিছু ব্যর্থ GIT_TRACE=1হয় তবে চেষ্টা করুন এবং গিটটি আসলে কী করছে তা দেখুন to

$ GIT_TRACE=1 git commit -m "Add page that always requires a logged-in user"
20:52:58.902766 git.c:328               trace: built-in: git 'commit' '-vvv' '-m' 'Add page that always requires a logged-in user'
20:52:58.918467 run-command.c:626       trace: run_command: 'gpg' '--status-fd=2' '-bsau' '23810377252EF4C2'
error: gpg failed to sign the data
fatal: failed to write commit object

এখন ব্যর্থ কমান্ডটি ম্যানুয়ালি চালান:

$ gpg -bsau 23810377252EF4C2
gpg: skipped "23810377252EF4C2": Unusable secret key
gpg: signing failed: Unusable secret key

দেখা যাচ্ছে, আমার চাবিটি মেয়াদোত্তীর্ণ gitহয়েছিল , দোষ দেওয়ার মতো ছিল না।


34
ডিবাগিংয়ের জন্য দুর্দান্ত টিপ। +1
ভোনসি

4
এটি আসলে আমাকে আমার নিজের সমস্যার সমাধান করতে সহায়তা করেছে এবং এটি এই স্থিতি বার্তার সাথে প্রতিটি ধরণের সমস্যার সমাধান। +1
xHocquet

ডিবাগিং হেঁটে যাওয়ার জন্য ধন্যবাদ। আমার চাবিও শেষ হয়ে গেল।
21-18 এ স্নাগল করুন

2
ধন্যবাদ! এটি আমাকে আমার সমস্যার দিকে নিয়ে যায়। আশ্চর্যের বিষয় হল আমার স্থানীয় এক প্রকল্পে .git/configএকটি nameনির্দিষ্ট ছিল যা আমার স্বাক্ষরকারী ইমেলের সাথে মেলে না। এটি প্রত্যাখ্যান করার জন্য এটি যথেষ্ট ছিল।
ক্রস

1
ভাল, gpg -bsau <key>আমার মেশিনে এক্সিকিউট করা কিছু চালায় না। এই ধারণাটি কার্যকর করতে খুব বেশি সময় নিবে? বা এর অর্থ কীটি ব্যবহার করা ভাল? @ ভনসি কোন অন্তর্দৃষ্টি?
নামান

82

আমি এই সংক্ষিপ্ত এবং সহজ রেসিপি মাধ্যমে এটি সম্পন্ন করেছি :

ম্যাকোজে স্বতঃ-স্বাক্ষর করে (বিশ্বব্যাপী এবং বিভিন্ন আইডিই সহ):

আপনার পান signingkeyমধ্যে এই ভাবে

brew install gnupg gnupg2 pinentry-mac
git config --global user.signingkey <YOUR_SIGNING_KEY>
git config --global commit.gpgsign true
git config --global gpg.program gpg

নিম্নলিখিত gpg.confফাইলগুলিতে রাখুন ( nano ~/.gnupg/gpg.confকমান্ড সহ ফাইল সম্পাদনা করুন ):

no-tty

নিম্নলিখিত gpg-agent.confফাইলগুলিতে রাখুন ( nano ~/.gnupg/gpg-agent.confকমান্ড সহ ফাইল সম্পাদনা করুন ):

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

আপডেট :

মন্তব্য অনুযায়ী killall gpg-agentকনফিগারেশন ফাইল সম্পাদনা করার পরে আপনার কমান্ড চালানো দরকার gpg.conf। স্ব-ব্যাখ্যামূলক কমান্ড যেমন বলেছে, এই আদেশটি জিপিজি (জ্ঞান প্রাইভেসি গার্ড) এজেন্টকে সমাপ্ত করবে।


2
এই আদেশগুলি কী করছে তাও আপনি ব্যাখ্যা করতে পারেন? এটি বুঝতে সাহায্য করবে।
এড্রয়েড

7
আমি killall gpg-agentকনফিগার ফাইল সেট করার পরে একটি চালাতে হয়েছিল , তারপর এটি কাজ করে!
পাস্কাল লুডভিগ

1
এটি আমার জন্য ম্যাকওস মোজভেভ 10.14 এও কাজ করেছে।
RynoRn

আমরা কীভাবে জানি যে আমরা পিছনে থাকা লোকদের উপর বিশ্বাস রাখতে পারি pinentry-mac? আমি বলছি না আমরা পারব না, তবে জিপিজিটুলস অর্গ খুব ছোট একটি দল ব্যাকআপ করছে এবং রেপোতে কেবল 5 জন অবদানকারী রয়েছে brew install gnupgযা ব্যবহার করে gnupg.org এর কাজ উপকার করে
sunknudsen

1
এটি ওএসএক্স 10.15.3 এ কাজ করে। ধন্যবাদ।
রফিক ফরহাদ

59

gpg-agentপুরানো ডেটা আটকে থাকতে পারে হত্যার প্রক্রিয়াটিকে সহায়তা করতে পারে। সুতরাং নতুন gpg-agentশুরু পাসওয়ার্ড চাইবে।


2
এটা আমার জন্য এটি।
danyim

12
gpg-agent --daemonএটি শুরু করতে ব্যবহার করুন
FooBar

1
আমাকে জিপিজি-এজেন্টও পুনরায় চালু করতে হয়েছিল
GnrlBzik

8
ম্যাকোএসে প্রক্রিয়াটি killall gpg-agent
হ্রাস

1
উবুন্টুতেgpgconf --kill gpg-agent
অ্যাডাম

37

স্বাক্ষরিত কমিট https://help.github.com/en/articles/telling-git-about-yout-signing-key সেট আপ করতে নীচের url অনুসরণ করুন

যদি এখনও জিপিজি পেয়ে ডেটা মারাত্মকভাবে সাইন করতে ব্যর্থ হয়: কমিট অবজেক্ট লিখতে ব্যর্থ

এটি গিটের সাথে ইস্যু নয়, এটি জিপিজির সাথে নীচের পদক্ষেপগুলি অনুসরণ করুন

1।gpg --version

  1. echo "test" | gpg --clearsign

যদি এটি প্রদর্শিত হয়:

gpg: signing failed: Inappropriate ioctl for device
gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device
  1. তারপরে ব্যবহার করুন export GPG_TTY=$(tty)

4. এরপরে আবার চেষ্টা করুন echo "test" | gpg --clearsign যাতে পিজিপি স্বাক্ষর পেয়েছে।

  1. git config -l | grep gpg

gpg.program = gpg কম.g.gpgsign = সত্য

6.apply git commit -S -m "commitMsz"


1
এই আমার জন্য সমাধান ছিল! অনেক ধন্যবাদ!
upInCloud

এটি যদি সমস্যা হয় তবে কীভাবে নির্ধারণ করা যায় তার দুর্দান্ত ওয়াক-থ্রো।
ফিলিপ সিগনোরেট

এটা আমার জন্য এটি কি। অনেক ধন্যবাদ!
অ্যালান গুওয়াতুডে

export GPG_TTY=$(tty)কৌশল ছিল। এটি আমার .zshrcফাইলে যুক্ত হয়েছে
শ্যান স্টিলওয়েল

21

ম্যাকওএস মেশিনে যে কেউ এই সমস্যাটির মুখোমুখি হচ্ছে , তার চেষ্টা করুন:

  1. brew uninstall gpg
  2. brew install gpg2
  3. brew install pinentry-mac (প্রয়োজন হলে)
  4. gpg --full-generate-key একটি অ্যালগরিদম ব্যবহার করে একটি কী তৈরি করুন।
  5. এক্সিকিউট করে উত্পন্ন কী পান: gpg --list-keys
  6. কীটি এখানে সেট করুন git config --global user.signingkey <Key from your list>
  7. git config --global gpg.program /usr/local/bin/gpg
  8. git config --global commit.gpgsign true
  9. এরপরে আপনি যদি নিজের কীটি গিটহাবে রফতানি করতে চান: gpg --armor --export <key> এবং জিপিজি কীতে এই কীটি গিটহাবের সাথে যুক্ত করুন: https://github.com/settings/keys (START এবং শেষ লাইনের সাথে অন্তর্ভুক্ত)

যদি সমস্যাটি এখনও বিদ্যমান থাকে:

test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile

echo 'export GPG_TTY=$(tty)' >> ~/.profile

যদি সমস্যাটি এখনও বিদ্যমান থাকে:

Https://gpgtools.org ইনস্টল করুন এবং মেনু বার থেকে সাইন টিপে আপনি যে কীটি ব্যবহার করেছেন তাতে স্বাক্ষর করুন : কী -> সাইন

যদি সমস্যাটি এখনও বিদ্যমান থাকে:

যান: আপনার গ্লোবাল .gitconfigফাইল যা আমার ক্ষেত্রে এ আছে: /Users/gent/.gitconfig এবং সংশোধন .gitconfig ফাইল (অনুগ্রহ করে নিশ্চিত ইমেল করতে এবং নাম এক যে আপনি কী জেনারেট করার সময় তৈরি করেছেন সঙ্গে একই হয়) :

[user]
	email = gent@youremail.com
	name = Gent
	signingkey = <YOURKEY>
[gpg]
	program = /usr/local/bin/gpg
[commit]
	gpsign = true
	gpgsign = true
[filter "lfs"]
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f
	smudge = git-lfs smudge -- %f
[credential]
	helper = osxkeychain


2
.Gitconfig এ 'gpsign = true' যুক্ত করা আমার জন্য এটি ঠিক করে দিয়েছে
পিয়েরে

18

আমার দুটি সেন্ট এখানে:

আপনি যখন জিপিজি-এজেন্টে একটি কী তৈরি করেন এবং যুক্ত করেন তখন আপনি যাকে বলে কিছু সংজ্ঞায়িত করেন passphrase। এখন যেহেতু passphraseএক পর্যায়ে মেয়াদ শেষ হয়ে গেছে, এবং gpgআপনার কীটি আনলক করার জন্য আপনাকে এটি পুনরায় প্রবেশ করা দরকার যাতে আপনি আবার সাইন করতে শুরু করতে পারেন।

আপনার যদি অন্য কোন প্রোগ্রাম ব্যবহার করেন, তখন যে সঙ্গে ইন্টারফেস gpg, gpg'আপনাকে প্রম্পট গুলি আপনার পাসফ্রেজ প্রবেশ করতে দেয় না (মূলত প্রদর্শিত gpg-agentযখন daemonized সম্ভবত আপনি ইনপুট ডায়ালগ দেখাতে পারছি নাstdin )।

সমাধানগুলির মধ্যে একটি হ'ল gpg --sign a_file.txtপাসওয়ার্ড প্রবেশ করানো হবে যা আপনি নিজের কী তৈরি করার সময় প্রবেশ করেছিলেন এবং তারপরে সবকিছু ঠিকঠাক করা উচিত (gpg-agent স্বয়ংক্রিয়ভাবে স্বাক্ষর করা উচিত)

আপনার পাসফ্রেজের জন্য কীভাবে দীর্ঘ সময়সীমা সেট করবেন সে সম্পর্কে এই উত্তরটি দেখুন যাতে আপনাকে সর্বদা এটি করতে না হয়।

অথবা আপনি পাসফ্রেজ দিয়ে সম্পূর্ণ মুছে ফেলতে পারেন ssh-keygen -p

সম্পাদনা করুন: man gpg-agentউপরোক্ত স্বয়ংক্রিয়ভাবে কীভাবে ঘটে এবং লাইনগুলি যুক্ত করতে পারে সে সম্পর্কে কিছু জিনিস পড়তে একটি করুন:

GPG_TTY=$(tty)
export GPG_TTY

আপনার .bashrc এ যদি আপনি ব্যাশ ব্যবহার করছেন (এটি সঠিক উত্তর তবে আমি আমার চিন্তাভাবনার ট্রেনটিকেও উপরে রাখছি)


ধন্যবাদ @ জর্জ-ডারামোসকাস, এটি আমার সমস্যা ছিল।
নিক বার্কার

10

আপডেট অক্টোবর, ২০১ Update: ইস্যু 871 এর মধ্যে "সাইন ইন গিট 2.9.3 এ কাজ করা বন্ধ করে দিয়েছে" উল্লেখ করেছে

উইন্ডোজ 2.10.1 এর জন্য গিট দুটি দিন আগে প্রকাশিত হয়েছিল (4 র্থ অক্টোবর, 2016) কমিটস এবং ট্যাগে ইন্টারেক্টিভ জিপিজি স্বাক্ষর করেছে।

গিটের সাম্প্রতিক জিপিজি-সাইন পরিবর্তন (যা লিনাক্সে কোনও সমস্যা প্রবর্তন করে না) উইন্ডোজে, নন-এমএসওয়াইএস 2-গিট এমএসওয়াইএস 2-জিপিজি-র সাথে ইন্টারেক্ট করে।


আসল উত্তর:

" 7.4 গিট সরঞ্জাম - আপনার কাজের স্বাক্ষর " পড়া , আমি ধরে নিলাম আপনার কাছে "user.signingkey কনফিগারেশন সেট আছে।

জিপিজির চারপাশে সর্বশেষ বড় রিফ্যাক্টরিং (গিট ২.১০ এর আগে) কমিট 2f47eae2a ছিল , এখানে এই ত্রুটি বার্তাটি সরানো হয়েছিলgpg-interface.c

এই ফাইলটিতে একটি লগ কমিট AF2b21e (গিট 2.10) এর সাম্প্রতিক পরিবর্তনটি প্রকাশ করে

gpg2 ইতিমধ্যে ডিফল্ট হিসাবে দীর্ঘ ফর্ম্যাটটি ব্যবহার করেছে, তবে বেশিরভাগ বিতরণ এখনও সামঞ্জস্যতার কারণে "gpg" পুরানো 1.x সংস্করণ বলে মনে হচ্ছে। এবং জিপিজির পুরানো সংস্করণগুলি কেবল 32-বিট সংক্ষিপ্ত আইডি দেখায়, যা বেশ সুরক্ষিত।

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

সুতরাং কীভাবে আপনি আপনার user.signingkeyকনফিগারেশনটি নির্দিষ্ট করেছেন এবং জিপিজি আপনি যে সংস্করণটি ব্যবহার করছেন তা (জিপিজি 1 বা জিপিজি 2) পরীক্ষা করে দেখুন, ত্রুটি বার্তায় সেগুলির কোনও প্রভাব আছে কিনা তা দেখতে।

এখানে প্রতিশ্রুতিবদ্ধ 0581b54 রয়েছে যা gpg failed to sign the dataত্রুটি বার্তার শর্ত পরিবর্তন করে ( 0d2b664 প্রতিশ্রুতি দেওয়ার পরিপূরক ):

আমরা বর্তমানে স্ট্যাডার থেকে মোটেও পড়ি না। যাইহোক, আমরা, ভবিষ্যতে প্যাচ মধ্যে করতে চাইবেন তাই এই এছাড়াও দেয়ঃ সেখানে (এবং যে ক্ষেত্রে জন্য gpg মধ্যে আছে ইনপুট সব পড়া, যদিও আবার সামনে লেখ, এটি অসম্ভাব্য যে একটি কী ইউআইডি একটি নল বাফার ভরাট করে)।

কমিটমেন্ট 4322353 দেখায় জিপিজি এখন একটি অস্থায়ী ফাইল ব্যবহার করে, তাই এর আশেপাশে সঠিক সমস্যা হতে পারে।

আসুন একটি টেম্পাইল ফাইলটি ব্যবহার করে রূপান্তর করুন, যা আমাদের জন্য হার্ড কেসগুলি পরিচালনা করে এবং নিখোঁজ ক্লিনআপ কল যুক্ত করে।


আমি আমার user.signingkeyকনফিগার সেট আছে। এছাড়াও ব্যবহার gpg (GnuPG) 2.0.3
নামান

@ নালপয়েন্টার আমি আমার উত্তর সম্পাদনা করেছি। উইন্ডোজ ২.১০.১-এর জন্য জিটিটির সাথে সমস্যাটি স্থির থাকে কিনা তা পরীক্ষা করতে পারেন।
ভোনসি

দেরিতে আপডেটের জন্য দুঃখিত, উইন্ডোজ নয় ম্যাকোএসএক্স-এ কাজ করা তাই এটি যাচাই করতে পারেনি।
নামান

10

গিট ট্রেসটি আমার পরিস্থিতির জন্য খুব প্রকাশ করেছিল ...

   GIT_TRACE=1 git commit -m "a commit message"
   13:45:39.940081 git.c:344               trace: built-in: git commit -m 'a commit message'
   13:45:39.977999 run-command.c:640       trace: run_command: gpg --status-fd=2 -bsau 'full name <your-email@domain.com>'
   error: gpg failed to sign the data
   fatal: failed to write commit object

যে ফর্ম্যাটটির gitবিপরীতে পরীক্ষা করা হয়েছিল সে অনুযায়ী আমার কাছে একটি প্রাথমিক কী তৈরি করা দরকার । -bsauলগগুলিতে উপরে দেওয়া মানটি যেমন হয় তেমন কপি করা এবং নীচে ব্যবহার করা ভাল।

সুতরাং এটি হয়ে যায়,

   gpg --quick-generate-key "full name <your-email@domain.com>"

তারপর এটি কাজ করে।

আশা করি এইটি কাজ করবে.


এটি আমার পক্ষে কাজ করেছিল এবং git traceসত্যই সহায়ক ছিল।
ফিলিপ ওঘেনেরোবো

1
সাথী ... আপনার উত্তর পৌঁছে না দেওয়া পর্যন্ত আমি এটিকে বাছাই করতে কত ঘন্টা ব্যয় করেছি তা আপনি চিত্রিত করতে পারবেন না ... এটি কীটির নামকরণ ছিল সর্বত্র .. ধন্যবাদ! ধন্যবাদ! ধন্যবাদ!
জিওমান্ডা

8

সাইগউইন ব্যবহার করে, আমি সম্প্রতি স্যুইচ করেছি gpg2। তারপর আমি নির্ধারণের পরে Git সঙ্গে সাইন ইন করার জন্য একই সমস্যা ছিল git config gpg.program gpg2

echo "test" | gpg2 --clearsignজিপিজি 2 কাজ করছে কিনা তা দেখার চেষ্টা করুন । আমি সবেমাত্র সেট করার সবচেয়ে সহজ সমাধানটি পেয়েছি git config gpg.program gpg, কারণ এটি কার্যকর। তবে আপনি আরও ভাল ত্রুটি এইভাবে পাবেন - যেমন আপনার পেন্সেন্ট্রি ইনস্টল করা দরকার।


আসলে, কিছু লিনাক্স ডিস্ট্রোজে আপনি একই সমস্যাটি শেষ করতে পারেন। গিট সবসময় জিপিজি ব্যবহার করে, জিপিজি 2 ব্যবহার করে না। আরও দেখুন: stackoverflow.com/questions/34766123/...
rugk

এটি আমার জন্য ত্রুটিটি প্রকাশিত হয়েছে gpg: signing failed: Inappropriate ioctl for deviceযা সমাধান করা যেতে পারে export GPG_TTY=$(tty)। সূত্র: github.com/keybase/keybase-issues/issues/2798
স্বীকনাবা

8

ওএস এক্স-এ, gnupg2বারু ব্যবহার করে আমাকে কেবল জিপিজি এজেন্টকে মেরে ফেলতে হয়েছিল , কখনও কখনও ঘটে:

pkill -9 gpg-agent

এবং envপ্রয়োজনে ভেরিয়েবল সেট করুন :

export GPG_TTY=$(tty)

সাধারণ জিপিজির সমস্যাগুলিও দেখুন এবং এই উত্তরটিও এখানে।


2
এটি আমার পক্ষেও কাজ করেছিল। আমি একটি নতুন উপনাম তৈরি করেছি alias fix-gpg='pkill -9 gpg-agent && export GPG_TTY=$(tty)'
ওল্ডার্স

1
ধন্যবাদ এটি ধন্যবাদ। এমনকি পরে env ভেরিয়েবল সেট করার দরকার পড়েনি।
নিক রমাউ

7

আমি অনুরূপ উত্তরগুলি দেখেছি, তবে আমার পক্ষে ঠিক তেমন কিছু হয়নি। লিনাক্সে, আমাকে আমার মারতে এবং পুনরায় চালু gpg-agentকরতে হয়েছিল:

$ pkill gpg-agent
$ gpg-agent --daemon
$ git commit ...

এটি আমার জন্য কৌশলটি করেছে। দেখে মনে হচ্ছে user.signingkeyআপনার ব্যক্তিগত কীটি সেট করতে হবে এবং কিছু অন্যান্য মন্তব্য যা বলছে তা থেকেও আপনার দরকার আছে ।

$ git config --global user.signingkey [your_key_hash]


6

আমি এই ত্রুটিটি উবুন্টু 18.04 এ পেয়েছি এবং এটি প্রমাণিত হয়েছে যে আমার কীটির মেয়াদ শেষ হয়ে গেছে

এটি দেখতে, আমি এটি চালিয়েছি এবং এটি নিশ্চিত করেছে যে আমার কীগুলি শেষ হয়ে গেছে:

gpg --list-keys

এটি সংশোধন করার জন্য, আমি দৌড়েছি (পূর্ববর্তী কমান্ডটিতে প্রদর্শিত আইডি ব্যবহার করে):

gpg --edit-key <ID>

সেখান থেকে, আমি এই নির্দেশাবলীর মেয়াদোত্তীর্ণকরণ key 0এবং key 1অনুসরণ করে প্রবাহিত করেছি যা টাইপ key 0করতে expireএবং অনুরোধগুলি অনুসরণ করার জন্য উত্পন্ন হয়েছিল। তারপরে পুনরাবৃত্তি হচ্ছে key 1

এরপরে, এটি পরীক্ষা করতে, আমি দৌড়েছি:

echo test | gpg --clearsign

এবং ঠিক করার আগে, এটি ত্রুটি সহ ব্যর্থ হয়েছিল:

জিপিজি: কোনও ডিফল্ট গোপন কী নয়: কোনও গোপন কী নেই
জিপিজি: [স্টিডিন]: ক্লিয়ার-সাইন ব্যর্থ হয়েছে: কোনও গোপন কী নেই

তবে ঠিক করার পরে, একই কমান্ডটি সফলভাবে বার্তায় স্বাক্ষর করেছিল যাতে আমি জানতাম যে জিনিসগুলি আবার কাজ করছে!


ম্যাক ওএসএক্স ক্যাটালিনা থেকে CentOS7 এ কোনও বৈধ কী আমদানি করার সময় এই সমস্যার সমাধানের বিষয়টি নিশ্চিত করা। কেন অন্যান্য জিনিসগুলির মধ্যে এটি একটি পাসওয়ার্ড চাইছে তা জানার চেষ্টা করে প্রায় দুই ঘন্টা ধরে এই জন্তুটির সাথে লড়াই করে। অদ্ভুতভাবে এটি ইতিমধ্যে কখনই শেষ হবে না সেট করা হয়েছিল এবং আমি সেট করেছিলাম যে এটি এখনও কখনও শেষ হবে না।
কোডি বি

5

আমি একই সমস্যা মধ্যে দৌড়ে। আমি বিষয়টি জানাতে পেরে খুশি যে সমস্যাটি এর সাথে git 2.10.0নয় তবে রয়েছে gnupg 1.4.21

অস্থায়ীভাবে gnupg কে 1.4.20 এ ডাউনগ্রেড করা আমার জন্য সমস্যাটি স্থির করেছে।

আপনি যদি হোমব্রু ব্যবহার করছেন এবং আপনি আমার প্যাকেজগুলি যেমন আপগ্রেড করেছেন, আপনি সম্ভবত brew switch gnupg 1.4.20ফিরে যেতে চালাতে পারেন।


3

আপনার ইমেলটি সঠিকভাবে সেট করা আছে তা নিশ্চিত করুন।

git config --global user.email "user@example.com"

1
এটিই একমাত্র সমাধান যা আমার পক্ষে কাজ করেছিল, গিথুবের
নাজ

1
আমার ক্ষেত্রে সমস্যাটি হ'ল আমি একটি নির্দিষ্ট রেপোতে একটি সংস্থার ইমেল ব্যবহার করছিলাম, যার জন্য আমার পিজিপি কী উত্পন্ন হয়নি।
রুবিক

3

যদি আপনার জিপিজি কী এর ইউডের সাথে ইমেল করা ইমেলটি আপনি গিটে ব্যবহার করছেন এমন ইমেলের চেয়ে আলাদা হয় তবে আপনাকে আপনার কীতে অন্য একটি ব্যবহারকারী আইডি যুক্ত করতে হবে বা ইমেলটি ঠিক মেলে এমন কী ব্যবহার করতে হবে।

আপনি ব্যবহার করে অন্য একটি ইউআইডি যুক্ত করতে পারেন:

p gpg --edit-key

মো /superuser/293184/one-gnupg-pgp-key-pair-two-emails এর জন্য দেখুন


1
এটা আমার জন্য ছিল। খ্রিস্ট, "ডেটা সাইন করতে ব্যর্থ" এর চেয়ে বেশি তথ্যবহুল ত্রুটি বার্তা কীভাবে নেই।
আলেক

3

আমি নিশ্চয়ই কোনওভাবে জিপিজি আপডেট করেছি কারণ জিপিজি কাজ করে কিনা তা পরীক্ষার চেষ্টা করার পরে আমি এটি পেয়েছি:

gpg: WARNING: server 'gpg-agent' is older than us (2.1.21 < 2.2.10)
gpg: Note: Outdated servers may lack important security fixes.
gpg: Note: Use the command "gpgconf --kill all" to restart them.

দৌড়ানো gpgconf --kill allআমার জন্য এটি স্থির করে।

আশা করি এটি কাউকে সাহায্য করবে।


2

সর্বশেষ গিট উত্স (২.১২.২) এর সাথে এর সমস্ত নির্ভরতার সর্বশেষ উত্সগুলি (জিলিব, বিজিপ, সিআরএল, পিসিআরই, রিডলাইন, আইডিএন 2, আইকনভ, ইউনিট্রিং, ইত্যাদি) নিয়ে আমার একইরকম সমস্যা ছিল।

দেখা যাচ্ছে যে libreadlineGnuPG সমস্যা দিচ্ছিল:

$ gpg --version
gpg: symbol lookup error: /usr/local/lib/libreadline.so.7: undefined symbol: UP

এবং অবশ্যই, -vvvব্যর্থ সহ গিটের কাছ থেকে দরকারী তথ্য পাওয়ার চেষ্টা করা হয়েছিল, তাই ব্যর্থতা ছিল একটি রহস্য।

রিডলাইনের কারণে পিজিপি ব্যর্থতা সমাধান করতে, প্যাকেজ ম্যানেজার আপডেট করতে বা ব্যবহার করতে পারছেন না এমন নির্দেশাবলী অনুসরণ করুন - জিপিজি ত্রুটি :

টার্মিনালে:

ls /usr/local/lib

সেখানে একগুচ্ছ পঠন লাইব ছিল (libreadline.so.BLAH-BLAH) তাই আমি:

su
mkdir temp
mv /usr/local/lib/libreadline* temp
ldconfig

2

উপরের উত্তরগুলি দুর্দান্ত তবে তারা আমার পক্ষে কার্যকর হয়নি। আমার সমস্যার সমাধানটি জনসাধারণ এবং গোপনীয় উভয়ই রফতানি করছিল কীগুলি ।

আমরা যেখান থেকে রফতানি করছি তা মেশিনের কীগুলি তালিকাভুক্ত করুন

$ gpg --list-keys
/home/user/.gnupg/pubring.gpg
--------------------------------
pub 1024D/ABCDFE01 2008-04-13
uid firstname lastname (description) <email@example.com>
sub 2048g/DEFABC01 2008-04-13

কীগুলি রফতানি করুন

$ gpg --output mygpgkey_pub.gpg --armor --export ABCDFE01
$ gpg --output mygpgkey_sec.gpg --armor --export-secret-key ABCDFE01

আমরা আমদানি করছি এবং আমদানি করছি মেশিনে যান

$ gpg --import ~/mygpgkey_pub.gpg
$ gpg --allow-secret-key-import --import ~/mygpgkey_sec.gpg

বিঙ্গো বনগো, তুমি শেষ!

উল্লেখ: https://www.debuntu.org/how-to-importexport-gpg-key-pair/

পুনশ্চ. আমার কীগুলি মূলত বুটক্যাম্প উইন্ডোজ 7 এ তৈরি হয়েছিল এবং আমি সেগুলি আমার ম্যাক এয়ারে রফতানি করেছি (একই শারীরিক মেশিন, কার্যত ভিন্ন)


2

আমি উবুন্টুতে 18.04 এ আছি এবং একই ত্রুটি পেয়েছি, কয়েক সপ্তাহ ধরেও চিন্তিত ছিলাম। অবশেষে বুঝতে পারলাম জিপিজি 2 কোনও কিছুর দিকে ইঙ্গিত করছে না। তাই সহজভাবে চালান

git config --global gpg.program gpg

এবং তদা, এটি কবজ মত কাজ করে।

স্বাক্ষরিত প্রতিশ্রুতি

আপনার কমিটগুলি এখন তাদের সাথে যাচাইকৃত ট্যাগ থাকবে।


2

আমি কোনও ত্রুটি কনফিগারেশনের কারণে নয়, বরং আমার কীটির মেয়াদ শেষ হয়ে গেছে বলে এই ত্রুটিটিকে হোঁচট মেরেছি। ওএসএক্সে এর মেয়াদ বাড়ানোর সহজতম উপায় হ'ল জিপিজি কীচেইন অ্যাপ্লিকেশনটি খুলুন (যদি আপনি এটি ইনস্টল করে থাকেন) এবং এটি আপনাকে স্বয়ংক্রিয়ভাবে প্রসারিত করতে অনুরোধ করবে। দুটি ক্লিক এবং আপনার কাজ শেষ। আশা করি এটি সহকর্মী গুগলদের :)


2

উবুন্টুতে এটি হঠাৎ করেই ঘটতে শুরু করে, সাম্প্রতিক আপডেটটি এটি করেছে কিনা তা নিশ্চিত নয়, তবে বিদ্যমান সমস্যাগুলির কোনওটিই আমার জন্য প্রযোজ্য ছিল না (আমি GPG_TTYসেট করেছিলাম , এজেন্টকে হত্যার চেষ্টা করেছি।) একক gpgকমান্ড এই ত্রুটিটি দিয়ে ব্যর্থ হয়েছিল:

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

test
gpg: signing failed: Operation cancelled
gpg: [stdin]: clear-sign failed: Operation cancelled

আমি বিকল্প gpgদিয়ে চলার চেষ্টা --debug-allকরেছি এবং নীচের আউটপুটটি লক্ষ্য করেছি:

gpg: DBG: chan_3 <- INQUIRE PINENTRY_LAUNCHED 27472 gnome3 1.1.0 /dev/pts/6 screen-256color -
gpg: DBG: chan_3 -> END
gpg: DBG: chan_3 <- ERR 83886179 Operation cancelled <Pinentry>
gpg: signing failed: Operation cancelled

উপরেরটি ইঙ্গিত দেয় যে এর সাথে কিছু সমস্যা আছে pinentry প্রোগ্রামটি । জিপিজি সাধারণত pinentry-cursesআমার হয়ে চলে, তাই আমি এটিকে পরিবর্তন করেছিলাম pinentry-tty(আমার aptitude installএটি প্রথমে ছিল) এবং ত্রুটিটি চলে গেল (যদিও আমি আর পূর্ণস্ক্রিন পাসওয়ার্ড এন্ট্রি পাই না, তবে যাইহোক আমি তা পছন্দ করি না)। এই পরিবর্তনটি করতে, আমাকে এজেন্টের সাথে লাইনটি যুক্ত pinentry-program /usr/bin/pinentry-ttyকরতে ~/.gnupg/gpg-agent.confএবং হত্যা করতে হয়েছিল gpgconf --kill gpg-agent(এটি পরের বার পুনরায় শুরু হবে)।


1

উপরের উত্তরগুলির কোনওটিই আমার সমস্যার সাথে মেলে না। আমার gpgবাইনারি ( /usr/local/bin/gpg -> /usr/local/MacGPG2/bin/gpg2) জিপিজি স্যুট অংশ হিসাবে ইনস্টল করা হয়েছিল পরিবর্তে ।

তবুও, আমি অনুভব করেছি যে পরামর্শটি এইভাবে সিদ্ধ হয়েছে: "যে gpgদ্বৈত মেশিনে সর্বশেষ পাওয়া যায় তা ব্যবহার করুন"। সুতরাং আমি চেষ্টা করেছি:

brew update
brew upgrade git
brew install gpg

# the following are suggestions from brew's Caveats, to make `/usr/local/bin/gpg`
# point to the brew binary:
rm '/usr/local/bin/gpg'
brew link --overwrite gnupg2

আমি যাচাই করেছি যে আমি ব্রিউ থেকে নতুন এক্সিকিউটেবলের দিকে ইঙ্গিত করার জন্য gpgআমার উপর সঠিকভাবে পরিবর্তন করেছি $PATH:

🍔 which gpg
/usr/local/bin/gpg
🍔 ls -l /usr/local/bin/gpg
lrwxr-xr-x  1 burger  admin  33 Feb 13 13:22 /usr/local/bin/gpg -> ../Cellar/gnupg2/2.0.30_3/bin/gpg

এবং আমি পরিষ্কারভাবে গিটকেও বলেছিলাম কোন gpgবাইনারিটি ব্যবহার করতে হবে:

git config --global gpg.program gpg

ঠিক আছে, এটি পুরোপুরি জলরোধী নয়, কারণ এটি পথের সংবেদনশীল। আমি আসলে সন্দেহের বাইরেও নিশ্চিত হয়ে উঠতে পারি নি যে গিটটি ব্রু শুরু করেছিল togpg

যাই হোক না কেন: git commitএরপরে কোনওটিই আমার কমিটগুলিকে সফলভাবে স্বাক্ষর করতে যথেষ্ট নয় ।


আমার পক্ষে শেষ পর্যন্ত যে জিনিসটি কাজ করেছিল তা হ'ল জিপিজি স্যুট আপডেট করা । আমি ২০১.7.০ সংস্করণটি চালাচ্ছিলাম এবং আমি দেখতে পেয়েছি যে ২০১..১০ এ আপডেট করা আমার জন্য সমস্যাটি স্থির করেছে।

আমি খুললাম GPG Keychain.app, এবং "আপডেটগুলির জন্য চেক করুন ..." টিপুন। নতুন সংস্করণ সহ: স্বাক্ষরিত কমিটগুলি আবার সঠিকভাবে কাজ করেছে।


আমি সর্বশেষ সংস্করণে আপডেট করার চেষ্টা করেছি ... এটি কোনও কাজ করে না। এক্সকোডে সাইন ইন করার চেষ্টা করছি।
আলবার্ট টি। ওয়াং


1

অনেকটা @ বীরচ্লাবের মতো, অনেক খনন / অনুসন্ধানের পরে আমি দেখতে পেলাম যে এটি জিপিজি নয়, বরং জিপিজি স্যুট। আমি করেছি cask reinstall gpg-suiteএবং এটি আমার জন্য এটি সমাধান করেছে।


0

যদি এটি কেবল এলোমেলোভাবে ঘটে থাকে এবং অতীতে পুরোপুরি কাজ করে চলেছে, যেমনটি আমার ক্ষেত্রে রয়েছে, লগ আউট ( cmd+shift+q) এবং আবার লগ ইন করার চেষ্টা করুন । আমার জন্য কাজ করেছেন


0

আমার ক্ষেত্রে, অন্যান্য উত্তরে বর্ণিত সমাধানগুলির কোনওটিই কার্যকর হয়নি। আমি খুঁজে পেয়েছি যে সমস্যাটি একটি সংগ্রহস্থলের জন্য নির্দিষ্ট। রিপো মোছা এবং ক্লোনিং আবার সমস্যার সমাধান করেছে।


0

এক অদ্ভুত রকমের, তবে আপনার টার্মিনালটি যথেষ্ট বড় কিনা তা নিশ্চিত করুন! এটি চালিয়ে খুব ছোট কিনা তা আপনি বলতে পারেন echo test | gpg --clearsign- এটি আপনাকে জানাতে একটি দুর্দান্ত স্পষ্ট ত্রুটি বার্তা দেবে। যদি এটি যথেষ্ট পরিমাণে বড় না হয় তবে আপনার জিপিজি এজেন্ট তার ছোট্ট এনক্রোস বাক্সটি প্রদর্শন করতে পারে না।

আপনি জিইআইআই এজেন্ট বা এমন কিছু ব্যবহার করেন যা ncurses ব্যবহার করে না তবে এইটি প্রয়োগ করা হবে না।

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