কী কী জিপিজি-এজেন্ট ক্যাশে করেছে তা আমি কীভাবে জানতে পারি? (যেমন কীভাবে ssh-add -l আপনাকে ক্যাশেড ssh কীগুলি দেখায়)


40

ssh-add -lযোগ করা হয়েছে এমন সমস্ত এসএস-কী আপনাকে দেখায় ssh-add ~/.ssh/id_yourkey। আমি কীভাবে জিপিজি এবং জিপিজি-এজেন্টের সাথে সাদৃশ্যপূর্ণ জিনিসটি করব, অন্য কথায়, এটি ক্যাশেড কীগুলির একটি তালিকা প্রদর্শন করতে বলি?

উত্তর:


32

আপনি এটি করতে সক্ষম হতে পারবেন না, কমপক্ষে এখনও না, বা কমপক্ষে সাধারণ ক্ষেত্রে নাও পারেন। তবে আমি যা শিখেছি তা ভাগ করে নেব এবং যথাযথভাবে এই উত্তরটি আপডেট করার প্রত্যাশায় রয়েছি।

প্রথমত, ssh-agentসামর্থ্যের বিপরীতে , যা প্রকৃতপক্ষে ব্যক্তিগত কীগুলি gpg-agentক্যাশে করে, তারা কী বা পাসফ্রেজগুলি ক্যাশে করতে পারে। এটি প্রতিটি ক্লায়েন্টের উপর নির্ভর করে যা ক্যাশে করবে এবং gpgকেবল gpg-agentপাসফ্রেজ ক্যাশে ব্যবহার করে।

আপনি ইউটিলিটি gpg-agentব্যবহার করে যোগাযোগ করতে পারেন gpg-connect-agent। এর পরের উদাহরণে, আমি এসটিডিআইএন এর মাধ্যমে একবারে কমান্ডগুলি পাস করছি।

$ CACHEID="ThisIsTheTrickyPart"
$ ERRSTR="Error+string+goes+here"
$ PMTSTR="Prompt"
$ DESSTR="Description+string+goes+here"
$ echo "GET_PASSPHRASE --data $CACHEID $ERRSTR $PMTSTR $DESSTR" | gpg-connect-agent
D MyPassPhrase
OK

gpg-connect-agentএই কমান্ডটি চাওয়ার এবং পাস করার পরে , pinentryআমার সিস্টেমে কনফিগার করা কমান্ডটি একটি পাসফ্রেজের অনুরোধে ত্রুটি, প্রম্পট এবং বিবরণ স্ট্রিং ব্যবহার করে। এই ক্ষেত্রে আমি "মাইপাসফ্রেস" প্রবেশ করলাম যা স্ট্রাকচার্ড আউটপুটে ফিরে আসে (নীচের চিত্রটি দেখুন) । যদি আমি পাঠাতে GET_PASSPHRASEকরতে gpg-agentএকই সঙ্গে আবার $CACHEID, এটা ফেরৎ পরিবর্তে ব্যবহার করার পাসফ্রেজ ক্যাশে pinentry

                                 সংলাপ বাক্সের এসএস

GET_PASSPHRASEএছাড়াও একটি --no-askবিকল্প গ্রহণ করে যা ক্যাশে মিস এ ত্রুটি ফিরিয়ে দেবে। এখানে আমি "নটকচেডআইডি" ক্যাশে আইডি হিসাবে ব্যবহার করি এবং প্রয়োজনীয় যুক্তিগুলির জন্য ডামি স্ট্রিং ব্যবহার করি যা gpg-agentব্যবহার করবে না।

$ echo "GET_PASSPHRASE --no-ask NotCachedID Err Pmt Des" | gpg-connect-agent
ERR 67108922 No data <GPG Agent>

