প্রশ্ন "Known_hosts এ সঠিক হোস্ট কী যোগ করুন" / হোস্টনাম প্রতি একাধিক ssh হোস্ট কী?


আমি নিয়ন্ত্রণ একটি কম্পিউটার মধ্যে ssh করার চেষ্টা, আমি পরিচিত বার্তা পেয়েছি:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
[...].
Please contact your system administrator.
Add correct host key in /home/sward/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/sward/.ssh/known_hosts:86
RSA host key for [...] has changed and you have requested strict checking.
Host key verification failed.

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

কিন্তু আমি যা চাই তা হলো এসএসি পুরাতন কী এবং নতুন কী উভয়কে গ্রহণ করে। ত্রুটি বার্তা ভাষা ("Add correct host key") পুরানোটি মুছে ফেলার পরিবর্তে সঠিক হোস্ট কী যুক্ত করার কিছু উপায় থাকা উচিত।

আমি পুরানো একটি মুছে ফেলা ছাড়া নতুন হোস্ট কী যোগ করার পদ্ধতি খুঁজে বের করতে পারবেন না।

এটা কি সম্ভব, নাকি ত্রুটি বার্তা শুধু অত্যন্ত বিভ্রান্তিকর?


121
2017-10-13 14:01


উত্স


এই হোস্ট কী যে ত্রুটি উৎপন্ন হয়। একটি হোস্ট এক এবং শুধুমাত্র এক কী থাকা উচিত। এটি ক্লায়েন্ট বা ব্যবহারকারীর কীগুলির সাথে কিছু করার নেই। আপনি একটি আইপি ঠিকানা আছে যে স্বতন্ত্র হোস্ট বা কিছু মধ্যে floats? - David Schwartz
আমার ক্ষেত্রে আমি কিছু জিনিস সঙ্গে fiddling যখন কাছাকাছি দুটি ভবিষ্যতে অনেক দুটি মধ্যে সুইচ করা যাচ্ছে জানি। মনে হচ্ছে এটি এমন একটি আইপি তেও উপকারী হবে যা আপনার প্রস্তাবিত একাধিক হোস্টের পরিস্থিতি। প্রধানত আমি শুধু জানতে চাই যে আমার নিজের শিক্ষার জন্য এটি কোনও বিশেষ ব্যবহারিক প্রয়োগ ব্যতীত সম্ভব কিনা। - Samuel Edwin Ward


উত্তর:


  1. আপনার সার্ভারের RSA কীটি পান:

    $ ssh-keyscan -t rsa server_ip
    # server_ip SSH-2.0-OpenSSH_4.3
    server_ip ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwH5EXZG...
    
  2. এবং ক্লায়েন্ট, এই কী যোগ করুন ~/.ssh/known_hosts:

    server_ip ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAqx9m529...(the offending key)
    server_ip ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwH5EXZG...
    

126
2017-10-13 14:38



এই কাজ! যাইহোক, আমি "হ্যাশকাউনহোস্টস" ব্যবহার করছি, তাই এন্ট্রিটি একটু জায়গা থেকে বেরিয়ে এসেছে। সৌভাগ্যবশত ssh_config (5) আমাকে ssh-keygen (1) এ নির্দেশ করে যা ব্যাখ্যা করেছে যে আমি "ssh-keygen -H" ব্যবহার করতে পারছি না। ধন্যবাদ! - Samuel Edwin Ward
এটি "কাজ করে" তবে আপনি কীটি যাচাই করছেন না, তাই আপনি mitm আক্রমণের পক্ষে ঝুঁকিপূর্ণ ... - JasperWallace
@ জ্যাসপারওয়ালেস, যতক্ষণ প্রথম ধাপটি নিরাপদ সংযোগে সম্পন্ন করা হয় (উদাহরণস্বরূপ স্থানীয় হোস্ট ব্যবহার করে) এটি বেশ নিরাপদ হওয়া উচিত, আমি মনে করি - ony
সার্ভার থেকে সব ধরনের ধরনের জড়ো করার কোন উপায় আছে কি? কখনও কখনও আপনি RSA, DSA, ECDSA, RSA1 ... ইত্যাদি জানেন না। - Sopalajo de Arrierez
@ সোপলজোডআরিরিয়েজ একই ম্যানপঞ্জেও বলেছেন যে আপনি বিভিন্ন ধরনের কমা দিয়ে আলাদা করতে পারেন, তাই করুন ssh-keyscan -t rsa1,dsa,rsa,ecdsa,ed25519 server_ip কিন্তু খুঁজে বের করার একমাত্র কারণ rsa1 এবং dsa কীগুলি সার্ভারগুলিকে সনাক্ত করতে হবে যা আপগ্রেড / পুনর্গঠন করা দরকার - kbolino


