আমার ওপেনএসএইচ কী কী ফিঙ্গারপ্রিন্টটি এডাব্লুএস ইসি 2 কনসোল কীপায়ের ফিঙ্গারপ্রিন্টের সাথে মেলে না?


73

আমি যখন আমার ওপেনএসএইচ পাবলিক কীটি এডাব্লুএস ইসি 2 এর কিরিংয়ের ফিঙ্গারে মুদ্রণ করি যা এডাব্লুএস দেখায় আমার থেকে যা দেখা যায় তার সাথে মেলে না:

ssh-keygen -l -f my_key

এটি একটি পৃথক দৈর্ঘ্য এবং বিভিন্ন বাইট আছে।

কেন? আমি নিশ্চিত যে আমি সঠিক কীটি আপলোড করেছি।

উত্তর:


102

এডাব্লুএস ইসি 2 এসএসএইচ 2 ফিঙ্গারপ্রিন্ট দেখায়, ওপেনএসএসএইচ ফিঙ্গারপ্রিন্ট প্রত্যেকে প্রত্যাশা করে না। এটি ইউআইতে এটি বলে না।

এটি দু'টি সম্পূর্ণ ভিন্ন ধরণের আঙ্গুলের ছাপগুলি এডাব্লুএস-তে কী তৈরি হয়েছিল এবং ডাউনলোড করা হয়েছে বা আপনি নিজের পাবলিক কী আপলোড করেছেন কিনা তার উপর নির্ভর করে shows

এর সাথে আঙুলের ছাপগুলি তৈরি করা হয়

ssh-keygen -l -f id_rsa

হবে না কি EC2 শো মেলে। আপনি ec2-fingerprint-keyকমান্ডটি দিয়ে আঙুলের ছাপ তৈরি করতে AWS API সরঞ্জামগুলি ব্যবহার করতে পারেন , বা এটি করতে ওপেনএসএসএল ব্যবহার করতে পারেন।

মনে রাখবেন যে আপনি যদি প্রথমদিকে এডাব্লুএসে একটি কী তৈরি করেছিলেন তবে এটি আবার আপলোড করেছেন (বলুন, অন্য অঞ্চলে) তবে আপনি একটি আলাদা ফিঙ্গারপ্রিন্ট পাবেন কারণ এটি আপনাকে কীগুলির জন্য দেখায় শে 1 এর চেয়ে এসএসএইচ 2 আরএসএ আঙুলের ছাপ নেবে it এডাব্লুএসে উত্পন্ন

মজা, আরে? এই স্ক্রিনশটটিতে একই কী এর দুটি অনুলিপি বিভিন্ন আঙ্গুলের ছাপ সহ রয়েছে

উপরের দিকে, test-generatedএডাব্লুএস ইসি 2 ব্যবহার করে তৈরি করা হয়েছিল। test-generated-reuploadedপ্রাইভেট কী এডাব্লুএস থেকে উত্সাহিত, ssh-keygen -yআবার উত্তোলিত এবং পুনরায় আপলোড করা থেকে সর্বজনীন কী । তৃতীয় কী, test-uploadedস্থানীয়ভাবে উত্পন্ন কী ... তবে স্থানীয় ssh-keygen -lআঙুলের ছাপটি b2:2c:86:d6:1e:58:c0:b0:15:97:ab:9b:93:e7:4e:ea

$ ssh-keygen -l -f theprivatekey
2048 b2:2c:86:d6:1e:58:c0:b0:15:97:ab:9b:93:e7:4e:ea
$ openssl pkey -in theprivatekey -pubout -outform DER | openssl md5 -c
Enter pass phrase for id_landp:
(stdin)= 91:bc:58:1f:ea:5d:51:2d:83:d3:6b:d7:6d:63:06:d2

কী স্থানীয়ভাবে উত্পন্ন

অ্যাডাব্লুএস ফোরামে ড্যানিয়েল দ্বারা প্রদর্শিত হিসাবে আপনি ওপেনএসএসএল ব্যবহার করতে পারেন, আপলোড করা পাবলিক কীগুলির জন্য আঙুলের ছাপগুলি দেখানোর জন্য ডাবলু দ্বারা ব্যবহৃত ফর্মটিতে আঙুলের ছাপ তৈরি করতে (এসএসএইচ 2 এমডি 5), যেমন:

