কী_লোড_পাবলিক: অবৈধ ফর্ম্যাট


98

আমি পাসফ্রেজের সাহায্যে একটি 4096 বিট আরএসএ -2 কী তৈরি করতে পুটি কী জেনারেটর ব্যবহার করেছি।

আমি .ppk এবং একটি ওপেনএসএসএল ফর্ম্যাট সর্বজনীন কী সংরক্ষণ করি। পুট্টি ফর্ম্যাট পাবলিক কী কাজ করে না।

যাইহোক, আমার ত্রুটি নীচে রয়েছে:

$ ssh -T git@github.com
key_load_public: invalid format
Enter passphrase for key '/c/Users/Dan/.ssh/id_rsa':
Hi Dan! You've successfully authenticated, but GitHub does not provide shell access.

ব্যাপারটা কি?

আমি কীগুলি লোড করতে পেজেন্ট ব্যবহার করি এবং এসএসএস সংযোগটি চেষ্টা করার জন্য আমি গিট ব্যাশ ব্যবহার করি। আমি কীটি গিটহাবের মধ্যে চাপিয়েছি, আমি কী ভুল করছি তা নিশ্চিত নয়।

আমি একটি নতুন লাইন যুক্ত করার চেষ্টা করেছি এবং গিটহাবে নতুন লাইন যুক্ত করার চেষ্টা করেছি


আপনি কেন মনে করেন এটি কাজ করে না? এটি সফলভাবে প্রমাণিত বলেছে ।
রোল্যান্ড স্মিথ

4
@ রোল্যান্ডস্মিথ key_load_public: invalid formatপাসফ্রেজে প্রবেশের আগে কমান্ডটি কার্যকর করার সাথে সাথেই এটি আমাকে বলছে ?
জর্দান জিএস

4
করুন: আরও তথ্য পেতে 'ssh -vvv -T git@github.com', সম্ভবত ~ / .ssh / ज्ञात_হোস্টগুলি খারাপ - ssh গিথুবের পাবলিক কী খুঁজছেন। কী ফাইলটির ফর্ম্যাটটি খুঁজে পেতে আপনি 'ফাইল কী' চালনা করতে পারেন।
মোশ

উত্তর:


181

রোল্যান্ড যেমন তাদের উত্তরে উল্লেখ করেছে, এটি একটি সতর্কতা যে ssh-agentএটি পাবলিক কীটির ফর্ম্যাট বুঝতে পারে না এবং তারপরেও, পাবলিক কী স্থানীয়ভাবে ব্যবহৃত হবে না।

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

দ্রষ্টব্য: আমার ব্যাখ্যার পুরোপুরি, আমি যে কী ফাইলগুলি ব্যবহার / উত্পন্ন করব id_rsaতার যথাযথ এক্সটেনশনের সাথে নাম দেওয়া হবে । তদ্ব্যতীত, অনুলিপি-পেস্ট সুবিধার জন্য, কীগুলির প্যারেন্ট ফোল্ডারটি ধরে নেওয়া হবে ~/.ssh/। আপনার প্রয়োজন অনুসারে এই বিবরণগুলি সামঞ্জস্য করুন।

ফর্ম্যাটস

সম্পর্কিত পুটিটি ডকুমেন্টেশনের লিঙ্ক

এসএসএইচ -২

আপনি "পাবলিক কী সংরক্ষণ করুন" বোতামটি ব্যবহার করে পটিটিওয়াই কী জেনারেটর ব্যবহার করে কোনও কী সংরক্ষণ করলে এটি আরএফসি 4716 দ্বারা সংজ্ঞায়িত ফর্ম্যাটে সংরক্ষণ করা হবে ।

উদাহরণ:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "github-example-key"
AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYF
i2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcp
pY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3
oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEA
ip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9
tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw==
---- END SSH2 PUBLIC KEY ----

ওপেনএসএইচ

জনপ্রিয় বিশ্বাসের বিপরীতে, এই ফর্ম্যাটটি জেনারেটর দ্বারা সংরক্ষণ করা যায় না। তবে এটি "ওপেনএসএইচ অনুমোদিত_কিজ ফাইলগুলিতে আটকানোর জন্য সর্বজনীন কী" শিরোনামে পাঠ্য বাক্সে উত্পন্ন এবং দেখানো হয়েছে। এটিকে ফাইল হিসাবে সংরক্ষণ করতে আপনাকে পাঠ্য বাক্স থেকে ম্যানুয়ালি এটি অনুলিপি করতে হবে এবং এটি একটি নতুন পাঠ্য ফাইলে পেস্ট করতে হবে।

উপরে প্রদর্শিত কীটির জন্য, এটি হবে:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw== github-example-key

