পরিচিত_হোস্টগুলি থেকে কী সরান


129

আমি গত কয়েক সপ্তাহের মধ্যে বেশ কয়েকটি ভার্চুয়াল মেশিন তৈরি করেছি। সমস্যাটি হচ্ছে, .ssh/known_hostsআমাকে মাঝখানে সতর্কতা দেয়। এটি ঘটে কারণ অন্য একটি আঙুলের ছাপ ভার্চুয়াল মেশিন আইপির সাথে সম্পর্কিত।

ইন .ssh/known_hostsফাইল তবে, আমি আইপি এর সাথে সম্পর্কিত রেকর্ড, মাত্র দুটি উদ্ভট, কী মত স্ট্রিং এবং অবশ্যই "ssh-RSA" খুঁজে না।

কীভাবে পুরানো চাবিটি সরিয়ে ফেলা যায় সে সম্পর্কে কারও কোনও ধারণা আছে known_hosts?


7
আপনি যে "উদ্ভট, কী-জাতীয় স্ট্রিংগুলি" উল্লেখ করেছেন তা হ্যাশড হোস্ট / আইপি ঠিকানাগুলি। এটি একটি সুরক্ষা বৈশিষ্ট্য যা কোনও অনুপ্রবেশকারীকে আপনার কোন সিস্টেমে অ্যাক্সেস রয়েছে তা জানতে বাধা দিতে সহায়তা করে। আপনি যদি এটি দেখতে পান তবে আপনার ssh_config HashKnownHosts yesসেট হয়ে গেছে।
ডিবেস্টার

1
আপনি যদি মনে করেন ফাইলের বিষয়বস্তুগুলি খুব বিভ্রান্তিকর, আপনার সম্ভবত লাইন-মোড়ক সক্রিয় রয়েছে। এটি নিষ্ক্রিয় করুন। সমস্ত লাইন হোস্টের নাম বা একটি আইপি ঠিকানা দিয়ে শুরু হয়।
ড্যানিয়েল বি

উত্তর:


89
sed -i '6d' ~/.ssh/known_hosts

6th / .ssh / পরিচিত_hosts: 6 ফাইলটি সংশোধন করবে, 6 তম লাইনটি সরিয়ে দেবে।

আমার মতে, ssh-keygen -Rওপেনশ শক্তি ব্যবহারকারীর পক্ষে ব্যবহার করা একটি উত্তম সমাধান, যখন আপনার নিয়মিত লিনাক্স অ্যাডমিন উপরের পদ্ধতিটি ব্যবহার করে তার / তার দক্ষতাগুলি সতেজ রাখতে আরও ভাল করতে পারে।


18
আমি মনে করি না যে এটির জন্য আপনার কাছে কোনও অফিসিয়াল অ্যাপ্লিকেশন থাকলে ম্যানুয়ালি একটি কনফিগারেশন ফাইল সম্পাদনা করা ভাল পরামর্শ। দ্রুত এবং সুরক্ষিত বিকল্পটি সন্ধান করা ঝুঁকি নেওয়া আপনার পক্ষে সমর্থক হয় না। এটি লোকদের এগিয়ে যেতে এবং /etc/sudoersবিনা সম্পাদনা করার মতো কথা visudo। আপনি যদি আপনার sedদক্ষতাগুলি তীক্ষ্ণ করতে চান তবে আপনার সিস্টেমে গোলমাল না করে এগিয়ে যান।
kraxor

2
"যদি আপনার" => উভয়ের জন্য একটি অফিশিয়াল অ্যাপ্লিকেশন থাকে ssh-keygen -Rএবং sed -i {line}dএটি বেশ "অফিসিয়াল" হয় এবং উভয়ই ভবিষ্যতের জন্য কাজ করবে। ইউটিলিএস এসএস-কীজেন লাইন নম্বর দ্বারা অপসারণের অনুমতি দেয়, উভয়ই পুরোপুরি গ্রহণযোগ্য (কারণ, লাইন সংখ্যাগুলি প্রায়শই সহজেই ডিল করা সহজ হয় এবং আধুনিক তাত্পর্য কেন্দ্রের হোস্ট-নামগুলির সাথে আচরণ করার চেয়ে কম ত্রুটির প্রবণতা)।
মাইকেল 25

