গিট ত্রুটি: দূরবর্তী সংগ্রহস্থলের সাথে সংযোগ করার সময় "হোস্ট কী যাচাইকরণ ব্যর্থ হয়েছে"


222

আমি আমার ওয়েব সার্ভারে থাকা একটি দূরবর্তী গিট সংগ্রহস্থলের সাথে সংযোগ দেওয়ার চেষ্টা করছি এবং এটি আমার মেশিনে ক্লোন করে আছি।

আমি আমার কমান্ডের জন্য নিম্নলিখিত ফর্ম্যাটটি ব্যবহার করছি:

git clone ssh://username@domain.com/repository.git

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

হোস্ট কী যাচাইকরণ ব্যর্থ হয়েছে।

মারাত্মক: দূরবর্তী সংগ্রহস্থল থেকে পড়া যায়নি।

আমরা এই সংগ্রহস্থলের সাথে সংযোগের জন্য এসএসএইচ কী ব্যবহার করছি না, সুতরাং গিট কেন এই বিশেষ মেশিনের জন্য অনুসন্ধান করছে তা আমি নিশ্চিত নই।


1
আপনি হয় SSH ব্যবহার করে এই সংগ্রহস্থলের সাথে সংযোগ স্থাপনের জন্য, নোটিশ কিভাবে আপনার URL দিয়ে শুরু হয়ssh://
ব্রান্ডন