ব্যবহারযোগ্য known_hosts থেকে এন্ট্রিটি সরান:

ssh-keygen -R *ip_address_or_hostname*

এটি থেকে সমস্যাযুক্ত আইপি বা হোস্টনাম মুছে ফেলা হবে known_hosts ফাইল এবং আবার সংযোগ করার চেষ্টা করুন।

মানুষের পাতা থেকে:

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


74
2018-02-09 06:49



"পুরানো অপসারণ ছাড়া নতুন হোস্ট কী যোগ করতে হবে।" - Samuel Edwin Ward
এটাই সর্বোত্তম সমাধান! - Thomas Decaux
কিভাবে এই 19 ভোট আছে? এ প্রশ্নের উত্তর দিতে আসেনি .. - Molomby
যখন আমি "git ssh update হোস্ট কী স্বয়ংক্রিয়ভাবে" এর জন্য গুগল করি তখন আপনার প্রশ্ন দ্বিতীয়টি আসে। এই উত্তর আমি খুঁজছেন ছিল। আমি যা চাই তা নিয়ে একটি নতুন প্রশ্ন খুলতে পারে এটি একটি সদৃশ হিসাবে বন্ধ হয়ে যেতে পারে। - Jason Goemaat
হোস্টনাম খুব কাজ করে - damluar


একটি খুব সহজ উপায় হল:

cp ~/.ssh/known_hosts ~/.ssh/known_hosts.bak

তারপরে মূল কীটি মুছে ফেলার জন্য known_hosts সম্পাদনা করুন, তারপর হোস্টের সাথে ssh ব্যবহার করুন:

ssh name@computer

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

দুটি কী রাখার জন্য আমার 'কারণ' হল গন্তব্য সিস্টেমটি মাল্টিবিউট, যদিও আমি বলি যে ইনস্টলেশনের কীগুলি সিঙ্ক্রোনাইজ করার একটি উপায় আছে, তবে এটি একাধিক কী মঞ্জুর করার জন্য আরও সহজতর বলে মনে হয়।

সম্পাদনা 2015/06

আমি এখন এটি পুনর্বিবেচনা করা উচিত, যেটি আরও সহজ উপায় হিসাবে লক্ষ্য করা উচিত [যতক্ষণ এন্ট্রি সনাক্ত করা যায়, সাধারণত হোস্টনাম / আইপি ঠিকানা থেকে তার নির্দিষ্ট অবস্থান উল্লেখ করে ত্রুটির বার্তা থেকে দূরে থাকবেন];

  1. 'পুরানো' এন্ট্রির শুরুতে # যোগ করার জন্য known_hosts সম্পাদনা করুন অস্থায়ীভাবে known_hosts
  2. [হোস্টে ssh] সংযোগ করুন, নতুন কী 'স্বয়ংক্রিয়ভাবে' যোগ করার জন্য প্রম্পট থেকে সম্মত হন
  3. তারপরে #_ অপসারণের জন্য known_hosts পুনরায় সম্পাদনা করুন

এমনকি হোস্টকিএলিয়াস বিকল্পটিও আছে

ssh -o HostKeyAlias=mynewaliasforthemachine name@computer

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


16
2018-04-30 22:29



এই 'ঢালাই'? meldmerge.org - Samuel Edwin Ward
যে ঢালাই :) apt-get / yum ইনস্টল নাম সহজভাবে ঢালাই করা হয় - Mark
সিপি, এমভি, তারপর এসএস, বিড়ালের পরিবর্তে বিড়াল ~ / .ssh / known_hosts.bak ~ / .ssh / known_hosts> tmp এর পরিবর্তে আমি আপনার পরামর্শের একটি বৈকল্পিক কাজ করেছি। mv tmp ~ / .ssh / known_hosts - Peter N Lewis


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