2
ক) বিশেষত 6th ষ্ঠ লাইনটি মুছে ফেলা, এটি সমস্তই "কোনও হাত দেখবেন না"। ফাইলটির 6th ষ্ঠ লাইন সম্পর্কে কী তাৎপর্যপূর্ণ তা নিয়ে কোনও ব্যাখ্যা নেই ?! খ) এছাড়াও man ssh-keygenউল্লেখ করেছেন ssh-keygen -R hostname যে ssh-keygen -Rকোনও হোস্টনাম নির্দিষ্ট না করে আপনি সবেমাত্র বলেছিলেন , এবং এর দ্বারা আপনি কী বোঝাতে চেয়েছেন তা ব্যাখ্যা করেন নি।
বার্লোপ

123

সহজ সমাধানটি হ'ল:

rm -f .ssh/known_hosts

ssh ফাইলটি আবার পুনরায় তৈরি করবে, তবে আপনি অন্যান্য হোস্টগুলির জন্য কী পরীক্ষণটি হারাবেন!

বা, আপনি ব্যবহার করতে পারেন:

ssh-keygen -R "hostname"

অথবা ssh "ম্যান-ইন-দ্য-মিডল" বার্তাটি চিহ্নিত_হোস্ট ফাইলের কোন লাইনে আপত্তিজনক ফিঙ্গারপ্রিন্ট রয়েছে তা নির্দেশ করে। ফাইলটি সম্পাদনা করুন, সেই লাইনে লাফিয়ে মুছুন।


55
ssh-keygen -R hostnameখুব কাজ করবে।
মাধ্যাকর্ষণ

6
আমরা যদি সেই ফাইলটি সরিয়ে ফেলি তবে অন্যান্য কীগুলিও মুছে ফেলা হবে।
shgnInc

16
ফাইলটি সরিয়ে ফেলা একটি খারাপ পরামর্শ, এটি কাউকে নতুন পিসি কিনতে বলার মতো কারণ পুরানোটির একটি ভাঙ্গা মাউস রয়েছে। অফিসিয়াল অ্যাপ্লিকেশন দ্বারা সম্পাদিত হতে পারে এমন কোনও ফাইল ম্যানুয়ালি সম্পাদনা করাও একটি খারাপ ধারণা। ssh-keygenবিকল্প একটি মন্তব্যের কারণ যোগ করা হয়েছিল, কিন্তু কোন ব্যাখ্যা। আমি মনে করি না যে এই উত্তরটি এতগুলি উত্সাহের দাবিদার।
kraxor

12
-1 পুরো "প্রথম পরিচিত লাইনের হোস্ট ফাইলগুলি মুছুন" এর কারণে। এটি প্রস্তাব দেওয়ার জন্য একটি ভয়ানক, ভয়ঙ্কর, ভয়ানক জিনিস এবং এটি সম্পাদনা করা উচিত।
অলিভিয়ার ডুলাক

4
এই দ্রবণটি ওভারকিল। আপত্তিজনক রেখাটি সরিয়ে ফেলুন। এটাই.
ব্লেক ফ্রেডরিক

78

এটির জন্য একটি এসএস-কীজেন স্যুইচ ( -R) রয়েছে।

man ssh-keygen লেখা আছে:

-R হোস্ট-নেম

hostnameকোনও known_hostsফাইল থেকে সম্পর্কিত সমস্ত কী সরিয়ে দেয় । এই বিকল্পটি হ্যাশড হোস্টগুলি মুছতে দরকারী ( -Hউপরের বিকল্পটি দেখুন )।


8
এটি সবচেয়ে সহজ এবং নিরাপদ পদ্ধতি।
মুরগি

দ্রষ্টব্য: এটি জ্ঞাত_হোস্ট ফাইলের অনুমতিগুলি 0600 এ পরিবর্তন করবে you যদি আপনার কোনও অংশীদার হিসাবে ज्ञात_ হোস্ট ফাইল থাকে তবে এটি এতে ভাগ করে নিতে অক্ষম করতে পারে।
জিরি ক্লাউদা

এবং সঠিক এক। এছাড়াও, [localhost]:portবন্ধনীগুলি ব্যবহার করে আমারও করণীয় ছিল কারণ আমি অনুমান করে একটি কাস্টম পোর্ট ব্যবহার করেছি = /। অন্যরা যেমন বলেছে, আমি আমার ক্ষণস্থায়ী / পরীক্ষার সিস্টেম বিকাশের জন্য এসএসএইচ কী-চেকিং পদ্ধতিরও ব্যবহার করব।
26:58