নীতিগতভাবে, তারপরে, আপনি প্রতিটি সম্ভাব্য-ক্যাশেড পাসফ্রেজের পরিবর্তে এজেন্টকে জিজ্ঞাসা করতে পারেন এবং আউটপুটটির জন্য OKবা ERRএটি পরীক্ষা করতে পারেন। প্রশ্নটি তখন হয়ে যায়, আমি কীভাবে আইডি তৈরি করব? আমরা উপরের উদাহরণে দেখতে পাই, gpg-agentএটি ক্যাশে আইডি হিসাবে গ্রহণ করে তাতে উদার। দেখা যাচ্ছে যে gpgপাবলিক কীতে ফিঙ্গারপ্রিন্টটি গণনা করে এবং একটি হেক্স-কোডেড স্ট্রিং উপস্থাপনা ক্যাশে আইডি হিসাবে ব্যবহার করে তবে সমস্যাটি হ'ল এই আঙুলের ছাপটি আপনি যে আঙুলের ছাপের মাধ্যমে শিখতে পারবেন তার মতো নয়gpg --fingerprint --list-secret-keys। এই ডাইজেস্টকে কীগ্রিপ বলা হয় (কারণ এটি কেবল কাঁচা মূল উপাদানের উপর দিয়ে গণনা করা হয় তবে আঙুলের ছাপটি মূল উপাদান এবং ক্রিয়েশন টাইমস্ট্যাম্পের উপরে গণনা করা হয়)। আপনি যদি সত্যিই এই পথটি চালিয়ে যেতে চান তবে আপনাকে যা যা পরীক্ষা করতে চান তার প্রতিটি কী জন্য সঠিক ফিঙ্গারপ্রিন্ট তৈরি করতে হবে তা খুঁজে পেতে হবে (বিকল্পটি দিয়ে GnuPG, ২.১ এর পরবর্তী প্রজন্মটি ব্যবহার করা সহজ হবে --with-keygrip)।

সতর্কতা: আউটপুটটিতে GET_PASSPHRASEপ্রকৃতপক্ষে পাসফ্রেজ রয়েছে । এমনকি যদি আপনি --dataবিকল্পটি ছেড়ে দেন তবে পাসফ্রেজ হেক্স-কোডেড স্ট্রিং হিসাবে স্পষ্টতই দৃশ্যমান। আপনি কী করছেন তা যদি না জানেন এবং যথাযথ সতর্কতা অবলম্বন না করেন তবে এটিকে ঘৃণা করা সম্ভবত খুব খারাপ ধারণা (টিএম)।


ভয়ঙ্কর উত্তর! আমি অনেক দিন ধরে খুঁজছি এবং এর থেকে খুব বেশি কিছু পাই না। এগুলিকে একসাথে রাখার উপায় এবং পরিষ্কার এবং সংক্ষিপ্ত শর্তে এটি ব্যাখ্যা করার উপায়!
slm

স্ক্রিন শটটি প্যান্ট্রি নয় তবে কিছু জিনোম প্রোগ্রাম বাধা দিচ্ছে gpg-agent, তাই না?
হউক লেগেছে 22

gpg-agentpinentryপ্রোগ্রামটি যা ব্যবহার করতে এটি কনফিগার করা হয়েছে তার স্বাদ আহ্বান করে । উদাহরণস্বরূপ দেখুন কিভাবে কনসোল ব্যবহার মোড pinentry দ্বারা GPG বলপূর্বক ...
নিরবোজ

gpg-2.1.11উবুন্টু ১৪.০৪ থেকে উত্স থেকে সংকলিত ব্যবহার করে , আমি gpg-agentক্যাশে আইডি কী তা বুঝতে পারি না : আমি দেখানো অনুসারে কীগ্রিপস (মূল কী এবং সাবকি) এবং কী ফিঙ্গারপ্রিন্ট উভয়ই চেষ্টা করেছি gpg --fingerprint --with-keygrip <user>। এগুলির কোনওটিই কাজ করে না এবং gpg-connect-agentসর্বদা প্রতিবেদন করে ERR 67108922 No data <GPG Agent>। আমি ডাবল চেক করেছি এজেন্টটির এখনও GPG_TTY= gpg --decrypt <file>বিভিন্ন ক্যাশে আইডির চেষ্টা করে সফলভাবে চালিয়ে পাসফ্রেজ রয়েছে has (যদি এটি অস্পষ্ট GPG_TTYথাকে তবে সেট না করে, ডিক্রিপশনটি কেবল তখনই সাফল্য লাভ করে যদি পাসফ্রেজ ইতিমধ্যে ক্যাশে থাকে gpg-agent))
ম্যাটেই ডেভিড