10.10.10.110 pi-dev
10.10.10.110 pi-xbmc
10.10.10.110 pi-etc

Known_hosts ফাইলটি হোস্ট নাম দ্বারা আঙ্গুলের ছাপ সংরক্ষণ করে, যদিও এটি একই আইপি ঠিকানা হলেও, প্রতিটি অনন্য হোস্টের নাম একটি পৃথক এন্ট্রি পায়।

প্রত্যেকবার আমি নতুন সিস্টেম ব্যবহার করার সময় হোস্ট ফাইলগুলিতে নামগুলি যুক্ত করার অসুস্থ হয়ে পড়েছিলাম তাই আমি আইপি ঠিকানায় শীর্ষস্থানীয় জিরোগুলি ব্যবহার করে এমনকি অলস ভাবেই এলাম:

$ ssh pi@10.10.10.110
$ ssh pi@010.10.10.110
$ ssh pi@10.010.10.110

(Uncanonicalized) আইপি ঠিকানার প্রতিটি পরিবর্তনের পরিচিত_হস্তিতে এটির নিজস্ব এন্ট্রি পায়।


7
2017-11-04 02:28



ওপেনএসএইচ-এর লোকেরা আমার কাছে জ্ঞানী হয়ে উঠেছে, এই লফোল আর সাম্প্রতিক সংস্করণগুলিতে কাজ করে না। - Mike
তুমি ব্যবহার করতে পার CheckHostIP no মধ্যে ~/.ssh/config এখনও loophole ব্যবহার করতে সক্ষম হতে। আপনি এমনকি আপনার aliases সংজ্ঞায়িত করতে পারেন যাতে আপনি সঙ্গে fiddle করতে হবে না /etc/hosts এবং সংজ্ঞায়িত CheckHostIP no শুধুমাত্র এই 3 হোস্টনাম জন্য। - GnP


আপনার ক্লায়েন্ট এবং সার্ভার উভয় OpenSSH 6.8 বা নতুন আছে, আপনি ব্যবহার করতে পারেন UpdateHostKeys yes আপনার বিকল্প ssh_config অথবা ~/.ssh/config। উদাহরণ স্বরূপ:

Host *
    UpdateHostKeys yes

এই সার্ভার আছে যে সমস্ত হোস্ট কী SSH দোকান করে তোলে known_hosts, এবং যখন একটি সার্ভার একটি হোস্ট কী পরিবর্তন বা অপসারণ করে, তখন কীটি আপনার মধ্যেও পরিবর্তিত বা সরানো হয় known_hosts


2
2017-09-22 04:28



এই পর্যন্ত সবচেয়ে দরকারী উত্তর দ্বারা! যদিও হোস্ট কীটি ইতিমধ্যেই পরিবর্তিত হয়েছে তা মূল প্রশ্নটি সমাধান করার জন্য স্পষ্টভাবে কোনও উপায় সরবরাহ করে না তবে নতুন হোস্ট কী যাচাই না করে অন্য সকল উত্তর অনিরাপদ। এই বিকল্পটি আপনাকে নতুন হোস্ট কীগুলিতে নিরাপদ রোলওভার করতে দেয়। - Jaap Eldering


আমি দেখতে পাচ্ছি না কেন আপনি দুটি কী দিয়ে কাজ করতে চান তবে আপনি অবশ্যই একাধিক বৈধ কী যুক্ত করতে পারেন ~/.ssh/known_hosts ফাইল, কিন্তু আপনি নিজে তা করতে হবে।

অন্য সমাধান ব্যবহার করা হতে পারে StrictHostKeyChecking=no এই নির্দিষ্ট হোস্ট জন্য বিকল্প:

ssh -o StrictHostKeyChecking=no user@host

যা আপনি আপনার মধ্যে একটি উপনাম লিখতে পারে ~/.profile অথবা অনুরূপ কিছু।

alias hc=ssh -o StrictHostKeyChecking=no user@host

1
2017-10-13 14:49