কীটির ফর্ম্যাটটি সহজ ssh-rsa <signature> <comment>এবং SSH-2 ফর্ম্যাট ফাইলটি পুনর্বিন্যাস করে তৈরি করা যেতে পারে can

সর্বজনীন কীগুলি পুনরায় তৈরি করা হচ্ছে

যদি আপনি এটি ব্যবহার করে থাকেন তবে আপনার ssh-agentসম্ভবত এতে অ্যাক্সেসও থাকবে ssh-keygen

আপনার যদি আপনার ওপেনএসএইচ প্রাইভেট কী ( id_rsaফাইল) থাকে তবে আপনি ওপেনএসএসএইচ পাবলিক কী ফাইলটি ব্যবহার করে জেনারেট করতে পারেন:

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

আপনার যদি কেবল পুটি প্রাইভেট কী ( id_rsa.ppkফাইল) থাকে তবে আপনাকে প্রথমে এটি রূপান্তর করতে হবে।

  1. পিটিটিওয়াই কী জেনারেটরটি খুলুন
  2. মেনু বারে "ফাইল"> "ব্যক্তিগত কী লোড করুন" ক্লিক করুন
  3. আপনার id_rsa.ppkফাইল নির্বাচন করুন
  4. মেনু বারে, "রূপান্তরগুলি"> "ওপেনএসএইচ রফতানি করুন" ক্লিক করুন
  5. ফাইলটি id_rsa(কোনও এক্সটেনশন ছাড়াই) সংরক্ষণ করুন

এখন আপনার কাছে একটি ওপেনএসএইচ প্রাইভেট কী রয়েছে, আপনি কীটির ssh-keygenম্যানিপুলেশনগুলি সম্পাদন করতে উপরের সরঞ্জামটি ব্যবহার করতে পারেন ।

বোনাস: পিকেসিএস # 1 পিইএম-এনকোডড পাবলিক কী ফর্ম্যাট

সত্যি কথা বলতে কি, আমি জানিনা যে এই কীটি কীভাবে ব্যবহৃত হয়েছিল কারণ এটির আমার প্রয়োজন হয়নি। তবে আমার নোটগুলিতে আমি এটি বছরের পর বছর ধরে জমেছি এবং এটি আমি পুষ্টি হিসাবে দেই। ফাইলটি এর মতো দেখাবে:

-----BEGIN RSA PUBLIC KEY-----
MIIBCAKCAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5Ew
gnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8D
Gm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48
ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8
hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D
6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElwIBJQ==
-----END RSA PUBLIC KEY-----

এই ফাইলটি ওপেনএসএসএইচ প্রাইভেট কী ব্যবহার করে উত্পন্ন করা যেতে পারে (উপরে "পুনরায় জনিত কীগুলি পুনরায় তৈরি করা হয়েছে") ব্যবহার করে:

ssh-keygen -f ~/.ssh/id_rsa -y -e -m pem > ~/.ssh/id_rsa.pem

বিকল্পভাবে, আপনি ব্যবহার করে একটি ওপেনএসএইচ পাবলিক কী ব্যবহার করতে পারেন:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m pem > ~/.ssh/id_rsa.pem

তথ্যসূত্র:


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

@ Programmer1994 রূপান্তর নির্দেশাবলী .ppkএকটি .pubফাইলে রূপান্তর করার পদক্ষেপ হিসাবে অন্তর্ভুক্ত ছিল । id_rsaঅন্য কোনও প্রোগ্রাম দ্বারা বাস্তবে ব্যবহৃত মধ্যস্থতাকারী ব্যক্তিগত কী এর পার্শ্ব প্রতিক্রিয়াটিকে উপেক্ষা করা হয়েছিল। আমি যে কোনও অস্পষ্টতাকে সাফ করার জন্য "পছন্দসই এক্সটেনশনহীন" ভাষাটিকে "(এক্সটেনশন ছাড়াই)" এ পরিবর্তন করেছি। আমি যখনই এই উত্তরটির দিকে ফিরে তাকাই তখন কিছু অভিযোগের কথা বলার সুযোগটিও আমি নিয়েছিলাম। আপনার অবদানের জন্য ধন্যবাদ.
সাম্যাথোডিংম্যান

উত্তর করার জন্য ধন্যবাদ. আমি আপনার উত্তর "পুনরায় তৈরি পাবলিক কী" বিভাগে কমান্ডটি ব্যবহার করেছি এবং এটি আমার সমস্যার সমাধান করেছে।
desmond13

