এসএসএইচের পরিচিত_হোস্ট ফাইল থেকে কোনও নির্দিষ্ট হোস্ট কী সরিয়ে ফেলা সম্ভব?


309

এসএসএইচের পরিচিত_হোস্ট ফাইল থেকে কোনও নির্দিষ্ট হোস্ট কী সরিয়ে ফেলা সম্ভব?

আমি সাধারণত পুরো known_hostsফাইলটি মুছতে শেষ করি , যা করতে আমার কোনও সমস্যা নেই, তবে কৌতূহলের বাইরে, কেবল একটি একক প্রবেশিকা সরিয়ে নেওয়া কি সম্ভব?

আমি known_hostsফাইলটি খুললাম , তবে আমি এর বিষয়বস্তু বোঝার জন্য লড়াই করছি।

নীচে আমি যে বার্তার মুখোমুখি হয়েছিলাম, যা আমাকে এই প্রশ্ন জিজ্ঞাসা করতে পরিচালিত করেছিল:

Add correct host key in /home/wissen16/.ssh/known_hosts to get rid of this message.
Offending key in /home/wissen16/.ssh/known_hosts:1
RSA host key for foo.com has changed and you have requested strict checking.
Host key verification failed.

উত্তর:


514

পরিচিত_হোস্টগুলি থেকে এন্ট্রিগুলি সরাতে এই আদেশটি ব্যবহার করুন:

ssh-keygen -R hostname

21
এটি আইপি ঠিকানার সাথেও কাজ করে। উদাহরণস্বরূপ, আমার ওয়েব সার্ভারের জন্য আমার একটি ডিএনএস হোস্ট শর্টকাট রয়েছে। কাস্টম হোস্টনাম এবং আইপি ঠিকানার কীগুলির মধ্যে আমার যে দ্বন্দ্ব ছিল তা মুছে ফেলতে, আমাকে উভয়ের জন্য এন্ট্রিগুলি সরিয়ে ফেলতে হয়েছিল o সুতরাং ssh-keygen -R xxx.xxx.xxx.xxx।
স্ট্রেঞ্জএলেমেন্ট

যেমন @ স্ট্রেঞ্জএলিমেন্ট বলেছে, কিছুটা সময় পজিশনযুক্ত যে আপনাকে হোস্ট নাম বাদে আইপি হোস্টও সরিয়ে ফেলতে হবে।
গঞ্জালো কও

4
এছাড়াও, এটি স্বয়ংক্রিয়ভাবে একটি ব্যাকআপ রাখে (আমার ওএসএক্স মেশিনে:, Original contents retained as /Users/nha/.ssh/known_hosts.oldএটি উবুন্টুর জন্য একই বলে ধরে নি)।
nha

17
এছাড়াও, আপনি যদি ssh-keygen -R [ssh.sssshh.com]:1234
মানহীন

এই প্রশ্নের জন্য সেরা উত্তর।
মনোমুগ্ধকর

32

হ্যাঁ, আপনি কেবল একটি চাবি সরাতে পারেন। কেবল এডিটরে এটি খুলুন এবং আপত্তিজনক লাইনটি মুছুন। ত্রুটি বার্তায় কোলনের পরে নম্বরটি হ'ল লাইন নম্বর, সুতরাং এটি মুছে ফেলার লাইন - আপনার উদাহরণের 1 লাইন ..


1
আমার কোনও ধারণা ছিল না যে এটি লাইন নম্বরটি চিহ্নিত করেছে, এটি অবিশ্বাস্যভাবে সহায়ক।
deltree

19

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

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

vim ~/.ssh/known_hosts

এবং আঘাত

dd

তারপর এটি সংরক্ষণ করুন।


আপনি ব্যবহার করতে পারেন: লাইন নম্বরগুলি দেখানোর জন্য ভিউতে নিম সেট করুন। তক্কাত উত্তর যাইহোক সেরা।
জাভিয়ের রিভেরা

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

3

Ssh-keygen -R হোস্টনেম ব্যবহার করা সর্বদা কার্যকর হবে না। আপনার কাছে যদি এসএসএইচের একটি নতুন সংস্করণ থাকে যা ssh-এজেন্ট হাইজ্যাকিং প্রতিরোধের জন্য হোস্টনামগুলিকে "লুকিয়ে" রাখে, স্পষ্টতই ssh-keygen হোস্টনামটি আনসাশ করতে অক্ষম।

উদাহরণস্বরূপ, আমার কাছে বিল্ড-নোড -00 নামে একটি হোস্ট আছে এবং আমি এটিতে সংযুক্ত হয়ে কীটি গ্রহণ করেছি। আমি তখন এটিকে স্ক্র্যাচ থেকে পুনর্নির্মাণ করব, একটি নতুন হোস্ট ফিঙ্গারপ্রিন্ট পেয়েছি এবং আমি আবার সংযোগ দেওয়ার চেষ্টা করব, আমি একটি সতর্কতা পেয়ে যাব যে লাইন এক্স-এ বিরোধ আছে (বলুন 3)। আমি দৌড়েছি ssh-keygen -R hostname, তবে পরের বার সংযোগ দেওয়ার চেষ্টা করার পরেও আমি একটি সতর্কতা পেয়েছি যে কোনও দ্বন্দ্ব রয়েছে। আমি কেবল ফাইলটি পরীক্ষা করে দেখতে পেলাম যে হোস্টনামটি ধাবিত হয়েছে এবং [1] Bu4Ch@R@4D0M57uFFপাঠযোগ্য হোস্টনামের পরিবর্তে প্রদর্শিত হয়েছে।