StrictHostKeyChecking এই ক্ষেত্রে সাহায্য বলে মনে হচ্ছে না; হোস্টটি যখন known_hosts ফাইলে নেই তখন দৃশ্যত এটি শুধুমাত্র আচরণটি নির্দিষ্ট করে। এখানে উল্লেখ করা হয়েছে: gossamer-threads.com/lists/openssh/dev/45349#45349 - Samuel Edwin Ward
এটা এখানে কাজ করে। আপনি সতর্কতা পাবেন, কিন্তু লগইন চলতে থাকে। - Sven♦
উদ্ভট ব্যাপার. আপনি পাসওয়ার্ড প্রমাণীকরণ ব্যবহার করছেন? আপনি OpenSSH ব্যবহার করছেন? - Samuel Edwin Ward


আপনি যদি কেবল এসএসএস একটি স্থানীয় নেটওয়ার্ক সম্মুখের তারপর ...

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

যেমন

cp known_hosts known_hosts.old
rm known_hosts
nano known_hosts

তারপর নতুন বাফার (ফাইল) সংরক্ষণ করতে স্পেস, ব্যাকস্পেস cntl + x এবং 'y' টিপুন। তার খারাপ অভ্যাস কিন্তু ঠিক আছে আপনাকে প্রদান করা হয় নিয়মিত আপনার স্থানীয় নেটওয়ার্কের বাইরে sshing হয় না (যেমন একটি uni বা কাজের সার্ভার)

একটি নিরাপদ স্থানীয় নেটওয়ার্কে এটি নিরাপদ কারণ আপনি কেবল মধ্যযুগীয় আক্রমণকারীকে একজন মানুষ পেতে পারেন না।

আপনার বোঝার কোডটি সবসময়ই ভাল!


0
2018-06-15 21:44



সম্পূর্ণ wiping known_hosts ফাইলটি ssh দ্বারা প্রদত্ত অন্যতম সুরক্ষাটি প্রতিবার বাতিল করতে যাচ্ছে। - kasperd
প্রকৃতপক্ষে, আমি দাবী করব যে নিরাপদ অভ্যন্তরীণ নেটওয়ার্কে, আপনার কোডটি বোঝার পক্ষে নিরাপদ এবং নিরাপত্তাহীনভাবে কোড অনুলিপি করার চেয়ে সুরক্ষাটি সুরক্ষিত। একটি বহিরাগত নেটওয়ার্কের তারপর পরিস্থিতি ভিন্ন হতে হবে। - Aaron


অনেকগুলি উত্তর, কিন্তু অনেকগুলি কঠোর হোস্ট চেকিং সম্পূর্ণভাবে বন্ধ করে সুরক্ষা দেয় না, বা সম্পর্কিত সম্পর্কিত হোস্ট তথ্যটি ধ্বংস করে দেয় বা কেবল ব্যবহারকারীকে পরস্পরবিরোধীভাবে কীগুলি গ্রহণ করতে বাধ্য করে, সম্ভবত এটি পরে অপ্রত্যাশিত হয়।

কঠোর হোস্ট চেকিং ছেড়ে যাওয়ার অনুমতি দেওয়ার জন্য এখানে একটি সহজ কৌশল রয়েছে, কিন্তু যখন আপনি নিয়ন্ত্রিত ভাবে কীটি আপডেট করবেন আশা করা এটা পরিবর্তন:

  • পুরাতন কীটি সরান এবং এক কমান্ডে আপডেট করুন

    ssh-keygen -R server.example.com && \
        ssh -o StrictHostKeyChecking=no server.example.com echo SSH host key updated.
    
  • যদি আপনি তাদের ব্যবহার করেন তবে আইপি ঠিকানা (es) বা অন্যান্য হোস্ট নামগুলির সাথে পুনরাবৃত্তি করুন।

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

এই পদ্ধতিটি সংযোগ সংযোগ যাচাই করে এবং ssh কমান্ডের লগগুলির জন্য একটি চমৎকার বার্তা নির্গমন করে (যা লগ ইন করে, হোস্ট কী আপডেট করে এবং আউটপুটগুলি SSH হোস্ট কী আপডেট তারপর অবিলম্বে exits।

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

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


-1
2017-09-18 01:56