أحاول إنشاء مستودع git على مضيف الويب الخاص بي واستنساخه على جهاز الكمبيوتر الخاص بي. إليك ما فعلت:
ssh-keygen -t dsa
.~/.ssh
.ثم ، بعد محاولة تشغيل الأمر git clone ssh://[email protected]/path-to-repository
، تظهر لي رسالة خطأ:
غير قادر على التفاوض مع XX.XXX.XX.XX: لم يتم العثور على نوع مفتاح مضيف مطابق. عرضهم: ssh-dss
فادح: لا يمكن القراءة من المستودع البعيد.
يرجى التأكد من أن لديك حقوق الوصول الصحيحة وأن المستودع موجود.
ماذا يعني ذالك؟
أحدث إصدار 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
يمكنك أيضًا إضافة -oHostKeyAlgorithms=+ssh-dss
في سطر ssh:
ssh -oHostKeyAlgorithms=+ssh-dss [email protected]
بالنسبة لي هذا العمل: (أضيف في .ssh\config
)
Host *
HostkeyAlgorithms +ssh-dss
PubkeyAcceptedKeyTypes +ssh-dss
إذا كنت مثلي ، وتفضل ألا تجعل نظام الثغرات الأمنية هذا أو المستخدم واسع النطاق ، فيمكنك إضافة خيار تهيئة إلى أي موضع يحتاج إلى ذلك عن طريق تشغيل هذا الأمر في تلك 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
، و source
ing عند الحاجة.
أريد أن أتعاون قليلاً مع الحل لجانب الخادم. لذلك ، يقول الخادم إنه لا يدعم 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 أو خوارزمية أفضل.
هذا هو سؤالي الأول الذي أجاب عليه ، أرحب بالاقتراحات: د.