আপনি পাবলিক কী সম্পর্কে কথা বলেছেন। তবে সমস্যাটি একটি ব্যক্তিগত কী id_rsa থেকে উত্পন্ন হয়েছে। এসএসএসের মাধ্যমে গিট সার্ভার অ্যাক্সেস করার চেষ্টা করার সময় আমি যখন আমার ব্যক্তিগত এসএস কী ব্যবহার করি তখন আমি একই সতর্কতা পাই।
আহ্নবিজক্যাড

4
ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pubএটি এটি সমাধান। ধন্যবাদ!
দ্বোজা

15

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

পদক্ষেপ 1: সর্বশেষ পুটটিজেন এবং খোলা পুটটিজেন ডাউনলোড করুন

পদক্ষেপ 2: আপনার বিদ্যমান ব্যক্তিগত কী ফাইলটি লোড করুন, নীচের চিত্রটি দেখুন

একটি বিদ্যমান ব্যক্তিগত কী লোড করুন

পদক্ষেপ 3: জিজ্ঞাসা করা হলে কি জন্য পাসফ্রেজ লিখুন এবং ঠিক আছে চাপুন

পাসফ্রেজ প্রবেশ করান

পদক্ষেপ 4: নীচের চিত্রের মতো দেখানো হয়েছে "রূপান্তর" মেনু ট্যাবটি নির্বাচন করুন এবং "ওপেনএসএইচ এক্সপোর্ট রফতানি করুন" নির্বাচন করুন

ওপেনএসএসএইচ ফাইল সংরক্ষণ করুন

নতুন ব্যক্তিগত কী ফাইলটি পছন্দের স্থানে সংরক্ষণ করুন এবং সে অনুযায়ী ব্যবহার করুন।


4
আমি load pubkey invalid formatসতর্কতাটি পেয়েছি , যখন আমি এক্সপোর্ট ওপেনএসএইচ কী দিয়ে কীটি রফতানি করি । এক্সপোর্ট ওপেনএসএইচ কী (জোর করে নতুন ফাইল ফর্ম্যাট) ব্যবহার করার সময় এটি চলে গেল ।
এলসামুকো

লিনাক্সে, apt install putty-toolsবা yum install puttyতারপরেsudo puttygen private.ppk -O private-openssh-new -o private.pem
টাইপেল

7

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

আপনার সার্বজনীন কী স্ট্রিংটি একটি লাইন হিসাবে গঠিত তা নিশ্চিত করুন।


7

টিএল; ডিআর: এছাড়াও নিশ্চিত করুন যে আপনার id_rsa.pubআসকি / ইউটিএফ -8 এ রয়েছে।

আমার একই সমস্যা ছিল, তবে পাঠ্য এনকোডিংয়ের কারণে এককভাবে গৃহীত উত্তরটি কাজ করে নি, যা অতিরিক্ত, সহজেই মিস করা সমস্যা ছিল।

আমি যখন দৌড়ান

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

উইন্ডোজ PowerShell, এটা আউটপুট সংরক্ষণ id_rsa.pubমধ্যে হল UTF-16 এলই BOM এনকোডিং, নেই হল UTF-8 । এটি পাওয়ারশেলের কয়েকটি ইনস্টলেশনের সম্পত্তি, যা বিওএম ছাড়াই ইউটিএফ -8 এ একটি ফাইল লেখার জন্য পাওয়ারশেল ব্যবহার করে আলোচিত হয়েছিল । স্পষ্টতই, ওপেনএসএইচ প্রাক্তন পাঠ্য এনকোডিংকে স্বীকৃতি দেয় না এবং একটি অভিন্ন ত্রুটি উত্পন্ন করে:

key_load_public: invalid format

ssh-keygen -f ~/.ssh/id_rsa -yকোনও পাঠ্য সম্পাদককে আউটপুট অনুলিপি করা ও আটকানো এটিকে সমাধান করার সহজ উপায়।

পিএস এটি গৃহীত উত্তরের একটি সংযোজন হতে পারে , তবে আমার এখানে মন্তব্য করার মতো পর্যাপ্ত কর্মফল নেই।


4
যেমন আপনি আবিষ্কার করেছেন, পাইপিং পাওয়ারশেলে আলাদাভাবে কাজ করে। আপনি ssh-keygen -f ~/.ssh/id_rsa -y | ac ~/.ssh/id_rsa.pubপরিবর্তে ব্যবহার করতে হবে।
সমিথোডিংম্যান

5

দেখে মনে হচ্ছে এটি sshআপনার সার্বজনীন কীটি পড়তে পারে না। তবে তাতে কিছু যায় আসে না।

আপনি আপনার পাবলিক কীটি গিথুবে আপলোড করেছেন , তবে আপনি আপনার ব্যক্তিগত কী ব্যবহার করে প্রমাণীকরণ করেছেন । যেমন ফাইল ফাইলটি দেখুন ssh(1)