7a:58:3a:a3:df:ba:a3:09:be:b5:b4:0b:f5:5b:09:a0

তারা ব্যক্তিগত কী থেকে পাবলিক অংশটি বের করে এবং এটি ব্যবহার করে হ্যাশ করে উত্পন্ন করা যেতে পারে:

openssl pkey -in id_rsa -pubout -outform DER | openssl md5 -c

এডাব্লুএসে উত্পন্ন কীগুলি

যদি এডাব্লুএস কনসোলে প্রদর্শিত ফিঙ্গারপ্রিন্টটি দীর্ঘ হয় তবে এটি এডাব্লুএসে উত্পন্ন একটি ব্যক্তিগত কী ছিল, যেমন:

ea:47:42:52:2c:25:43:76:65:f4:67:76:b9:70:b4:64:12:00:e4:5a

এই ক্ষেত্রে আপনাকে নীচের কমান্ডটি ব্যবহার করতে হবে, ডাবল ডাবলির দ্বারা এডাব্লুএস ফোরামেও প্রাইভেট কী এর উপর ভিত্তি করে শ 1 হ্যাশ তৈরি করতে হবে:

openssl pkcs8 -in aws_private.pem -nocrypt -topk8 -outform DER | openssl sha1 -c

ডাউনলোড করা এডাব্লুএস-উত্পাদিত ব্যক্তিগত কী / শংসাপত্র ফাইলে। এটি ওপেনএসএসএইচ ফর্ম্যাটে রূপান্তরিত কীগুলিতে কাজ করবে।

তথ্যসূত্র

দেখা:


4
এ সম্পর্কে এডাব্লুএসের অনুপস্থিত স্বচ্ছতার জন্য দুঃখের বিষয়, তারা কীগুলি যাচাই করা আরও শক্ত করে তুলতে একটি সম্ভাব্য সুরক্ষা লঙ্ঘন করছে
জাইমে হাবলুটজেল

দুর্দান্ত উত্তর! প্রাথমিক উপর sshকমান্ড আরো সাম্প্রতিক সংস্করণের সাথে আপনি MD5 বিন্যাস সেটি নির্ধারণের জন্য একটি -E বিকল্প প্রয়োজন: ssh-keygen -E md5 -l -f id_rsa
রিচভেল

13

আপনার যদি কেবল সর্বজনীন কী থাকে তবে আপনি নীচে AWS ফিঙ্গারপ্রিন্ট তৈরি করতে পারেন:

ssh-keygen -e -f id_rsa.pub -m pkcs8 | openssl pkey -pubin -outform der | openssl md5 -c

2

সেখানে ডেস্কটপ AWS ডক্সে একটি সম্পদ এর http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#verify-key-pair-fingerprints

আপনি যদি আপনার কী জুটি এডাব্লুএস ব্যবহার করে তৈরি করেন তবে আপনি ব্যক্তিগত কী ফাইল থেকে আঙুলের ছাপ তৈরি করতে ওপেনএসএসএল সরঞ্জামগুলি ব্যবহার করতে পারেন:

কপি

$ openssl pkcs8 -in path_to_private_key -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c

যদি আপনি একটি তৃতীয় পক্ষের সরঞ্জাম ব্যবহার করে আপনার কী জুটি তৈরি করে থাকেন এবং AWS এ সর্বজনীন কী আপলোড করেন তবে আপনি নিজের স্থানীয় মেশিনে প্রাইভেট কী থেকে আঙুলের ছাপ তৈরি করতে ওপেনএসএসএল সরঞ্জামগুলি ব্যবহার করতে পারেন:

কপি

$ openssl rsa -in path_to_private_key -pubout -outform DER | openssl md5 -c

কনসোলটিতে প্রদর্শিত আঙুলের ছাপটির সাথে আউটপুটটি মিলবে।


2

এটি আমি ব্যবহার করি:

openssl rsa -RSAPublicKey_in -in <(ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PEM) -inform PEM -outform DER 2>/dev/null | openssl md5 -c | awk '{print $2}'

