ssh-add -l
যোগ করা হয়েছে এমন সমস্ত এসএস-কী আপনাকে দেখায় ssh-add ~/.ssh/id_yourkey
। আমি কীভাবে জিপিজি এবং জিপিজি-এজেন্টের সাথে সাদৃশ্যপূর্ণ জিনিসটি করব, অন্য কথায়, এটি ক্যাশেড কীগুলির একটি তালিকা প্রদর্শন করতে বলি?
ssh-add -l
যোগ করা হয়েছে এমন সমস্ত এসএস-কী আপনাকে দেখায় ssh-add ~/.ssh/id_yourkey
। আমি কীভাবে জিপিজি এবং জিপিজি-এজেন্টের সাথে সাদৃশ্যপূর্ণ জিনিসটি করব, অন্য কথায়, এটি ক্যাশেড কীগুলির একটি তালিকা প্রদর্শন করতে বলি?
উত্তর:
আপনি এটি করতে সক্ষম হতে পারবেন না, কমপক্ষে এখনও না, বা কমপক্ষে সাধারণ ক্ষেত্রে নাও পারেন। তবে আমি যা শিখেছি তা ভাগ করে নেব এবং যথাযথভাবে এই উত্তরটি আপডেট করার প্রত্যাশায় রয়েছি।
প্রথমত, 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
বিকল্পটি ছেড়ে দেন তবে পাসফ্রেজ হেক্স-কোডেড স্ট্রিং হিসাবে স্পষ্টতই দৃশ্যমান। আপনি কী করছেন তা যদি না জানেন এবং যথাযথ সতর্কতা অবলম্বন না করেন তবে এটিকে ঘৃণা করা সম্ভবত খুব খারাপ ধারণা (টিএম)।
gpg-agent
, তাই না?
gpg-agent
pinentry
প্রোগ্রামটি যা ব্যবহার করতে এটি কনফিগার করা হয়েছে তার স্বাদ আহ্বান করে । উদাহরণস্বরূপ দেখুন কিভাবে কনসোল ব্যবহার মোড 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
))
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/
ক্যাশিড পেতে আপনার --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
।
--fingerprint
বনাম দুটি --fingerprint --fingerprint
উভয়ই একই ফলাফল দেয়। @ বেনক্র্যাসি যেমন লিখেছেন, উপরের উত্তরটি কীগ্রিপ ব্যবহার করে কাজ করে।
http://lists.gnupg.org/pipermail/gnupg-users/2010-January/037876.html
ক্যাশেড হ'ল কীটির সম্পূর্ণ ফিঙ্গারপ্রিন্ট।
gpg --fingerprint user@foo.bar