অস্থায়ীভাবে আমার `~ / .ssh / পরিচিত_hosts` ফাইলটি উপেক্ষা করবেন?


48

অস্থায়ীভাবে আমার ~/.ssh/known_hostsফাইলটিকে উপেক্ষা করার কোনও উপায় আছে কি ?

mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$ 

বিঃদ্রঃ:

.. কয়েকটি উত্তর (গুলি) / মন্তব্য (গুলি) দ্বারা আমি বুঝতে পারি যে আমার প্রশ্নটি কিছুটা বিভ্রান্তিকর, তাই এটি সংক্ষিপ্তভাবে প্রত্যাশিত আচরণ), সুতরাং এটি কেন স্বাভাবিক (আমার ক্ষেত্রে) এর পিছনে একটি বৈধ কারণ আছে কেন আমি "এটি উপেক্ষা" দেখতে চান)


9
আপনি ভুল প্রশ্ন জিজ্ঞাসা করছেন। আপনার সমস্যাটি "উপেক্ষা" করা উচিত নয়; আপনার কী হবে এবং তা সমাধান করা উচিত।
মাইকেল হ্যাম্পটন

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

10
@ মিশেলহ্যাম্পটন - আমি ভিএমওয়্যার এবং ভার্চুয়ালবক্স অতিথিদের জন্য আইপি অ্যাড্রেসগুলি পুনরুদ্ধার করায় এটি সব সময় পাই। আমার জন্য, এটি সঠিক প্রশ্ন :)

1
এফডব্লিউআইডাব্লু আমি এই উত্তরটির সন্ধান চালিয়ে যাচ্ছি কারণ আমার ল্যানে আমার একটি সিস্টেম রয়েছে যেখানে আমি একটি প্রারম্ভকালে ডিস্ক এনক্রিপশন পাসওয়ার্ড প্রবেশ করার জন্য একটি ড্রপবার (বিভিন্ন হোস্ট কী সহ) ব্যবহার করি।
জুলান

1
@jww এটি আপনার দৃশ্যের জন্য ভুল প্রশ্ন / সমাধান। পরিবর্তে আপনার আইপি ঠিকানাটি উপেক্ষা করার জন্য এসএসএইচ কনফিগার করা উচিত তবে তবুও হোস্ট কীটি পরীক্ষা করুন। উদাহরণস্বরূপ এখানে দেখুন
জন বেন্টলে 13

উত্তর:


56

আপনি ssh -o StrictHostKeyChecking=noক্ষণে known_hostsক্ষণে পরীক্ষা বন্ধ করতে ব্যবহার করতে পারেন । তবে আমি এর বিরুদ্ধে পরামর্শ দেব হোস্ট কীটি কেন পরিবর্তিত হয়েছে তা আপনার সত্যই পরীক্ষা করা উচিত।

অন্য বিকল্পটি হ'ল ~/.ssh/configপ্রশ্নের মধ্যে আপনার হোস্টের জন্য একটি নির্দিষ্ট এন্ট্রি যুক্ত করা । এটি বৈধ পন্থা হতে পারে যদি আপনার কাছে একটি নির্দিষ্ট হোস্ট থাকে যা প্রতিবার এটি পুনরায় বুট করার সময় নতুন হোস্ট কী উত্পন্ন করে এবং একটি বৈধ কারণে এটি দিনে বেশ কয়েকবার রিবুট হয়।

Host <your problematic host>
  StrictHostKeyChecking no

আচরণটি প্রত্যাশিত) তাই এটি স্বাভাবিক (আমার ক্ষেত্রে)
অ্যালেক্সাস

1
@ অ্যালেক্সাস যদি এটি "প্রত্যাশিত" হয়, তবে আপনি কোনও নির্দিষ্ট হোস্টনাম / আইপিতে বিকল্পটি প্রয়োগ করতে পারেন যার জন্য আপনি এটি প্রত্যাশা করছেন।
ক্রাইলিস-হরতাল-

1
@ অ্যালেক্সাস এবং মনে রাখবেন যে আপনি যদি এটি করেন তবে আপনি ssh সরবরাহ করে এমন সমস্ত সুরক্ষা হারাবেন। আপনি পাশাপাশি টেলনেট ব্যবহার করতে পারেন, কারণ এটি আপনাকে এমআইটিএম করার জন্য এবং আপনার সমস্ত ট্র্যাফিক ক্যাপচার করার জন্য এটি অতি ক্ষুদ্র।
মাইকেল হ্যাম্পটন

1
এটি আর কাজ করে না (কমপক্ষে OpenSSH_5.3p1 এর জন্য)
ড্রিয়েথ

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

31

সম্পূর্ণ POSIX পরিবেশে আপনার জানা হোস্ট ফাইল উপেক্ষা করা, সেট GlobalKnownHostsFileএবং UserKnownHostsFileঅপশন /dev/null:

ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host

StrictHostKeyChecking=noবিকল্পটি সেট করা আপনাকে সংযোগ করার অনুমতি দেবে তবে এসএসএইচ এখনও একটি সতর্কতা প্রদর্শন করবে :