আমারও তেমন সমস্যা আছে । কেউ আমাকে দয়া করে সাহায্য করতে পারেন? আমি আটকে আছি :(
সেপ্টেম্বর

উত্তর:


164

আপনি ssh://আপনার ক্লোন ইউআরএলের উপসর্গ দ্বারা নির্দেশিত হিসাবে, এসএসএইচ প্রোটোকলের মাধ্যমে সংযোগ করছেন । এসএসএইচ ব্যবহার করে, প্রতিটি হোস্টের একটি কী থাকে। ক্লায়েন্টরা একটি নির্দিষ্ট ঠিকানার সাথে যুক্ত হোস্ট কীটি মনে রাখে এবং হোস্ট কী পরিবর্তিত হয় বলে মনে হয় তা সংযোগ করতে অস্বীকার করে। এটি মাঝারি আক্রমণে মানুষকে বাধা দেয়।

ডোমেন ডট কমের হোস্ট কী বদলেছে। যদি এটি আপনার কাছে মজাদার না মনে হয় তবে আপনার স্থানীয় ক্যাশে থেকে ${HOME}/.ssh/known_hostsডোমেন ডটকমের লাইনটি সরাতে সম্পাদনা করে বা কোনও এসএসএইচ ইউটিলিটি আপনাকে এটি করার অনুমতি দিয়ে পুরানো কীটি সরিয়ে ফেলুন

ssh-keygen -R domain.com

এখান থেকে, আপডেট কীটি নিজেই এটির মাধ্যমে রেকর্ড করুন

ssh-keyscan -t rsa domain.com >> ~/.ssh/known_hosts

অথবা এবং, equivalently, দিন sshআপনার জন্য পরবর্তী সময় যখন আপনার সাথে সংযুক্ত হওয়ার কি git fetch, git pullঅথবা git push(বা এমনকি একটি প্লেইন ওল ' ssh domain.comহ্যাঁ অনুরোধ করা হলে উত্তর দিয়ে)

হোস্ট 'ডোমেন ডটকম (অ্যাবসিডি)' এর সত্যতা প্রতিষ্ঠিত হতে পারে না।
আরএসএ কী আঙ্গুলের ছাপটি XX: XX: ...: XX।
আপনি কি নিশ্চিত যে সংযোগ চালিয়ে যেতে চান (হ্যাঁ / না)?

এই প্রম্পটটির কারণ ডোমেন ডটকমটি known_hostsমুছে ফেলার পরে আর আপনার মধ্যে নেই এবং সম্ভবত এটি সিস্টেমের মধ্যে নেই /etc/ssh/ssh_known_hosts, সুতরাং sshসংযোগের অন্য প্রান্তের হোস্টটি সত্যিই ডোমেইন ডট কম কিনা তা জানার কোনও উপায় নেই। (যদি ভুল কীটি থাকে তবে /etcপ্রশাসনিক সুযোগ-সুবিধাগুলি সহ কাউকে সিস্টেম-ওয়াইড ফাইলটি আপডেট করতে হবে))

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


3
মজাদার ঘটনা, দৌড়ানো sudo ssh-keygen -R domain.comআপনার বিদ্যমান known_hostsফাইলটির নাম পরিবর্তন করতে পারে known_hosts.oldএবং একটি অনুলিপি তৈরি করতে পারে যা কেবল রুট দ্বারা পঠনযোগ্য । ( -rw------- root root) আপনি সহজেই chownএটি যথাযথ ব্যবহারকারীর কাছে ফিরে আসতে পারেন, তবে কেন গিটটি কেন ভাঙা হয়েছে তা আপনি একটি বিকেলের ডিবাগিং নষ্টও করতে পারেন। : ডি
অ্যান্ড্রু রুয়েকার্ট

1
Are you sure you want to continue connecting (yes/no)?। আমার মত একই ভুল করবেন না। আপনার টাইপ করা দরকার yes। কেবল এন্টার
চাপলে

306

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

ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts


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

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

8
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। আমার দিন বাঁচানোর জন্য ধন্যবাদ।
কিয়ুর

আমার জন্যও কাজ করেছিলাম, আমি ভাবছিলাম কেন আমি নিজের রেপো ক্লোন করতে পারছি না
স্ট্যাকআট্যাক

কেউ এই পোস্টটিকে পতাকাঙ্কিত করেছে (ভুলভাবে)। পর্যালোচনা থেকে
ওয়াই হা লি

55

আমার একই সমস্যা ছিল, তবে, এসএসএইচ কীগুলি ব্যবহার করে। টুপির উত্তর থেকে উপরে, আমি বুঝতে পেরেছি যে সমস্যাটি ज्ञात_হোস্ট ফাইল উপস্থিত না থাকা বা গিথুব ডট কম পরিচিত হোস্টের তালিকায় উপস্থিত না থাকা নিয়ে। এটি সমাধানের জন্য আমি যে পদক্ষেপগুলি অনুসরণ করেছি তা এখানে -

  1. mkdir -p ~/.ssh
  2. ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
  3. ssh-keygen -t rsa -C "user.email"
  4. এই আদেশটি দিয়ে সর্বজনীন কীটি খুলুন $ cat ~/.ssh/id_rsa.pubএবং এটি অনুলিপি করুন।
  5. যোগ id_rsa.pub SSH কী-লিস্টে কী আপনার GitHub প্রোফাইলে।

1
@ ওজফোর্ড এফওয়াইআই: আমি আসল উত্তরটি এমনভাবে সম্পাদনা করেছি যাতে আপনার মন্তব্য অচল হয়ে যায়। টিবিএইচ এবং সমস্ত যথাযোগ্য সম্মানের সাথে এটি প্রথম স্থানে সম্পূর্ণ সঠিক ছিল না। touchকমান্ড ক্ষেত্রে ব্যর্থ হবে ~/.ssh, ডিরেক্টরির অস্তিত্ব নেই তাই ধাপ 1 এখনও প্রয়োজন ছিল। পুনঃনির্দেশ touchব্যবহার করার আগে আপনার ফাইলের দরকার নেই >>। এটি প্রয়োজনীয় হলে তৈরি করা হবে (তবে কেবল ফাইল, পুরো পথ নয়, তবুও mkdir -pপ্রয়োজন)। -pবিকল্প এটিকে ক্ষেত্রে নির্দেশিকা ইতিমধ্যেই বিদ্যমান আছে কাজ করে।
টেড লিসি

1
এটি # 2 ssh-keyscanযা গিথুব ডক্স থেকে একটি নতুন এসএস কী যোগ করার পরে হারিয়ে যাচ্ছে।
ফিল অ্যান্ড্রুজ

1
আমার Dockerfileঅনুমতির অভাব নিয়ে আমার সমস্যা ছিল । এখানে 2 য় ধাপ যুক্ত করার ফলে সমস্যাটি স্থির হয়ে গেছে! দুর্দান্ত কাজের জন্য আপনাকে ধন্যবাদ
স্পেনসার পোলক

37

এটি ঘটছে কারণ গিথুব বর্তমানে আপনার পরিচিত হোস্টগুলিতে নেই।

আপনাকে আপনার পরিচিত হোস্টগুলিতে গিথব যুক্ত করার অনুরোধ জানানো উচিত। যদি এটি না ঘটে থাকে, আপনি ssh -T git@github.comআবার প্রম্পটটি গ্রহণ করতে দৌড়াতে পারেন।


2
আপনি কখনই প্রম্পট না হলে এটি সঠিক উত্তর।
ম্যাথিয়াস হেগম্যান

15

আমার জন্য, আমাকে কেবল প্রম্পটে "হ্যাঁ" টাইপ করতে হয়েছিল যা জিজ্ঞাসা করে "" আপনি কি সংযোগ চালিয়ে যাওয়ার বিষয়ে নিশ্চিত (হ্যাঁ / না)? " বরং কেবল এন্টার টিপুন।


এই উত্তরটি আমাকে অনুধাবন করতে পরিচালিত করে যে 'হ্যাঁ' টাইপ করতে এবং আমার বিটবাকেট সার্ভারটি আমার পরিচিত_হোস্টগুলিতে যুক্ত করার জন্য আমাকে নিজের বিল্ড সার্ভারে ম্যানুয়ালি আমার রেপো ক্লোন করতে হয়েছিল
সাশাহ

1
@ সাশাহঃ আপনার যদি প্রয়োজন সমস্ত পরিচিত_হোস্টের বিটবাকেট সার্ভার হয় তবে আপনি ফাইলটি ম্যানুয়ালি সম্পাদনা করতে পারবেন। যদি এটি করার একমাত্র কারণ হয় তবে রেপো ক্লোন করার দরকার নেই।
কোড-শিক্ষানবিস

7

আমি নতুন ইনস্টল করা সিস্টেমে একই সমস্যা পেয়েছি, তবে এটি ছিল উদেব সমস্যা। কোনও /dev/ttyনোড ছিল না , তাই আমাকে করতে হয়েছিল:

mknod -m 666 /dev/tty c 5 0

1
এটি আমার পক্ষে কাজ করেছে কারণ / dev / tty ফাইল হিসাবে তৈরি হয়েছিল, খুব অদ্ভুত! (তাই আপনি সরাতে আছে এটা তারপর এটি mknod সঙ্গে পুনঃ)
শেষবিচারের দিন

@ জিফ্রয়ে, আমি / দেব / টিটিটি সরিয়েছি এবং এখন যখন সুডো করি, তখন আমি এই ত্রুটির মুখোমুখি হই: সুডো: দুঃখিত, সুডো চালানোর জন্য আপনার অবশ্যই কিছুটা সময় থাকতে হবে
মিলাদ

@ xe4me আমি কখনই বলিনি যে আপনার এটি অপসারণ করা উচিত, সিস্টেমের উপর নির্ভর করে এটি প্রয়োজনীয়। রিবুট এটি ঠিক করা উচিত।
জিওফ্রয়

@ জেফ্রয়ে আসলে প্রথম ভাষ্যকার বলেছেন, আমাকে অপসারণ করতে হবে এবং পুনরায় তৈরি করতে হবে: ডি না, পুনরায় চালানো কার্যকর হয়নি, আমাকে মূলটি বলতে হয়েছিল, তিনি তা স্থির করেছিলেন: ডি
মিলাদ

6

আপনি যদি অফিসের ইন্ট্রনেটে থাকেন (অন্যথায় বিপজ্জনক) যা সর্বদা ফায়ারওয়াল দ্বারা সুরক্ষিত থাকে কেবল আপনার ~ / .ssh / config এ নিম্নলিখিত লাইনগুলি থাকে

হোস্ট *
স্ট্রাইকহোস্টকি কোনও
ব্যবহারকারীর জ্ঞাতহোস্টফিল = / দেব / নাল পরীক্ষা করছে না


2
আমাদের কর্পোরেট ফায়ারওয়াল ছাড়াই এটি এখনও বিপজ্জনক। আপনি কীভাবে জানবেন যে আপনি সার্ভার কীটি যাচাই না করে আসল গিথুবের সাথে কথা বলছেন?
মেনবুয়েরোক

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

5

আমার জন্য যা কাজ করা হয়েছিল তা হল প্রথমে নতুন কম্পিউটারের আমার এসএসএইচ কী যুক্ত করা, আমি গিটল্যাব থেকে এই নির্দেশাবলী অনুসরণ করেছি - এসএসএইচ কী যুক্ত করুন । নোট করুন যেহেতু আমি উইন 10 এ আছি, উইন্ডোজের গিট ব্যাশে আমাকে এই সমস্ত কমান্ড করতে হয়েছিল (এটি নিয়মিত ডস সেমিডি শেলটিতে কাজ করে না)।

তারপরে আবার গিট বাশ-এ, আমাকে যে রেপোতে সমস্যা হয়েছিল সেগুলির একটি git cloneআমাকে করতে হয়েছিল এবং আমার ক্ষেত্রে এটি আমার আগে থেকেই স্থানীয়ভাবে ছিল এবং আমার প্রতিশ্রুতিগুলি হারাতে চাই না বলে আমার এটির আলাদা নাম করতে হয়েছিল। উদাহরণ স্বরূপ

git clone ssh://git@gitServerUrl/myRepo.git myRepo2

তারপরে আমি এটি পরিচিত হোস্ট তালিকায় যুক্ত করার অনুরোধ জানালাম, প্রশ্নটি এটি হতে পারে:

আপনি কি নিশ্চিত যে সংযোগ চালিয়ে যেতে চান (হ্যাঁ / না)?

আমি "হ্যাঁ" টাইপ করেছি এবং এটি শেষ পর্যন্ত কাজ করেছে, আপনার সাধারণত এটির মতো একটি বার্তা পাওয়া উচিত:

সতর্কতা: পরিচিত হোস্টগুলির তালিকায় স্থায়ীভাবে '[আপনার রেপো লিঙ্ক]' (ইসিডিএসএ) যুক্ত করা হয়েছে।

দ্রষ্টব্য : আপনি যদি উইন্ডোজে থাকেন তবে নিশ্চিত হয়ে নিন যে আপনি সমস্ত কমান্ডের জন্য গিট ব্যাশ ব্যবহার করেছেন, এটি নিয়মিত সিএমডি শেল বা পাওয়ারশেলের কাজ করে না, গিট বাশে আমাকে সত্যিই এটি করতে হয়েছিল।

শেষ পর্যন্ত আমি দ্বিতীয় ক্লোন রেপো মুছলাম ( myRepo2উদাহরণস্বরূপ) এবং আমার প্রথম রেপোতে ফিরে গেলাম এবং শেষ পর্যন্ত আমি আমার প্রিয় সম্পাদক ভিএসকোডে স্বাভাবিকের মতো সমস্ত গিট স্টাফ করতে পারি।


প্রকৃতপক্ষে, আমার সাইগউইন প্রম্পটটি প্রায় আমার গিট ব্যাশ প্রম্পটের মতো দেখতে দেখতে ঠিক তেমন দেখাচ্ছে তবে এটি কেবল গিট ব্যাশ প্রম্পটেই কাজ করে!
জোশিয়ার যোদার

3

আপনি যদি উইন্ডোজের জন্য গিট ব্যবহার করেন।

  • গিট জিইআইআই খুলুন।
  • গিট জিইআইতে স্থানীয় গিট সংগ্রহস্থলটি খুলুন।
  • রিমোট যুক্ত করুন বা রিমোট ইতিমধ্যে উপস্থিত থাকলে চাপুন।
  • আপনি চালিয়ে যেতে চান কিনা এই প্রশ্নের উত্তর "হ্যাঁ" দিয়ে দিন।

জিইউআই ক্লায়েন্ট আপনার জন্য কী যুক্ত করে ~/.ssh/known_hosts। এটি আপনি যদি এটি প্রায়শই না করেন এবং গিট কমান্ড লাইন ব্যবহারের প্রয়োজনীয়তা এড়ান তবে এটি সহজ মনে রাখা যায় (স্ট্যান্ডার্ড উইন্ডোজ কমান্ড লাইনগুলিতে ssh-keyscanএক্সিকিউটেবল থাকে না)।


2

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

আপনার প্রাইভেটরেপো -> সেটিংস -> কীগুলি প্রয়োগ করুন -> ডিপ্লোয় কী যুক্ত করুন -> সর্বজনীন কীটি আটকান।

এখন দূরবর্তী সার্ভারটি ব্যক্তিগত রেপোতে সংযোগ করতে সক্ষম হবে।

দ্রষ্টব্য: ডিপ্লোয় কীগুলির কেবলমাত্র রেপো পড়ার জন্য অ্যাক্সেস রয়েছে। স্পষ্টভাবে লেখার অ্যাক্সেসের অনুমতি দেওয়া দরকার।


1

এর অর্থ আপনার দূরবর্তী হোস্ট কীটি পরিবর্তিত হয়েছিল (হোস্টের পাসওয়ার্ড পরিবর্তন হতে পারে),

আপনার টার্মিনালটি এই কমান্ডটি রুট ব্যবহারকারী হিসাবে কার্যকর করার পরামর্শ দিয়েছে

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]

