কোনও আরএসএ পাবলিক / প্রাইভেট কী জুটি মেলে কিনা তা কীভাবে পরীক্ষা করবেন


71

আমার দুটি ফাইল আছে, id_rsaএবং id_rsa.pubবৈধ জুটি হলে কোন আদেশটি যাচাই করতে ব্যবহার করা যেতে পারে ?


আমি মিশুয়েলিকের উত্তরটি নিশ্চিত করব; ধন্যবাদ এটি একটি নতুন কী জোড়া তৈরি থেকে আমাকে রক্ষা করেছে। ssh -vঅনেক সাহায্য করে।
ক্রিস কে

উত্তর:


91

আমি কোনও পাবলিক / প্রাইভেট ডিএসএ কী-কেয়ার কীভাবে পরীক্ষা করবssh-keygen -y -e -f <private key> তার গ্রহণযোগ্য উত্তরের পরিবর্তে উপায়টি পছন্দ করব? স্ট্যাক ওভারফ্লো

ssh-keygen -y -e -f <private key>একটি প্রাইভেট কী নিয়ে যায় এবং সংশ্লিষ্ট পাবলিক কীটি প্রিন্ট করে যা আপনার উপলব্ধ পাবলিক কীগুলির সাথে সরাসরি তুলনা করা যেতে পারে। (ইঙ্গিত: মন্তব্যগুলি বা কী-বিকল্পগুলি থেকে সাবধান থাকুন))

(এটি কীভাবে করছে? আমি কেবল আশা করতে পারি যে সরকারী কীটি সরাসরি বা অপ্রত্যক্ষভাবে ব্যক্তিগত কীতে এনকোড করা আছে ...)

আমার এটি নিজের প্রয়োজন এবং নিম্নলিখিত বাশ ওয়ান-লাইনার ব্যবহার করেছি। কীগুলি এক সাথে থাকলে এটির কিছুই আউটপুট করা উচিত নয়। -qস্ক্রিপ্টগুলিতে ভিন্নতার জন্য কিছুটা প্রয়োগ করুন এবং ডিফ কেবল রিটার্ন কোডটি যথাযথভাবে সেট করে।

PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )

1
@ মিশেলহ্যাম্পটন: এখন আমি আপনার মন্তব্যটি বুঝতে পারি। "গৃহীত উত্তর"
-র

1
@ সির্চ: আমি ভেবেছিলাম যে দুটি কী সমান হওয়ায় কোন কীটি ব্যক্তিগত এবং কোনটি প্রকাশ্য তা খাঁটি এলোমেলো। একটি কী এনক্রিপ্টগুলি কেবল অন্যটির সাথে ডিক্রিপ্ট করা যায়। এবং যদি একটি কী অন্যের কাছ থেকে পাওয়া যায় তবে এইগুলি কার্যকর হবে না।
মিশুয়েলিক

1
@ মিচুয়েলনিক আপনি ব্যক্তিগত কী থেকে সর্বজনীন কী পেতে পারেন। আপনি পাবলিক কী থেকে প্রাইভেট কী অর্জন করতে পারবেন না। এটি এনক্রিপ্ট করা পদার্থের বিষয়ে কথা বলছিল না।
সির্চ

1
মিচুয়েলিক ইমো, প্রশ্নটি এখানে এসও এবং অন-টপিকের (এবং / অথবা সুপারউজার) বিষয়বস্তু off তবে, এটি সদৃশ হিসাবে চিহ্নিত করা উচিত নয় এবং পরিবর্তে সেখানে স্থানান্তরিত করার জন্য পতাকাঙ্কিত করা উচিত। তবে এটি উভয়ই আচ্ছাদিত তাই আমি তথ্যের আরও সম্পূর্ণ ভাগ করে নেওয়া পছন্দ করি।
ক্রিস কে

10
যতক্ষণ ssh-keygen -y -e -f id_rsaনা id_rsa.pub বিদ্যমান থাকবে ততক্ষণ id_rsa একেবারেই চেক করবে না তবে id_rsa.pub থেকে মানটি ফিরিয়ে দেবে। সুতরাং উদাহরণস্বরূপ আপনি যদি echo 5 > id_rsaব্যক্তিগত কী মুছে ফেলেন, তবে ডিফ করুন, ডিফটি পাস হবে! এছাড়াও, ssh-keygen -yef fooযেখানে foo একটি বৈধ কী নয় (এবং এর সাথে কোনও foo.pub নেই) চালানো ব্যবহারকারীর ইনপুটটির অপেক্ষায় অবরুদ্ধ হবে, সুতরাং এটি কোনও স্ক্রিপ্টে ব্যবহারের ক্ষেত্রে সতর্কতা অবলম্বন করুন।

31

আপনি যে সার্বজনীন কী ফাইলটি পরীক্ষা করছেন তা নির্ভর করে, গৃহীত উত্তরটি মিথ্যা ইতিবাচক ফলাফল দিতে পারে। @ ড্রুবেন মন্তব্যটিতে বর্ণিত আচরণের কারণেই এটি। বিশেষত, যখন -e বিকল্পটি বেসরকারী কী ফাইলের সাথে -f বিকল্প প্যারামিটার হিসাবে ব্যবহার করা হয়, তখন এটি সরকারী পাবলিক কী ফাইলের মধ্যে যা কিছু রয়েছে তা কেবল পার্ট করে (তবে পুনরায় ফর্ম্যাট করে)।

অন্য কথায়,

ssh-keygen -y -f id_rsa

(আপাতদৃষ্টিতে) সর্বজনীন কী মান উত্পন্ন করে এবং

ssh-keygen -y -e -f id_rsa

বিদ্যমান id_rsa.pub- এ যা কিছু থাকুক না কেন কেবল এবং আউটপুটগুলি (এবং পুনরায় ফর্ম্যাট) করা যায় ।

আমার ক্ষেত্রে, আমাকে যাচাই করতে হবে যে এই জুটিটি কলুষিত হয়নি। সুতরাং, আমি নিম্নলিখিতটি তুলনা করার সিদ্ধান্ত নিয়েছি:

ssh-keygen -y -f id_rsa | cut -d' ' -f 2

সঙ্গে

cut -d' ' -f 2 id_rsa.pub

অতএব:

diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)

সম্ভবত এটি হিসাবে নমনীয় নয়, তবে এটি আমার প্রয়োজনের জন্য ভাল। হতে পারে এটি অন্য কাউকে সাহায্য করে।


5
এটি সত্যিকারের গৃহীত উত্তরটি প্রতিস্থাপন করা উচিত বা কমপক্ষে উর্ধ্বগতির ক্ষেত্রে এটিকে ছাড়িয়ে যেতে পারে।
থোমেন্সকি

ধন্যবাদ! এই কমান্ডটি পাসফ্রেজের সাহায্যে কীগুলির সাথে কাজ করে না, এটি ইন্টারেক্টিভভাবে জিজ্ঞাসা করে না। আমি দুটি () কমান্ডের বিষয়বস্তু ফাইলগুলিতে বের করেছি এবং সেগুলি ডিফ-এড করব, এটি কার্যকর।
ইয়ারোস্লাভ নিকিতেনকো

5

তারা আপনার স্থানীয় সিস্টেমে হন, তাহলে বিদ্ধ id_rsa.pubআপনার $HOME/.ssh/authorized_keysএবং sshকরতে localhostব্যবহার id_rsaকী। যদি এটি কাজ করে তবে তারা মিলছে।

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.