যখন বেশ কয়েকটি হোস্ট একই আইপি এবং ডিএনএস নাম ভাগ করে নেবে তখন কীভাবে পরিচিত_হোস্টগুলি সম্পাদনা করবেন?


29

আমি নিয়মিত একটি কম্পিউটারে প্রবেশ করি যা একটি ডুয়াল-বুট ওএস এক্স / লিনাক্স কম্পিউটার। দুটি ওএস দৃষ্টান্ত একই হোস্ট কীটি ভাগ করে না, তাই তাদের একই আইপি এবং ডিএনএসে ভাগ করে নেওয়া দুজন হোস্ট হিসাবে দেখা যেতে পারে। ধরা যাক আইপি 192.168.0.9, এবং নামগুলি hostnameএবংhostname.domainname

আমি যতদূর বুঝতে পেরেছি, দুটি হোস্টের সাথে সংযোগ রাখতে সক্ষম হ'ল সমাধানটি হ'ল উভয়টিকে ~/.ssh/know_hostsফাইলে যুক্ত করা। যাইহোক, এটা সহজ চেয়ে সম্পন্ন হলে, কারণ ফাইলটি কুচি-কুচি করিয়া কাটা বস্তু হয়, এবং হোস্ট প্রতি সম্ভবত বিভিন্ন এন্ট্রি হয়েছে বলা হয় ( 192.168.0.9, hostname, hostname.domainname)। ফলস্বরূপ, আমি নিম্নলিখিত সতর্কতা আছে

Warning: the ECDSA host key for 'hostname' differs from the key for the IP address '192.168.0.9'

known_hostsহ্যাশগুলি রাখার সময় কি ফাইল সম্পাদনা করার কোনও সহজ উপায় আছে ? উদাহরণস্বরূপ, প্রদত্ত হোস্টামের সাথে সম্পর্কিত লাইনগুলি আমি কীভাবে খুঁজে পেতে পারি? আমি কিছু পরিচিত হোস্টের জন্য কীভাবে হ্যাশগুলি তৈরি করতে পারি?

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


এটা আপনি কি করতে চান? কিসের জন্য এডিট করবেন?
রাইউক

@ রাইউক: আইপি ঠিকানা, হোস্টনাম এবং হোস্টনাম.ডোমনেম নামের জন্য ওএসএক্স এবং লিনাক্স হোস্ট কী উভয় হিসাবে বৈধ হিসাবে স্বীকৃতি পাওয়ার জন্য এটি সম্পাদনা করুন।
ফ্রিডরিক গ্রোহানস

@ রাইউক: আমি প্রশ্নটি সম্পাদনা করেছি। এটা কি এখন আরও পরিষ্কার?
ফ্রিডরিক গ্রোহানস

2
আপনি কি উভয় ইনস্টলেশন একই কী আছে তা বিবেচনা করেছেন?
জোরডাচি

3
কয়েকটি ক্ষেত্রে রয়েছে যখন একাধিক সত্তা (প্রতিটি এসএসএইচ হোস্ট কী সহ প্রতিটি) অ্যাক্সেস করার জন্য একটি আইপি ঠিকানা ব্যবহার করা যুক্তিসঙ্গত এবং এখনও কঠোর নিয়ন্ত্রণ বজায় রাখা যায় যে কেবলমাত্র সেই হোস্ট কীগুলি এসএসএইচ ক্লায়েন্টের দ্বারা দেখা হয়েছে। উদাহরণস্বরূপ কয়েকটি উচ্চ প্রাপ্যতা সেটআপ যেখানে একক ভাগের একটি আইপি ঠিকানা ব্যবহার করে একটি ক্লাস্টার অ্যাক্সেস করা হয় তবে যেখানে (কোনও কারণে) ক্লাস্টারগুলির দ্বারা দেখা SSH হোস্ট কীটি কোন ক্লাস্টার ইউনিটের উপর নির্ভর করে বর্তমানে সক্রিয় রয়েছে। অন্য কেসটি হ'ল যখন একাধিক এসএসএইচ হোস্ট একটি ন্যাটেড ফায়ারওয়ালের পিছনে থাকে এবং বাইরে থেকে অ্যাক্সেস করা হয়, তাদের সকলের কাছে একই আইপি বলে মনে হয়।
IllvilJa