এটি উপরের কিছুটির অনুরূপ, পাবলিক কী থেকে ফিঙ্গারপ্রিন্ট উত্পন্ন করে।


1

আমরা যারা পাইথন ব্যবহার করি তাদের জন্য

from Crypto.PublicKey import RSA
import hashlib
import base64

#Load your key from disk, or a string, or generate.
my_key = RSA.importKey(open(my_rsa_private_key, 'r').read())

# Normal md5 fingerprint
fp_plain = hashlib.md5(base64.b64decode(my_key.exportKey('OpenSSH').strip().split()[1].encode('ascii'))).hexdigest()
print ':'.join(a+b for a,b in zip(fp_plain[::2], fp_plain[1::2]))

#AWS' EC2 fingerprint
public_only_key = RSA.importKey(my_key.exportKey('OpenSSH'))
fp_plain = hashlib.md5(public_only_key.exportKey('DER')).hexdigest()
print ':'.join(a+b for a,b in zip(fp_plain[::2], fp_plain[1::2]))

দুর্ভাগ্যক্রমে এটি আমার ত্রুটি সহ 10.11 ম্যাকোজে সর্বশেষ হোমব্রিউ পাইথন 2.7.13 ব্যবহার করে ব্যর্থ হয়েছিল:ValueError: PEM encryption format not supported.
রিচভেল

রিচভেল, আমি ত্রুটিটি পুনরুত্পাদন করতে পারি না। আমি স্রেফ পরীক্ষিত হ'ল ম্যাকোস 10.12 তে হোমুউরুউ পাইথনটি ২.7.১৩ ব্যবহার করে একটি ভার্চুয়ালেনভে এবং এটি ঠিক কাজ করেছে। যদি আমার অনুমান করতে হয় তবে পাইক্রিপ্টো-র জন্য কিছু সি প্রয়োজনীয়তা আপনার জন্য পূরণ করা হয়নি। সম্ভবত এটি সাহায্য করতে পারে?
অ্যান্ডি

1
#!/bin/bash
key_file=$1
if [[ -n $key_pub_file ]]; then
    ssh-keygen -e -f $key_pub_file -m pkcs8 | openssl pkey -pubin -outform der | openssl md5 -c
else
    echo "pass the pub file as argument"
fi

এখানে আমি ব্যবহার করি এমন একটি স্ক্রিপ্ট, theভির স্ক্রিপ্টের পথটি যুক্ত করুন। উত্তরের জন্য জে.ডোকে ধন্যবাদ


0

কেবলমাত্র যদি এটি কার্যকর হতে পারে: https://ssh-vault.com/post/fingerprint/

উদাহরণ স্বরূপ:

$ ssh-vault -u bob -f

এডাব্লুএস ব্যবহার করা ফর্ম্যাটটির সাথে মেলে ব্যবহারকারীর ববটির জন্য ফিঙ্গারপ্রিন্ট মুদ্রণ করবে।


0

জাভা (বাউন্সিস্টল ব্যবহার করে)। যদি এডাব্লুএস কনসোল সংক্ষিপ্ত কীগুলি প্রদর্শন করে তবে MD5 দিয়ে চেষ্টা করুন। (SHA1: 20 বাইট, MD5: 16 বাইট)

  /**
   * @return the SHA1 digest of the DER encoded RSA private key, e.g. 16:61:7d:1c:e7:d1:3b:93:b6:81:bf:64:7a:a0:38:fa:b6:6c:9e:e4
   */
  private String getAwsFingerprint(File rsaPrivateKeyFileFromAws) throws Exception {
    try(FileReader reader = new FileReader(rsaPrivateKeyFileFromAws)) {
      java.security.KeyPair keyPair = new JcaPEMKeyConverter().getKeyPair((PEMKeyPair) new PEMParser(reader).readObject());
      String hex = Hex.toHexString(MessageDigest.getInstance("SHA1").digest(keyPair.getPrivate().getEncoded()));
      StringBuilder sb = new StringBuilder();
      for(int i = 0; i < hex.length();) {
        sb.append(hex.charAt(i++));
        sb.append(hex.charAt(i++));
        sb.append(i % 2 == 0 && i != hex.length() ? ":" : "");
      }
      return sb.toString();
    }
  }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.