এই ক্ষেত্রে আপত্তিজনক হোস্টটিকে সফলভাবে সরিয়ে ফেলার একমাত্র উপায় ছিল ব্যবহার করা

sed -i 'xd' ~/.ssh/known_hosts

এই পদক্ষেপটি আরও একধাপ এগিয়ে নিয়ে যাওয়ার জন্য আপনি ভুল লাইনটি মুছে ফেলার ক্ষেত্রে আপনি পরিচিত_হোস্টগুলির ব্যাকআপ তৈরি করতে ইচ্ছুক হতে পারেন, এক্ষেত্রে কেবল -i বিকল্পটিতে একটি .bak (বা কোনও এক্সটেনশন) যুক্ত করুন যার সাথে একটি ব্যাকআপ তৈরি করতে পারে এক্সটেনশান। Ssh-keygen ব্যবহার করে এটি স্বয়ংক্রিয়ভাবে হয়।

sed -i.bak 'xd' ~/.ssh/known_hosts

5
এটি সঠিক নয়। ssh-keygen -R {hostname}হোস্ট-নেমগুলি 'লুকানো' (হ্যাশ) থাকা অবস্থায়ও কাজ করবে। তবুও, হ্যাঁ, কেউ সংখ্যাটি দিয়ে প্রবেশটি মুছতে পারে (উদাহরণস্বরূপ, এর মাধ্যমে 10 ম এন্ট্রি sed -i.bak 10d ~/.ssh/known_hosts), তবে এটি সাধারণত প্রয়োজনীয় নয়। এটি হতে পারে যে কোনও মানহীন বন্দর ব্যবহার করা হয়েছিল, সেক্ষেত্রে আপনাকে কমান্ডটি (নোট উদ্ধৃতি) হিসাবে ফর্ম্যাট করতে হতে পারে:ssh-keygen -R '[hostname]:2222'
মাইকেল 25

@ মাইক্রেল_এন জেনে ভাল, এটি খুব সম্ভবত এটি একটি অ-মানক বন্দর ছিল যা আমার প্রবেশিকা সরিয়ে দেওয়ার ক্ষমতাকে প্রভাবিত করেছিল। আমার এও লক্ষ্য করা উচিত যে আপনি যদি হোস্টের জন্য একাধিক ফিঙ্গারপ্রিন্ট গ্রহণ করে থাকেন তবে আমি নিশ্চিত নই যে এটি একবারে সমস্ত প্রবেশিকা অপসারণ করেছে বা একবারে কেবল একটি করে।
ড্রাগন 788

1

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

অথবা, আমি এটি করতে পারি। এখান থেকে: ssh known_hosts ফাইলে আপত্তিজনক কীটি ঠিক করবেন

আমি ক্লাইট যাদু এই বিট পেয়েছি

sed -i 'xd' ~/.ssh/known_hosts

লাইন নম্বর এবং ভয়েলা সহ এক্সটি প্রতিস্থাপন করুন। সেড কাজ না করলে তিনি পার্ল উত্তরও সরবরাহ করেন।


0
sed '/10\.20\.120\.211/d' ~/.ssh/known_hosts > temp && mv temp ~/.ssh/known_hosts

এই ক্ষেত্রে, 10.20.120.211 হোস্টটি আমি আমার পরিচিত_হোস্ট ফাইল থেকে মুছতে চাইছি তা নিশ্চিত করুন যে আপনি (।) এর মতো বিশেষ অক্ষরগুলি থেকে দূরে রয়েছেন make


আইপি অ্যাড্রেস এবং হোস্টনামগুলি পরিচিত হোস্ট ফাইলগুলিতে আর ভার্ব্যাটিম (পরিষ্কার পাঠ্য) সংরক্ষণ করা হয় না, সুতরাং এটি কাজ করবে না। যে কোনও একটি ব্যবহার করা উচিত ssh-keygen -R ...(পছন্দসই); অথবা, sedমুছে ফেলার জন্য নির্দিষ্ট লাইন নম্বর সহ। এছাড়াও, এর sedইন-জায়গা, ব্যবহার -i' option; e.g., কিন্তু -i.bak 10D ~ / .ssh / known_hosts` 10th লাইন মুছে ফেলতে, এবং (ঐচ্ছিকভাবে) একটি ব্যাকআপ দ্বারা suffixed ফাইলে মূল রাখা .bak
মাইকেল 25

0

আপনি নির্দিষ্ট হোস্টটি আপডেট করে এটি অপসারণ এড়াতে পারবেন:

ssh-keyscan -t ecdsa hostname >> ~/.ssh/known_hosts

এইভাবে আপনাকে আবার হোস্টের সাথে সংযুক্ত হতে হবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.