18

সতর্কতা আপনাকে জানা হোস্ট ফাইলের সঠিক লাইনটি বলবে।

এখানে একটি উদাহরণ:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for foo-bar.net has changed,
and the key for the corresponding IP address 127.0.0.1
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in /home/user/.ssh/known_hosts:6
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

/home/user/.ssh/known_hosts:6অংশটি দেখুন ? এটি ফাইল এবং লাইন নম্বর নির্দিষ্ট করে।


10

এই সমস্যা থেকে মুক্তি পেতে আপনার নীচের কমান্ডটি চালনা করতে হবে। টার্মিনালটি খুলুন এবং নিম্নলিখিত কমান্ডটি টাইপ করুন:

নীচের সমস্ত উদাহরণের জন্য কেবল -R এর পরে মানটি প্রতিস্থাপন করুন

ssh-keygen -R server-name
ssh-keygen -R server.ip.addre.ss
ssh-keygen -R 202.54.1.5
ssh-keygen -R server1.example.com

এই পদ্ধতিটি ইতিমধ্যে পূর্ববর্তী উত্তরে পরামর্শ দেওয়া হয়েছে। আপনার উত্তর ভিন্ন কি আপনি প্রসারিত করতে পারেন?
বুর্গি

@ বুর্গি - এই উত্তরটি ssh-keygen -Rএখন পর্যন্ত অন্য যে কোনও উত্তরের চেয়ে সিনট্যাক্স সম্পর্কে আরও বিশদ দেয় । এটি উদাহরণস্বরূপ দেখায় যে আপনি পরে কী লিখতে পারেন -R। সুতরাং এই উত্তরটি সার্থক, যদিও এটি সম্পূর্ণ নতুন উত্তর নয়।
ইয়েজ

@ ইয়েজ আমার মন্তব্য পর্যালোচনার অংশ হিসাবে করা হয়েছিল। এই সময়ে (18 মাস আগে) আমি ভেবেছিলাম এটিকে আরও উন্নত করতে প্রশ্নটির কিছুটা সহায়তা দরকার।
বুর্গী

8

আপনি ইউজারকেনডহোস্টফিল এবং স্ট্রাইকটহস্টকিচেকিং পতাকা ব্যবহার করে জ্ঞাত_হোস্ট ফাইলটি পরীক্ষা না করার জন্য এসএসকে নির্দেশ দিতে পারেন।

এই ক্ষেত্রে:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com

ব্যবহারের স্বাচ্ছন্দ্যের জন্য আপনি এটির নাম দিতে পারেন:

alias boldssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

আপনি যখনই নিশ্চিত হন যে আপনি সার্ভারের শংসাপত্রের উপর আস্থা রেখেছেন এখন আপনি কেবল বোল্ডশ করতে পারেন।


8
কি ভয়াবহ ধারণা। সুরক্ষার একটি স্তর স্থায়ীভাবে অক্ষম করুন কেবলমাত্র আপনি ~/.ssh/known_hostsআপ টু ডেট রাখার কারণে খুব অলস ? শুধু এগিয়ে গিয়ে ব্যবহার telnetকরবেন না কেন ? "আপনি যখনই নিশ্চিত হন" - আপনি যদি নিশ্চিত হন তবে এমআইটিএম আক্রমণ কী তা আপনার কোনও ধারণা নেই এবং সম্ভবত কিছু ভাল সাহিত্য পড়ে আপনার কিছুটা সময় ব্যয় করা উচিত।
kraxor

2
ওপির প্রশ্নের ভিত্তিতে আমি মনে করি এটি একটি বৈধ উত্তর। কখনও কখনও আপনার একটি পরীক্ষা সিস্টেম থাকে যা আপনি প্রচুর ভিএম তৈরি / ধ্বংস করে চলেছেন। (আরএইচসিই পরীক্ষার প্রস্তুতি নেওয়ার সময় আমি এই মুহূর্তে এটি করছি)) কোনও সুরক্ষা জড়িত থাকতে পারে না। সুরক্ষা সম্পর্কিত প্রভাবগুলি লক্ষ করা দুর্দান্ত, তবে আমি মনে করি না এটি একটি "ভয়ঙ্কর ধারণা" হিসাবে লেবেল করা উচিত।
রিক চ্যাথাম