2.0.14 বাগ করা যায়? উপরের কৌশলটি ব্যবহার করে, জিপিজি-এজেন্টের কাছে নির্দিষ্ট কীটির (কীগ্রিপ দ্বারা চিহ্নিত) প্রকৃতপক্ষে পছন্দসই পাসফ্রেজ রয়েছে, তবে যখন আমি সেই কীগ্রিপ দিয়ে সাইন ইন করার চেষ্টা করি তখন আমি পাসওয়ার্ডের জন্য অনুরোধ জানাই। কেন?
ওথিউস

8

Gnupg এর পরবর্তী সংস্করণগুলিতে (2.1.18 দিয়ে পরীক্ষিত) ব্যবহার করুন:

gpg --fingerprint --with-keygrip <email>

কিগ্রিপ পেতে, তারপর

echo "KEYINFO --no-ask <keygrip> Err Pmt Des" | gpg-connect-agent

এটি ক্যাশে হয়েছে কিনা তা দেখতে।


5

GnuPG- র পরবর্তী সংস্করণগুলিতে (২.২.৯ পরীক্ষা করা হয়েছে) এজেন্টের সাহায্যে বর্তমানে ব্যবহৃত ক্রেগ্রিগগুলি তালিকাভুক্ত করা সম্ভব যা এজেন্টটি কমান্ডটি keyinfo --listদিয়ে ব্যবহার করে gpg-connect-agent

$ gpg-connect-agent 'keyinfo --list' /bye
S KEYINFO 866C3DE249CF81E31A3691845DBADE2809487FF5 D - - 1 P - - -
S KEYINFO 04278155E72CAE8FF1548FE161F1B8F7673824F4 D - - - P - - -
OK

1সপ্তম কলামে ইঙ্গিত করে যে keygrip সংরক্ষিত করা হয়েছে। একটি কীগ্রিপ এবং এটি প্রতিনিধিত্ব করে এমন কীগুলির মধ্যে সংযোগটি পুনরুদ্ধার করা যেতে পারে gpg --list-secret-keys --with-keygrip

সূত্র: https://demu.red/blog/2016/06/how-to-check-if-your-gpg-key-is-in-cache/


3

ক্যাশিড পেতে আপনার --fingerprintদুবার উল্লেখ করতে হবে , উদাহরণস্বরূপ:

$ gpg --fingerprint --fingerprint ftpadmin@kernel.org
pub   1024D/517D0F0E 2000-10-10
      Key fingerprint = C75D C40A 11D7 AF88 9981  ED5B C86B A06A 517D 0F0E
uid                  Linux Kernel Archives Verification Key <ftpadmin@kernel.org>
sub   4096g/E50A8F2A 2000-10-10
      Key fingerprint = E851 4C25 10C6 0291 0D47  A008 7C8B 4360 E50A 8F2A

এই ক্ষেত্রে ক্যাশিড হবে E8514C2510C602910D47A0087C8B4360E50A8F2A


এটি আমার পক্ষে কাজ করেছে
ম্যাথু হ্যানিগান

Unix.stackexchange.com/a/342461/108198উত্তরটি আরও ভাল বলে মনে হচ্ছে।
বেন ক্র্যাসি

এটি আমার পক্ষে কাজ করে না ... এক --fingerprintবনাম দুটি --fingerprint --fingerprintউভয়ই একই ফলাফল দেয়। @ বেনক্র্যাসি যেমন লিখেছেন, উপরের উত্তরটি কীগ্রিপ ব্যবহার করে কাজ করে।
ট্রে

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