4
সংক্ষেপে, পুট্টি কী জেনে যান, রূপান্তরগুলি ক্লিক করুন -> এসএসএস কী খুলুন এবং এটি id_rsa এ সংরক্ষণ করুন - নিশ্চিত করুন যে আপনার হোম এনভির ভেরিয়েবলটি আপনি যে .ssh ফোল্ডারে দেখছেন সে দিকে ইশারা করছে, আপনার সিস্টেম থেকে id_rsa ফাইলের অন্যান্য সমস্ত অনুলিপি মুছুন
কলপেশ সনি

2

সরাসরি ব্যক্তিগত কী সংরক্ষণ করার পরিবর্তে রূপান্তরগুলিতে যান এবং এসএসএইচ কী রফতানি করুন। একই সমস্যা ছিল এবং এটি আমার পক্ষে কাজ করেছিল


1

আমি একই সতর্কতা ছিল। এটি একটি খুব পুরানো চাবি ছিল। আমি বর্তমান ওপেনএসএসএইচ 7-তে একটি কী পুনরায় জেনারেট করেছি এবং ত্রুটিটি চলে গেছে।


1

ত্রুটিটি বিভ্রান্তিমূলক - এটি pubkeyএকটি ব্যক্তিগত কী ফাইলের দিকে ইঙ্গিত করার সময় " " বলে ~/.ssh/id_rsa

আমার ক্ষেত্রে এটি কেবল একটি অনুপস্থিত পাবলিক কী ছিল (কারণ আমি এটি কোনও ভল্ট থেকে পুনরুদ্ধার করি নি)।


বিশদ

আমি ~/.ssh/id_rsa.pubস্বয়ংক্রিয় স্ক্রিপ্টগুলি দ্বারা মোতায়েন করা এড়িয়ে চলতাম ।

সমস্ত sshব্যবহার কার্যকর হয়েছে, তবে ত্রুটিটি আমাকে একটি সম্ভাব্য গোলমাল সম্পর্কে ভাবতে বাধ্য করেছে।

মোটেও তা নয় - straceলক্ষ্য করতে সহায়তা করেছে যে ট্রিগারটি আসলে *.pubফাইলটি ছিল:

strace ssh example.com
...
openat(AT_FDCWD, "/home/uvsmtid/.ssh/id_rsa.pub", O_RDONLY) = -1 ENOENT (No such file or directory)
...
write(2, "load pubkey \"/home/uvsmtid/.ssh/"..., 57) = 57
load pubkey "/home/uvsmtid/.ssh/id_rsa": invalid format

0

সুতরাং, আপডেটের পরে আমার একই সমস্যা ছিল। আমি key_fileএক্সটেনশন ছাড়াই পিইএম ব্যবহার করছিলাম এবং কেবল .pemআমার সমস্যা সমাধান করেছি। এখন ফাইলটি key_file.pem


0

যদি আপনি অন্তর্নির্মিত এসএসএইচ দিয়ে উইন্ডোজ 10 ব্যবহার করেন, তবে 2020 আগস্ট পর্যন্ত এটি কেবল ed25519 কীগুলি সমর্থন করে। আপনি key_load_public: invalid formatযেমন একটি আরএসএ কী ব্যবহার করেন তবে ত্রুটিটি পাবেন ।

অনুযায়ী এই GitHub ইস্যু এটা 2020 সালে Windows আপডেটের মাধ্যমে সংশোধন করা উচিত কিছু সময় তাই এক সমাধান মাত্র জাহাজ আপডেটের জন্য অপেক্ষা করতে হয়।

আপনি যদি অপেক্ষা করতে না পারেন, তবে একটি কর্মপরিকল্পনা হল একটি নতুন এডি 25519 কী তৈরি করা, যা যাইহোক ভাল পরামর্শ

> ssh-keygen -o -a 100 -t ed25519

আপনি এটি উদাহরণস্বরূপ গিথুব দিয়ে ব্যবহার করতে পারেন, তবে কিছু পুরানো সিস্টেমগুলি এই আরও নতুন ফর্ম্যাটটিকে সমর্থন করতে পারে না।

আপনার কী তৈরির পরে, আপনি যদি নীচের বৈশিষ্ট্যগুলি ব্যবহার করেন তবে সেগুলি আপডেট করতে ভুলবেন না!

  1. ~\.ssh\config এখনও পুরানো চাবি নির্দেশ করতে পারে।
  2. ssh-addকমান্ডের মাধ্যমে ssh-এজেন্টে নতুন কী যুক্ত করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.