উত্তর:


12

এখানে সর্বাধিক সরল সমাধান হ'ল লিনাক্স এবং ওএস এক্সের জন্য একই হোস্ট কীগুলি ব্যবহার করা That অর্থাৎ, /etc/ssh/ssh_host_*_key*ফাইলগুলির একটি সেট বেছে নিন এবং সেগুলি অন্য ওএসে অনুলিপি করুন। তারপরে একই হোস্ট কীটি কোনও এসএসএইচ ক্লায়েন্টের কাছে উপস্থাপিত হবে তা নির্বিশেষে আপনি কোন ওএসে বুট করেছেন, এবং এসএসএইচ ক্লায়েন্ট বুদ্ধিমান কেউ হবে না।


আমি একটি ক্লায়েন্ট সংস্করণ পছন্দ করি, তবে আমি যদি এটির সন্ধান না পাই তবে আমি এটি ব্যবহার করে দেখতে চাই। যাইহোক, ফাইলগুলির ওএসএক্স (অ-মানক) স্থানীয়করণ /private/etc/ssh_host*, না /etc/ssh/ssh_host*
ফ্রেডেরিক গ্রোহানস

ফাইলগুলি একটি মেশিন থেকে অন্য মেশিনে অনুলিপি করা (দুটি লিনাক্স মেশিন) আমার কাজ করে না। যদিও ফাইলের বিষয়বস্তুগুলি হশ ছিল না তাই আমি এখনও সমস্যাটি পাচ্ছিলাম (সম্ভবত পরিবর্তনের সময়?)। নীচের সমাধানটি আরও ভাল।
স্টাভ

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

কৌতূহলজনকভাবে, এটি আমার তুলনামূলকভাবে সাম্প্রতিক ওপেনএসএইচ 7.4 পি 1 sshdপ্রতিটি নতুন সংযোগে হোস্ট কী লোড করে। সম্ভবত এটি দীর্ঘ সময় এইভাবে চলেছে এবং আমি ধরে নিয়েছি হোস্ট কীগুলি অন্য sshdকনফিগারেশনের মতো আচরণ করা হয়েছিল । যাইহোক, এটি আপনার সমস্যা হতে পারে বা নাও হতে পারে।
jjlin

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

26

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

(আপনি ssh-keygen -H -F <hostname>সেই হোস্টনামের সাথে মেলে এমন আপনার পরিচিত_হোস্ট ফাইলের লাইনগুলি সন্ধান করতেও ব্যবহার করতে পারেন the সরানো লাইনটি অনুলিপি করার পরে এটি চালানোতে দুটি এন্ট্রি তালিকাভুক্ত করা উচিত))

যদি কেউ একই জিনিস করতে পট্টি পেতে হয় তবে আমি এটি সম্পর্কে শুনে খুব আগ্রহী হব।


4
প্রকৃতপক্ষে, আপনার যদি একটি লিনাক্স ক্লায়েন্ট থাকে, তবে আপনার আপত্তিজনক লাইনটি সরিয়ে ফেলতে হবে না, আপনাকে কেবল সামনে হ্যাশ ('#') অক্ষর দিয়ে মন্তব্য করতে হবে। তারপরে, আপনি একবার নতুন কীটি স্বীকার করে নিলে, আপনি কেবল পরিচিত_হোস্টগুলি ফাইল সম্পাদনা করতে পারেন এবং পুরানো কীটি দিয়ে লাইনটি আপসহীন করতে পারেন। তবে হ্যাঁ, এটি পুট্টিতেও কার্যকর হবে।
IllvilJa

