এক্স.এক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সের সাথে আলোচনা করতে অক্ষম: কোনও মেলে হোস্ট কী ধরণের সন্ধান পাওয়া যায়নি। তাদের অফার: ssh-dss


110

আমি আমার ওয়েব হোস্টে একটি গিট সংগ্রহস্থল তৈরি করতে এবং এটি আমার কম্পিউটারে ক্লোন করার চেষ্টা করছি। আমি যা করেছি তা এখানে:

  1. আমি রিমোট সার্ভারে একটি সংগ্রহস্থল তৈরি করেছি।
  2. আমি কী জোড়া উত্পন্ন: ssh-keygen -t dsa
  3. আমি ssh- এজেন্টে আমার চাবি যুক্ত করেছি।
  4. আমি সার্ভারে সর্বজনীন কী-তে অনুলিপি করেছি ~/.ssh

এবং তারপরে, কমান্ডটি চালানোর চেষ্টা করার পরে git clone ssh://user@host/path-to-repository, আমি একটি ত্রুটি পেয়েছি:

এক্স.এক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সের সাথে আলোচনা করতে অক্ষম: কোনও মেলে হোস্ট কী ধরণের সন্ধান পাওয়া যায়নি। তাদের অফার: ssh-dss
মারাত্মক: দূরবর্তী সংগ্রহস্থল থেকে পড়া যায়নি।
দয়া করে নিশ্চিত হন যে আপনার কাছে সঠিক অ্যাক্সেসের অধিকার রয়েছে এবং সংগ্রহস্থলটি বিদ্যমান।

ওটার মানে কি?


উত্তর:


171

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

উত্তম হিসাবে, আপনার sshক্লায়েন্টকে বলতে হবে যে আপনি উত্তরাধিকারের ব্যবহারের জন্য অফিসিয়াল ডকুমেন্টেশনে বর্ণিত ডিএসএ হোস্ট কীগুলি গ্রহণ করতে চান । আপনার কয়েকটি সম্ভাবনা রয়েছে তবে আমি এই ~/.ssh/configফাইলগুলি আপনার ফাইলে যুক্ত করার পরামর্শ দিচ্ছি :

Host your-remote-host
    HostkeyAlgorithms +ssh-dss

অন্যান্য সম্ভাবনাগুলি হ'ল GIT_SSHএই বিকল্পগুলি নির্দিষ্ট করতে পরিবেশের পরিবর্তনশীল ব্যবহার করা :

GIT_SSH_COMMAND="ssh -oHostKeyAlgorithms=+ssh-dss" git clone ssh://user@host/path-to-repository

1
এখন এটি হোস্টের নামটি সুনির্দিষ্ট না করেই কাজ করেছে HostkeyAlgorithms +ssh-dss। ধন্যবাদ।
জিওভান্নিপডস

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

@ জাকুজে দুঃখিত দুঃখিত, আমি ভুল ক্লিক করেছি, এবং এখনই পরিবর্তনের অসম্ভবতার কারণে, আমি আমার উত্তর আপডেট করতে পারিনি।
giovannipds

1
@ জাকুজে আমি ইতিমধ্যে আমার ভোট আপডেট করেছি, কেবল আপনাকে জানাতেই। =)
জিওভান্নিপ্ডস

আপনার .ssh ডিরেক্টরিতে এই জাতীয় কোনও ফাইল না থাকলে "কনফিগারেশন" নামের একটি খালি পাঠ্য ফাইলটি করবে।
আরএমরিসি

78

আপনি -oHostKeyAlgorithms=+ssh-dssআপনার এসএসএস লাইনে যুক্ত করতে পারেন :

ssh -oHostKeyAlgorithms=+ssh-dss user@host

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

20

আমার জন্য এটি কাজ করেছে: (এতে যুক্ত .ssh\config)

Host *
HostkeyAlgorithms +ssh-dss
PubkeyAcceptedKeyTypes +ssh-dss

দ্বিতীয় বিকল্পটি সমস্যার সাথে সম্পর্কিত নয় এবং প্রথমটিতে আমার উত্তরটিতে ইতিমধ্যে উল্লেখ করা হয়েছে।
জাকুজে

হোস্ট আপনার হোস্টটি আমার পক্ষে কাজ করে না, তবে আপনার হোস্টটি যে হোস্টটির নাম আমি (ক্লায়েন্ট) থেকে ssh কমান্ড চালাচ্ছি তার নাম provided তবে হোস্ট * আমার পক্ষে কাজ করেছেন।
কৃষিশু

2
@ ক্রিশচু না, yuor-hostআপনি যে হোস্টটির sshবিরুদ্ধে লড়াই করছেন তা কি? সমস্ত হোস্টের জন্য অনিরাপদ ডিফল্ট সেট করা সবসময় খারাপ ধারণা।
জাকুজে

10

আপনি যদি আমার মতো হন এবং বরং এই সুরক্ষা গর্ত সিস্টেম বা ব্যবহারকারী-প্রশস্ত করতে না চান, তবে আপনি সেই রেপোগুলিতে এই কমান্ডটি চালিয়ে যে কোনও গিট রেপোর জন্য এটির প্রয়োজন একটি কনফিগারেশন বিকল্প যুক্ত করতে পারেন। (নোটটি কেবল গিট সংস্করণ> = 2.10 এর সাথে কাজ করে, প্রকাশিত 2016-09-04)