3

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

  • সাধারণ এসএসএইচ হোস্ট স্বাক্ষর অপসারণ আদেশ:

    ssh-keygen -R example.com
    
  • কমপ্লেক্স ssh কী অপসারণ, উদাহরণস্বরূপ আপনি অ স্ট্যান্ডার্ড পোর্ট 222 এ ssh এর সাথে সংযুক্ত হন:

    ssh example.com -p 222
    

এবং আপনি সতর্কতা পেয়েছেন এবং এটি সরাতে আপনার বর্গাকার বন্ধনী কোলন পোর্ট নম্বর ব্যবহার করা দরকার:

    ssh-keygen -R [example.com]:222

আশা করি এটি অ-মানক কনফিগারেশন ব্যবহারকারীদের জন্য সহায়তা করে।


ঠিক আমি যা খুঁজছিলাম। ধন্যবাদ!
এক্সেল

1

প্রাক্তন সম্পাদক ব্যবহার করে এখানে একটি পদ্ধতি:

ex +6d -scwq ~/.ssh/known_hosts

যেখানে 6th ষ্ঠ বার্তাটি সতর্কতার বার্তায় উল্লিখিত আপনার লাইন নম্বর। যেমন এই এক:

আইপি-র জন্য / হোম / ইউজার / এসএস / অজানা_ হোস্টগুলি: <<== লাইন নম্বর


সাধারণভাবে, এটি ব্যবহার করার জন্য পরামর্শ দেওয়া হচ্ছেex থেকে ফাইল সম্পাদনা অ ইন্টারেক্টিভ পরিবর্তে sedযা আরো একটি হল, এস tream ইডি itor এবং তার -iপরামিতি, যা কোনো অ-মানক FreeBSD 'র এক্সটেনশান।


0

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


0

আপনি পরিচিত হোস্টগুলি থেকে একটি একক লাইনও মুছে ফেলতে পারেন যেমন rmphanhost 111 (111 সরানোর জন্য লাইনটি):

#! /usr/bin/env ruby
line = ARGV[0] || raise("gimme line to remove")
hosts = File.expand_path("~/.ssh/known_hosts")
content = File.readlines(hosts)
removed = content.delete_at line.to_i - 1
puts "Removed:\n#{removed}"
File.open(hosts, 'w'){|f| f.write content * ""}

এটি rmknownhostআপনার ফোল্ডারের মতো সংরক্ষণ করুন PATH


কোনও দেওয়া টেক্সট এডিটরে এটি করার মাধ্যমে এর সুবিধা কী? কীভাবে স্যুডারগুলিকে ভিজুডো দিয়ে সম্পাদনা করতে হয়, সেভাবে এটি না করার কোনও কারণ আছে?
অ্যান্ডি লেস্টার

কীসের সাথে এলো ডিস্ট্রস? উবুন্টু এটি আছে বলে মনে হয় না।
ফ্লিকফার্লি

সুবিধাটি হ'ল এটি স্বয়ংক্রিয় এবং দ্রুত / এটি একটি পৃথক বাইনারি আপনি যুক্ত করুন
গ্রোসার

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

1
বা কেবল এটি আপনার ~ / .Bashrc- এ যুক্ত করুন sshdel() { sed -i "${@}d" ~/.ssh/known_hosts; }এবং এর সাথে কল করুন sshdel [line number]। কোনও রুবি, কোনও বাইনারি, কোনও উদ্বেগ নেই।
রুবিনোরেলগুলি

0

এটি একটি পাঠ্য ফাইল। আপনি সহজেই vi (এম) দিয়ে সম্পাদনা করতে পারেন এবং প্রশ্নে থাকা লাইনটি মুছে ফেলতে (ডিডি) করতে পারেন এবং ফাইলটি (ডাব্লিউকিউ) সংরক্ষণ করতে পারেন। তবে হোস্ট অপসারণের জন্য যদি একটি নির্দিষ্ট কমান্ড থাকে তবে এটি সম্ভবত নিরাপদ পদ্ধতি।


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

আমি যে "সুরক্ষা "টির উল্লেখ করছি।) অন্যান্য ফাইলগুলিতে নির্ভরযোগ্য তথ্য মুছে ফেলার / ভুলে যাওয়া না জানার (যদি থাকে) এবং ২) দুর্ঘটনাক্রমে প্রয়োজনের চেয়ে কম বা কম মুছে ফেলা, এইভাবে ফাইলটি ভেঙে দেওয়া।
রায়ান গ্রিগস 18
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.