1
যদি একই নামের সাথে দুটি হোস্ট থাকে তবে পৃথক আইপি ঠিকানা এবং বিভিন্ন হোস্ট কী, এই কার্যকারিতাটিও কাজ করে: কমেন্ট আউট (বা অস্থায়ীভাবে মুছুন) তারপর সেই হোস্টের জন্য উভয় লাইন (আইপি ঠিকানার ভিত্তিতে একটি এবং হোস্টের ভিত্তিতে একটি) নাম), অপ্রত্যাশিত-অখ্যাত হোস্টের সাথে সংযুক্ত করুন এবং তারপরে মন্তব্য করা বা মোছা লাইনগুলিকে পুনরায় যুক্ত করুন।
কাই পেটজকে

13

আমি এটি পেয়েছি যা আপনি অর্জন করতে চান তাতে আপনাকে সহায়তা করতে পারে।

সূত্র: /programming/733753/how-to-handle-ssh-host-key-verifications-with-2-differences-hosts-on-the-same-but

আপনার .ssh ডিরেক্টরিতে একটি কনফিগার ফাইল তৈরি করুন:

Host server1
  Hostname x1.example.com
  HostKeyAlias server1
  CheckHostIP no
  Port 22001
  User karl

Host server2
  Hostname x2.example.com
  HostKeyAlias server2
  CheckHostIP no
  Port 22002
  User karl

নীচে ব্যাখ্যা (পুরুষ ssh_config থেকে)

CheckHostIP

যদি এই পতাকাটি "হ্যাঁ" তে সেট করা থাকে, ssh (1) অতিরিক্ত_ হোস্ট ফাইলটিতে হোস্ট আইপি ঠিকানাটি চেক করবে। এটি ডিএনএসের স্পোফিংয়ের কারণে হোস্ট কীটি পরিবর্তিত হয়েছে কিনা তা সনাক্ত করার অনুমতি দেয় sh বিকল্পটি "না" এ সেট করা থাকলে, চেকটি কার্যকর করা হবে না। ডিফল্ট হ্যাঁ "হ্যাঁ"।

HostKeyAlias

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

ব্যবহারকারীর নাম এবং পোর্ট লাইন আপনাকে কমান্ড লাইনে এই বিকল্পগুলি দিতেও এড়িয়ে চলেছে, যাতে আপনি কেবল ব্যবহার করতে পারেন:

% ssh server1
% ssh server2

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

1
@ ফ্রিডরিক গ্রোহানস, আমি পরীক্ষা করে দেখেছি। আপনার পৃথক বন্দরগুলির দরকার নেই এবং হ্যাশকেনডহোস্ট বিকল্পগুলি হোস্টকিএলিয়াসের সাথে ভাল কাজ করে।
জোড়াদেচে

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

2

আপনার সমস্যা সমাধানের সহজতম উপায় হ'ল প্রতিটি হোস্টকে নিজস্ব / স্বতন্ত্র আইপি ঠিকানা দেওয়া। আপনার (বেসরকারী) নেট এবং আইপিভি 4-তে 253 ঠিকানা উপলব্ধ রয়েছে, এটি কোনও বড় বিষয় নয়। তাদের স্থির আইপি দিন (ডিএইচসিপি সার্ভার হিসাবে মেশিনটি নেটওয়ার্ক কার্ডের ম্যাকের ভিত্তিতে সনাক্ত করবে এবং উভয়ই একই ঠিকানা পাবে)। আপনি যদি সুরক্ষা ব্যবস্থা রাখতে চান তবে আমি অন্য কোনও সমাধান দেখতে পাচ্ছি না (যা আমি এই "সামান্য" স্বাচ্ছন্দ্যের জন্যও বাদ দেব না)।


আসলে, আইপি ঠিকানাটি 192.168.0.xxব্যক্তিগত নয় এবং নয় not এটি আমার বিশ্ববিদ্যালয়ের দ্বারা প্রদত্ত একটি 'আসল' আইপিভি 4 ঠিকানা যা আমি পরিবর্তন করতে মুক্ত নই।
ফ্রিডরিক গ্রোহানস