ssh -o StrictHostKeyChecking=no user@host

অন্যরা যেমন উল্লেখ করেছে, অন্তর্নিহিত সমস্যাটি সমাধান করা ভাল better হোস্টগুলি যাচাই করার জন্য আপনি এসএসএইচ শংসাপত্র প্রমাণীকরণ বিবেচনা করতে পারেন।


2
এটি বর্তমানে সর্বোচ্চ আপোভোটেড প্রশ্নের চেয়ে উত্তম উত্তর হতে পারে কারণ এটি পাসওয়ার্ড প্রমাণীকরণ ব্যবহার করতে দেয় যা অন্যথায় অক্ষম করা হবে (অবশ্যই, আপনার পাসওয়ার্ড টাইপ করার আগে আপনি ঠিক কী করছেন ...)
ভিজেড

আমি একটু এখানে বিভ্রান্ত: আপনি করা উচিত নয় এছাড়াও ব্যবহার -o StrictHostKeyChecking=no ছাড়াও-o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null অপশন - একটি চূড়ান্ত উত্তরের জন্য: ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host?
গ্যাব্রিয়েল স্ট্যাপলস


5

আপনি যদি সার্ভারটি পুনরায় ইনস্টল করেন এবং এর ফলে সনাক্তকরণটি পরিবর্তিত হয় তবে আপনাকে কেবল 155 থেকে নির্দিষ্ট লাইনটি মুছতে হবে /Users/alexus/.ssh/known_hostsএবং এগিয়ে যেতে হবে।

আপনি যদি বিভিন্ন ব্যক্তিগত নেটওয়ার্কগুলির মধ্যে স্যুইচ করেন তবে পরিবর্তে সংযোগ করার জন্য আপনার হোস্টনামগুলি ব্যবহার করা উচিত, কারণ এসএসএস ক্লায়েন্ট হোস্ট-নেমের উপর নির্ভর করে কীগুলিও সংরক্ষণ করবে। আপনার এ জাতীয় কিছু যুক্ত করুন /etc/hosts:

10.52.11.171 server1
10.52.11.171 server2

এবং তারপরে ssh server1সাবনেট 1 এর ssh server2সাথে সংযুক্ত থাকাকালীন এবং সাবনেট 2-এ সংযুক্ত থাকাকালীন ব্যবহার করুন। এইভাবে, উভয় সার্ভারে পৃথক হোস্টকি থাকতে পারে।


আপনি যদি দুটি ব্যক্তিগত নেটওয়ার্কের মধ্যে স্যুইচ করেন এবং দুটি একই আইপিতে সংযুক্ত হন তবে কী হবে?
অ্যালেক্সাস

1
আমি আমার উত্তর সম্পাদনা করেছি।
etagenklo

2
@alexus তারপরে আপনার আইপিভি 6 দরকার :) তবে এটি আপনার মূল প্রশ্নে দরকারী তথ্য হতে পারে।
মাইকেল হ্যাম্পটন

2

-o StrictHostKeyChecking=no হোস্ট ইতিমধ্যে পরিচিত_হোস্টস ফাইলটিতে উপস্থিত না থাকলে কেবলমাত্র কাজ করে।

আমি মনে করি এটি ক্লিনার (কোনও সতর্কতা নেই), যদি আপনি ভিএম ক্লোনিংয়ের কারণে হোস্টের কী পরিবর্তিত হতে পারে এবং এই জাতীয় ধরণের হোস্টকে উপেক্ষা করার জন্য এটি প্রত্যাশা করে থাকে:

# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
    ssh-keygen -R ${host_ip}
    echo ${host_key} >>  ~/.ssh/known_hosts
}

# connect as normal way
ssh root@${host_ip} "hostname"

2

কিছু লোক এটিকে ঠিক না বলে বলেছে, আপনি এই কাজটি চালিয়ে দেবেন না, তবে বার বার এম্বেড করা ডিভাইসগুলির পরীক্ষা করার জন্য আমার এটিও দরকার। আপনাকে অক্ষম করতে হবে StrictHostKeyChecking=no, এটি ঠিক, তবে পরিচিত হোস্ট ফাইলটিও এতে পুনরায় সেট করুন /dev/null। এখানে অটোলজিন এবং psদূরবর্তী ডিভাইসে একটি উদাহরণ ।

sshpass -p pass ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host 'ps ax'

-2

আপনার সমস্ত সার্ভারগুলিতে লগ ইন করুন (এবং যদি রেডহ্যাট হয়) rm -f /etc/ssh/ssh_host_*এবং তারপরে এসএসএইচডি পুনরায় চালু করুন।

এটি নতুন এসএসএইচ হোস্ট কী তৈরি করবে যা এড়িয়ে যাওয়ার প্রয়োজন হবে না।

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


6
এই উত্তরটি ভুল। ফিঙ্গারপ্রিন্ট ক্লায়েন্টে স্থানীয়।
89c3b1b8-b1ae-11e6-b842-48d705
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.