it-swarm.asia

غير قادر على التفاوض مع XX.XXX.XX.XX: عرضهم: ssh-dss

أحاول إنشاء مستودع git على مضيف الويب الخاص بي واستنساخه على جهاز الكمبيوتر الخاص بي. إليك ما فعلت:

  1. قمت بإنشاء مستودع على الخادم البعيد.
  2. لقد قمت بإنشاء زوج رئيسي: ssh-keygen -t dsa.
  3. أضفت مفتاحي إلى ssh-agent.
  4. قمت بنسخ إلى المفتاح العمومي للخادم في ~/.ssh.

ثم ، بعد محاولة تشغيل الأمر git clone ssh://[email protected]/path-to-repository ، تظهر لي رسالة خطأ:

غير قادر على التفاوض مع XX.XXX.XX.XX: لم يتم العثور على نوع مفتاح مضيف مطابق. عرضهم: ssh-dss
فادح: لا يمكن القراءة من المستودع البعيد.
يرجى التأكد من أن لديك حقوق الوصول الصحيحة وأن المستودع موجود.

ماذا يعني ذالك؟

106
Nikita Gorshkov

أحدث إصدار opensh إهمال مفاتيح DSA افتراضيًا. يجب أن تقترح على مزود GIT الخاص بك لإضافة مفتاح مضيف معقول. الاعتماد فقط على DSA ليس فكرة جيدة.

كحل مؤقت ، يجب أن تخبر عميلك ssh أنك تريد قبول مفاتيح مضيف DSA ، كما هو موضح في الوثائق الرسمية للاستخدام القديم . لديك إمكانيات قليلة ، لكنني أوصي بإضافة هذه الأسطر إلى ملف ~/.ssh/config الخاص بك:

Host your-remote-Host
    HostkeyAlgorithms +ssh-dss

الاحتمال الآخر هو استخدام متغير البيئة GIT_SSH لتحديد هذه الخيارات:

GIT_SSH_COMMAND="ssh -oHostKeyAlgorithms=+ssh-dss" git clone ssh://[email protected]/path-to-repository
167
Jakuje

يمكنك أيضًا إضافة -oHostKeyAlgorithms=+ssh-dss في سطر ssh:

ssh -oHostKeyAlgorithms=+ssh-dss [email protected]
73
Guillaume

بالنسبة لي هذا العمل: (أضيف في .ssh\config)

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

إذا كنت مثلي ، وتفضل ألا تجعل نظام الثغرات الأمنية هذا أو المستخدم واسع النطاق ، فيمكنك إضافة خيار تهيئة إلى أي موضع يحتاج إلى ذلك عن طريق تشغيل هذا الأمر في تلك repos. (ملاحظة تعمل فقط مع إصدار git> = 2.10 ، تم إصداره 2016-09-04)

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

هذا يعمل فقط بعد الريبو هو الإعداد ولكن. إذا كنت غير مرتاح لإضافة جهاز تحكم عن بعد يدويًا (وتريد فقط استنساخه) فيمكنك تشغيل هذا الاستنساخ مثل هذا:

GIT_SSH_COMMAND='ssh -oHostKeyAlgorithms=+ssh-dss' git clone ssh://[email protected]/path-to-repository

ثم قم بتشغيل الأمر الأول لجعله دائمًا.

إذا لم يكن لديك آخر ، وما زلت ترغب في الحفاظ على ثقب المحلية قدر الإمكان أوصي وضع

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

في ملف ما ، قل git_ssh_allow_dsa_keys.sh ، و sourceing عند الحاجة.

8
golvok

أريد أن أتعاون قليلاً مع الحل لجانب الخادم. لذلك ، يقول الخادم إنه لا يدعم DSA ، وذلك لأن العميل openssh لا يقوم بتنشيطه افتراضيًا :

OpenSSH 7.0 وأكبر تعطيل تعطيل خوارزمية المفتاح العمومي ssh-dss (DSA). إنها أيضًا ضعيفة ونوصي بعدم استخدامها.

لذلك ، لإصلاح هذا في جانب الخادم ، ينبغي علي تنشيط خوارزميات Key الأخرى مثل RSA o ECDSA. لقد واجهت هذه المشكلة مع خادم في الشبكة المحلية. أقترح ما يلي:

تحديث openssh:

yum update openssh-server

دمج التكوينات الجديدة في sshd_config إذا كان هناك 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 تكوين HostKey. يجب أن تسمح بتكوين RSA و ECDSA. (إذا تم التعليق عليها افتراضيًا ، فسوف تسمح أيضًا بـ RSA ، انظر في man sshd_config جزء HostKey).

# 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 (وليس مثل DSA كما في السؤال) بمجرد القيام بذلك:

ssh-keygen

بعد ذلك ، نظرًا لوجود خيارات أكثر من ssh-dss (DSA) ، يجب على العميل openssh (> = v7) الاتصال بـ RSA أو خوارزمية أفضل.

هنا مقال جيد آخر.

هذا هو سؤالي الأول الذي أجاب عليه ، أرحب بالاقتراحات: د.

2
Gus Calca