আপনি পাবলিক / প্রাইভেট ডিএসএ কীপায়ারটি কীভাবে পরীক্ষা করেন?


167

প্রদত্ত একটি ব্যক্তিগত কী কোনও প্রদত্ত পাবলিক কীটির সাথে মেলে তা যাচাই করার কোনও সহজ উপায় আছে? আমার কয়েকটি * .পাব এবং কয়েকটি * .কি ফাইল রয়েছে এবং কোনটি দিয়ে যাচ্ছে তা আমার পরীক্ষা করা দরকার।

আবার এগুলি হল পাব / কী ফাইলগুলি, ডিএসএ।

আমি সত্যিই কোনও ধরণের এক-লাইনার পছন্দ করব ...

উত্তর:


259

আমি এমন একটি উপায় পেয়েছি যা দেখে মনে হয় আমার পক্ষে আরও ভাল কাজ করা হয়েছে:

ssh-keygen -y -f <private key file>

সেই কমান্ড প্রদত্ত ব্যক্তিগত কীটির জন্য সর্বজনীন কীকে আউটপুট দেবে, সুতরাং কেবলমাত্র প্রতিটি * .pub ফাইলের সাথে আউটপুট তুলনা করুন।


2
এটি ঠিক কী করে? কেন ssh?
সাম্মিওয়ে

2
সম্ভবত সে এসএস প্রমাণীকরণের জন্য কীপেইস ব্যবহার করছে
এটারিওন

2
আমার ক্ষেত্রে, একটি সেন্ট্রাল ওয়ার্ক সার্ভারে কয়েক ডজন id_rsa.pub.blahhostফাইল রয়েছে এবং আমি জানতাম না যে কোনটি একক id_rsaব্যক্তিগত কী'র সাথে মিলেছে এবং আমি পাসওয়ার্ডহীন স্কিপ সেটআপ করছি যাতে আমি পুরানো ওয়েবসাইটগুলি সরিয়ে নিতে পারি। নতুন কী জুটি তৈরি করা কোনও বিকল্প নয়; আমি আমার কীগুলি ভালভাবে সেট আপ করেছি এবং তাতে কোনও গণ্ডগোল হবে না।
ক্রিস কে

1
এই সমাধানটি সমস্ত ধরণের এসএসএইচ-কীগুলির জন্য কাজ করে বলে মনে হচ্ছে। এমনকি আমি এই পদ্ধতির সাহায্যে একটি বিচ্ছিন্ন জনসাধারণের কী পুনরুদ্ধার করতে সক্ষম হয়েছি।
জারি তুর্কিয়া

53

আমি সবসময় এই কমান্ডগুলি ব্যবহার করে মডিউলাসের একটি MD5 হ্যাশ তুলনা করি:

Certificate: openssl x509 -noout -modulus -in server.crt | openssl md5
Private Key: openssl rsa -noout -modulus -in server.key | openssl md5
CSR: openssl req -noout -modulus -in server.csr | openssl md5

যদি হ্যাশগুলি মিলে যায়, তবে সেই দুটি ফাইল একসাথে চলে।


48

ডিএসএ কীগুলির জন্য, ব্যবহার করুন

 openssl dsa -pubin -in dsa.pub -modulus -noout

পাবলিক কী মুদ্রণ করতে, তারপর

 openssl dsa -in dsa.key -modulus -noout

একটি ব্যক্তিগত কী সম্পর্কিত পাবলিক কীগুলি প্রদর্শন করতে, তারপরে তাদের তুলনা করুন।


18

ধরুন আপনার x.509 শংসাপত্রের মধ্যে সার্বজনীন কী রয়েছে এবং ধরে নিচ্ছেন যে সেগুলি আরএসএ কী, তবে প্রতিটি পাবলিক কী এর জন্য, করুন

    openssl x509 -in certfile -modulus -noout

প্রতিটি ব্যক্তিগত কী জন্য, করুন

    openssl rsa -in keyfile -modulus -noout

তারপরে মডুলাস দ্বারা কীগুলি মেলান।


17

ভিন্নতা দিয়ে চেকটিকে আরও সহজ করা যায়:

diff <(ssh-keygen -y -f <private_key_file>) <public key file>

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


3
ফাইলগুলি মিললে আউটপুট পেতে:diff -s
রোল্যান্ড

3
এটি একটি দুর্দান্ত উত্তর। (1) diff -qsএকটি সরল "অভিন্ন / অভিন্ন নয় উত্তর।" (2) আপনার
ভিন্নতা

7