আপনি যদি উইকিপিডিয়ায় পরীক্ষা করেন , আপনি দেখতে পাবেন 192.168.0.0 - 192.168.255.255 (আপনার প্রশ্নটি নির্দিষ্ট করা 192.168.0.9, যা এই সীমার মধ্যে পড়ে) "ব্যক্তিগত আইপিভি 4 অ্যাড্রেস স্পেসস" এর অন্তর্গত। সুতরাং "ব্যক্তিগত" দ্বারা আমি আপনাকে এর "মালিকানা" না দিয়ে IETF এর চশমা উল্লেখ করি । আপনার প্রশ্নের মধ্যে আপনি নির্দেশিত করেন নি যে আপনি আইপি পরিবর্তন করতে পারবেন না, দুঃখিত - তবে প্রদত্ত ইনপুটটি দিয়ে আমার উত্তরটি উপযুক্ত ছিল।
ইজজি

খারাপভাবে প্রশ্নযুক্ত প্রশ্নের জন্য দুঃখিত। ডাউনওয়েট করিনি।
ফ্রিডরিক গ্রোহানস

আমাকে জানাতে কোনও ত্রুটি নেই, এবং টিএনএক্স - ডাউনভোটকে নিরুৎসাহিত করে তোলে। তবে অন্য ধারণা: আমি নিশ্চিত নই যে পরিচিত_হোস্ট ফাইলটি হোস্টের নামটি কোথা থেকে নিয়ে যায়, ডিএনএস বিপরীত করে দেয় বা ক্লায়েন্টের দেওয়া হয়। আপনি আপনার "হোস্টগুলির" একটির নামকরণের চেষ্টা করতে পারেন তাই এটি অন্যরকম হোস্টনাম উপস্থাপন করে। অথবা উভয় হোস্ট কী যুক্ত করার জন্য: ssh আপনাকে আপনার জ্ঞাত_ হোস্ট ফাইলটিতে "আপত্তিকর রেখা" বলবে (যখন # 1 থাকে এবং আপনি # 2 এর সাথে সংযুক্ত হন)। সুতরাং আপনি সেই লাইনটি অন্য কোনও ফাইলে অনুলিপি করতে পারবেন, পরিচিত_হোস্টগুলি থেকে এটিকে সরিয়ে ফেলুন, # 2 কে সংযুক্ত হয়ে এর লাইন যুক্ত করুন এবং মুছে ফেলা লাইনটি যুক্ত করুন। এটি কাজ করে কিনা তা নিশ্চিত নয় তবে আপনি চেষ্টা করতে পারেন।
ইজজি

2

একই আইপি ভাগ করে নেওয়ার বিভিন্ন ভিপিএস বাক্সের সাথে সংযোগ করার সময় আমি এই সমস্যায় পড়ি না কারণ প্রত্যেকের আলাদা আলাদা এসএসএইচ পোর্ট রয়েছে (20022,30022, ইত্যাদি) তাই তারা বিভিন্ন কী সহ পরিচিত হোস্ট হিসাবে নিবন্ধিত হয়।

এটা কি আপনার পক্ষে একান্ত কর্মসূচী হতে পারে?


হাই @ পাইহেম, সুপার ব্যবহারকারীকে স্বাগতম! লক্ষ করুন যে এই প্রশ্নটি প্রায় 4 বছরের পুরানো। এর উত্তর দেওয়ার ক্ষেত্রে কোনও অসুবিধা নেই, তবে মনে রাখবেন এটি সম্ভব আপনার কোনও প্রতিক্রিয়া পাওয়া যায় না।
হিউবট

আমার আর কোনও ওএস এক্স মেশিন নেই, তবে আপনার উত্তরটি অন্য কারও পক্ষে কার্যকর হতে পারে। যে স্ট্যাকের বিনিময়ের পুরো বিন্দু
ফ্রেডেরিক Grosshans

@ হিউবোট ... সত্যই, আমি এখন এটি দেখতে পাচ্ছি। কেন জানি না, এটি সাম্প্রতিক প্রশ্নের তালিকায় উপস্থিত হয়েছিল ...
পাইহেম

1

অন্য আর্টিকেল , যা আপনার সমস্যা পরিচালনা করার বিভিন্ন উপায় বর্ণনা করে:

দ্বিতীয় পদ্ধতিতে দুটি ওপেনএসএসএইচ প্যারামিটার ব্যবহার করা হয়: StrictHostKeyCheckinএবং UserKnownHostsFile। এই পদ্ধতিটি এসএসএইচটিকে একটি খালি ज्ञात_হোস্ট ফাইলটি ব্যবহার করার জন্য কনফিগার করে এবং রিমোট হোস্ট পরিচয় কীটি নিশ্চিত করতে আপনাকে জিজ্ঞাসা করবে না।


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

1
সুপার ব্যবহারকারীকে স্বাগতম! যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান। আমি একটি সংক্ষিপ্ত অংশ অন্তর্ভুক্ত করেছি, তবে আপনি যা ইচ্ছা করেছিলেন তা এটি নাও হতে পারে ...
তামারা উইজসম্যান

1

যেহেতু আপনি কঠোর হোস্ট কী পরীক্ষা করে রাখতে চান, তাই আমি তাদের বিভিন্ন known_hostsফাইল ব্যবহার করতে চাই। এটি করার জন্য, আপনার ~/.ssh/configফাইলটি (বা /etc/ssh/ssh_configএকাধিক স্থানীয় ব্যবহারকারীর অ্যাকাউন্টে কাজ করার প্রয়োজন হলে ফাইলটি সেট আপ করুন):

Host myserver.osx
  UserKnownHostsFile ~/.ssh/known_hosts.dual.osx
  # default is ~/.ssh/known_hosts
  Hostname $REALHOSTNAME

Host myserver.linux
  UserKnownHostsFile ~/.ssh/known_hosts.dual.linux
  Hostname $REALHOSTNAME

, $REALHOSTNAMEঅবশ্যই প্রকৃত হোস্টনাম বা আইপি ঠিকানার সাথে প্রতিস্থাপন করা । (আপনি যা চয়ন করেন তা বিবেচ্য নয়, যতক্ষণ আপনি "হোস্টনাম" এর পরে আইপি ঠিকানার সমাধান করতে পারে এমন কিছু চয়ন করেন তবে আমি সাধারণ নীতি অনুসারে হোস্টের নামটি কোনও আইপি ঠিকানার পক্ষে পছন্দ করি।)

তারপরে ssh myserver.linuxএবং ssh myserver.osxএইভাবে বিভিন্ন হোস্ট কী থাকতে পারে তবে আপনি এখনও চেকিং পান। যদি এটি লিনাক্স সমাপ্ত হয় এবং আপনি ওএস এক্স (বা বিপরীতে) টাইপ করেন তবে আপনি সতর্কতা পাবেন (যা আমি বিশ্বাস করি কাঙ্ক্ষিত প্রভাবিত)।

আমার যদি এই সমস্যাটি ঘটে থাকে তবে আমি নিশ্চিত করেছিলাম যে মূল known_hostsফাইলটিতে এমন কোনও কিছু ভুল ছিল যা কোনও একটির সাথেই মেলে না, যাতে আপনি $REALHOSTNAMEপরিবর্তে টাইপ myserver.osxকরলে সতর্কতা পান। :-) আমি এমন কিছু রেখে এই কাজটি করতাম

<ip-address-of-github.com> $REALHOSTNAME

আমার মধ্যে /etc/hosts, তারপর একটি করে ssh $REALHOSTNAMEএবং নতুন কী গ্রহণ করে, তারপরে সেই এন্ট্রিটি নিয়ে।

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