আপনাকে আপনার পিসি / সার্ভারের হোস্ট তালিকা থেকে সেই হোস্টের নামটি সরিয়ে ফেলতে হবে। কমান্ডের পরামর্শ দেওয়া হয়েছে এবং মূল ব্যবহারকারী হিসাবে কার্যকর করুন ute

$ sudo su                                                        // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]    // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                           // Exist from root user

আবার চেষ্টা করুন, আশা করি এটি কার্যকর হয়েছে।


দ্রষ্টব্য: আপনার শেলের উপর নির্ভর করে আপনাকে স্কোয়ার বন্ধনীগুলি escape [এবং \] বা এড়ানো বা উদ্ধৃতি ব্যবহার করতে হতে পারে।
ফ্লারেক্স 16'17 এ 17:38

1

জিজ্ঞাসা করা হলে:

Are you sure you want to continue connecting (yes/no)?

প্রতিক্রিয়া হিসাবে হ্যাঁ টাইপ করুন

এভাবেই আমি আমার সমস্যা সমাধান করেছি। তবে আপনি যদি কেবল প্রবেশের বোতামটি আঘাত করার চেষ্টা করেন, এটি কার্যকর হবে না!


0

আপনি জেনকিনসফাইলে বা আপনি যেখানে চান সেখানে 'https' ইউআরএল ফর্ম্যাটে আপনার "গিট ইউআরএল" ব্যবহার করতে পারেন।

git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'


0

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

 RUN git clone  https://github.com/kacole2/express-node-mongo-skeleton.git /www/nodejs

এর কারণটি হবে git@github.com ব্যবহার করে: ... সিনট্যাক্স সমাপ্ত হয়> ক্লোন করতে এসএসএইচ ব্যবহার করে এবং ধারকটির ভিতরে আপনার ব্যক্তিগত কীটি উপলভ্য নয়। আপনি এর পরিবর্তে RUN গিট ক্লোন> https://github.com/edenhill/librdkafka.git ব্যবহার করতে চাইবেন ।


-1

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


-4

আমি এই বার্তাটি পেয়েছি যখন আমি git cloneকোনও রেপো চেষ্টা করি যা আমার ছিল না। ফিক্সটি ছিল কাঁটাচামচ এবং তারপরে ক্লোন করা।

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