সর্বজনীন কীগুলি মুছুন এবং ব্যক্তিগত কীগুলি থেকে নতুন তৈরি করুন। এগুলিকে আলাদা ডিরেক্টরিতে রাখুন বা এগুলি সোজা রাখতে নামকরণের কনভেনশন ব্যবহার করুন।


3
প্রশ্নটি জিজ্ঞাসা করছে যে কীভাবে যাচাই করবেন এবং যে ডিভাইসটি আমরা এটি যাচাই করব এটিতে নতুন উত্পন্ন করার সুবিধাগুলি নাও থাকতে পারে।
আর্মেনবি

5

Key USER / .ssh ডিরেক্টরিতে কোনও প্রাইভেট কী এবং সর্বজনীন কী কোনও মিলিত সেট (অভিন্ন) কিনা কোনও মিলিত সেট (অভিন্ন) কিনা তা পরীক্ষা করতে নিম্নলিখিত কমান্ডটি প্রবেশ করান। কাট কমান্ড পাবলিক কীতে লাইনের শেষে থাকা মন্তব্যটিকে তুলনা করা থেকে বাধা দেয়, কেবল কীটির সাথে তুলনা করার অনুমতি দেয়।

ssh-keygen -y -f ~/.ssh/id_rsa | diff -s - <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)

আউটপুট এই লাইনের একটির মতো দেখাবে।

Files - and /dev/fd/63 are identical

Files - and /dev/fd/63 differ

আমি একটি শেল স্ক্রিপ্ট লিখেছিলাম যা ব্যবহারকারীরা তাদের ~ / .ssh / ফাইলগুলির ফাইল মেলানো কী কী সেটটি পরীক্ষা করতে ব্যবহার করে। এটি ব্যবহারকারীর ইভেন্টগুলি ssh স্থাপনের সাথে আমার চ্যালেঞ্জগুলি সমাধান করে। এটি আপনাকে সাহায্য করতে পারে। https://github.com/BradleyA/docker-security-infrastructure/tree/master/ssh

দ্রষ্টব্য: আমার পূর্ববর্তী উত্তর (মার্চ 2018 এ) আর খোলাখুলির সর্বশেষ প্রকাশের সাথে কাজ করে না। পূর্ববর্তী উত্তর: ডিফার-কিউএস <(এসএসএস-কীজেন -yf ~ / .ssh / id_rsa) <(কাট-ডি '' -ফ 1,2 ~ / .ssh / id_rsa.pub)


আমি অনুমান আপনি সম্প্রসারিত করা উচিত, আপনার পোস্টে সত্যিই পাসে stackoverflow.com/a/22595408/3102264
mpromonet


4

আপনি যদি উইন্ডোতে থাকেন এবং জিটিআইআই ব্যবহার করতে চান, পুট্টিজন সহ আপনি এটিতে আপনার ব্যক্তিগত কীটি আমদানি করতে পারেন:

এখানে চিত্র বর্ণনা লিখুন

একবার আমদানি হয়ে গেলে আপনি এর সর্বজনীন কীটি সংরক্ষণ করতে পারেন এবং এটি আপনার সাথে তুলনা করতে পারেন।


1

সর্বজনীন কী সহ কোনও কিছু এনক্রিপ্ট করুন এবং কোন ব্যক্তিগত কী এটি ডিক্রিপ্ট করে দেখুন।

জেফ আতউড ছাড়া অন্য কারও দ্বারা এই কোড প্রকল্পের নিবন্ধটি .NET ক্রিপ্টো ক্লাসের চারপাশে একটি সরলিকৃত মোড়ক প্রয়োগ করে। এই কীগুলি আরএসএ ব্যবহারের জন্য তৈরি করা হয়েছিল ধরে নিলেন, আপনার পাবলিক কী সহ এনক্রিপ্ট করার জন্য অসমমিতিক শ্রেণি এবং ডিক্রিপ্টে আপনার ব্যক্তিগত কী ব্যবহার করুন।


আমি কিছুটা সহজ সরল কিছু খুঁজছি। বলুন, একটি শেল একটি লাইনার বা এর মতো। আমি লিনাক্সে আছি, এবং সাধারণ জিনিস যেমন ওপেনসেল ইনস্টল করা আছে।
লোকি

3
এটি আপনার অনুমোদিত_কিজ ফাইলে একটি সর্বজনীন কী যুক্ত করার অনুরোধ হিসাবে প্রায় দরকারী এবং কোন ব্যক্তিগত কী কাজ করে তা দেখতে ssh ব্যবহার করুন। পদ্ধতিটি কাজ করে তবে এটি একটি ব্যথা।
ব্র্যাডলি ক্রাইডার

0

যদি এটি কিছুই না ফেরায় তবে তারা মিলছে:

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.