git config core.sshCommand 'ssh -oHostKeyAlgorithms=+ssh-dss'

এটি কেবল রেপো সেটআপ হওয়ার পরে কাজ করে। আপনি যদি ম্যানুয়ালি একটি রিমোট যুক্ত করতে স্বাচ্ছন্দ্য বোধ করেন না (এবং কেবল ক্লোন করতে চান) তবে আপনি ক্লোনটি এভাবে চালাতে পারেন:

GIT_SSH_COMMAND='ssh -oHostKeyAlgorithms=+ssh-dss' git clone ssh://user@host/path-to-repository

তারপরে স্থায়ী করার জন্য প্রথম কমান্ডটি চালান।

যদি আপনার সর্বশেষটি না থাকে এবং এখনও গর্তটি যতটা সম্ভব স্থানীয় রাখতে চান আমি রাখার পরামর্শ দিই

export GIT_SSH_COMMAND='ssh -oHostKeyAlgorithms=+ssh-dss'

কোনও ফাইলের মধ্যে কোথাও বলুন git_ssh_allow_dsa_keys.sh, এবং sourceযখন প্রয়োজন হয় তখন এটি আইএনও করুন।


3

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

ওপেনএসএইচ 7.0 এবং আরও বৃহত্তর অনুরূপভাবে ssh-dss (DSA) পাবলিক কী অ্যালগরিদম অক্ষম করে। এটিও দুর্বল এবং আমরা এর ব্যবহারের বিরুদ্ধে প্রস্তাব দিই।

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

ওপেনশ আপডেট করুন:

yum update openssh-server

Sshd_config.rpmnew থাকলে নতুন কনফিগারেশনগুলিকে মার্জ করুন।

/ Etc / ssh / এ হোস্ট কী রয়েছে তা যাচাই করুন। নতুন তৈরি না করে থাকলে দেখুন man ssh-keygen

$ ll /etc/ssh/
total 580
-rw-r--r--. 1 root root     553185 Mar  3  2017 moduli
-rw-r--r--. 1 root root       1874 Mar  3  2017 ssh_config
drwxr-xr-x. 2 root root       4096 Apr 17 17:56 ssh_config.d
-rw-------. 1 root root       3887 Mar  3  2017 sshd_config
-rw-r-----. 1 root ssh_keys    227 Aug 30 15:33 ssh_host_ecdsa_key
-rw-r--r--. 1 root root        162 Aug 30 15:33 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys    387 Aug 30 15:33 ssh_host_ed25519_key
-rw-r--r--. 1 root root         82 Aug 30 15:33 ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys   1675 Aug 30 15:33 ssh_host_rsa_key
-rw-r--r--. 1 root root        382 Aug 30 15:33 ssh_host_rsa_key.pub

/ Etc / ssh / sshd_config হোস্টকি কনফিগারেশনে যাচাই করুন। এটি আরএসএ এবং ইসিডিএসএর কনফিগারেশনকে অনুমতি দেবে। (যদি তাদের সকলকেই ডিফল্টরূপে মন্তব্য করা হয় তবে এটি man sshd_configআরএসএকেও মঞ্জুরি দেয় , হোস্টকি এর অংশে দেখুন )।

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

ক্লায়েন্ট পক্ষের জন্য, এসএসএসের জন্য একটি কী তৈরি করুন (প্রশ্নের মতো ডিএসএ নয়) কেবল এটি করে:

ssh-keygen

এর পরে, কারণ ssh-dss (DSA) এর চেয়ে বেশি বিকল্প রয়েছে ক্লায়েন্ট ওপেনশ (> = v7) এর সাথে আরএসএ বা আরও ভাল অ্যালগরিদমের সাথে সংযুক্ত হওয়া উচিত।

এখানে আরও একটি ভাল নিবন্ধ।

এটি আমার প্রথম প্রশ্নের উত্তর, আমি পরামর্শকে স্বাগত জানাই: ডি।


1

কীভাবে একাধিক অ্যালগোরিদম নির্দিষ্ট করা যায়? আমি জিজ্ঞাসা করেছি কারণ গিটটি আমার ওয়ার্কটপের ল্যাপটপে সবেমাত্র আপডেট হয়েছে, (উইন্ডোজ 10, উইন্ডোজ বিল্ডের অফিশিয়াল গিট ব্যবহার করে) এবং আমি যখন আমার অ্যাজুর ডিভোপস রিমোটে কোনও প্রকল্পের শাখাটি ঠেলে দেওয়ার চেষ্টা করেছি তখন আমি এই ত্রুটিটি পেয়েছি। আমি --set-upstream চাপ দেওয়ার চেষ্টা করেছি এবং এটি পেয়েছি:

Unable to negotiate with 20.44.80.98 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

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


-3

আপনি হয় উপরোক্ত পদ্ধতির অনুসরণ করুন বা এটি অনুসরণ করুন

.Ssh ডিরেক্টরিতে কনফিগার ফাইলটি তৈরি করুন এবং এই লাইনটি যুক্ত করুন।

host xxx.xxx
 Hostname xxx.xxx
 IdentityFile ~/.ssh/id_rsa
 User xxx
 KexAlgorithms +diffie-hellman-group1-sha1

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