سؤال

عندما أقوم بتجهيز الجهاز ، أحصل على هذا الخطأ في وقت ما ، ويطلب من القول "نعم" أو "لا". هذا يتسبب في بعض المتاعب عند الركض من البرامج النصية التي تلقائيًا إلى آلات أخرى.

رسالة تحذير:

The authenticity of host '<host>' can't be established.
ECDSA key fingerprint is    SHA256:TER0dEslggzS/BROmiE/s70WqcYy6bk52fs+MLTIptM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pc' (ECDSA) to the list of known hosts.

هل هناك طريقة لقول "نعم" تلقائيًا أو تجاهل هذا؟

هل كانت مفيدة؟

المحلول

اعتمادًا على عميل SSH الخاص بك ، يمكنك تعيين خيار StricThostkeyCheCking إلى NO على سطر الأوامر ، و/أو إرسال المفتاح إلى ملف NULL المعروف. يمكنك أيضًا تعيين هذه الخيارات في ملف التكوين الخاص بك ، إما لجميع المضيفين أو لمجموعة معينة من عناوين IP أو أسماء المضيف.

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

تعديل

كما يلاحظ @iniandunn ، هناك مخاطر أمنية للقيام بذلك. إذا كان المورد الذي تتصل به قد تم تخفيفه من قبل مهاجم ، فيمكنه إعادة تشغيل تحدي خادم الوجهة مرة أخرى ، ويخدعك في التفكير في أنك تتصل بالمورد البعيد بينما يتصلون بهذا المورد في الواقع بيانات اعتمادك. يجب أن تفكر بعناية ما إذا كان هذا يمثل خطرًا مناسبًا قبل تغيير آلية الاتصال الخاصة بك لتخطي HostKeyChecking.

المرجعي.

نصائح أخرى

السؤال القديم يستحق إجابة أفضل.

يمكنك منع موجه التفاعلية دون تعطيل StrictHostKeyChecking (وهو غير آمن).

دمج المنطق التالي في البرنامج النصي الخاص بك:

if [ -z `ssh-keygen -F $IP` ]; then
  ssh-keyscan -H $IP >> ~/.ssh/known_hosts
fi

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

وبهذه الطريقة ، تتعرض للهجوم في الوسط مرة واحدة فقط ، والتي قد يتم تخفيفها من خلال:

  • التأكد من أن البرنامج النصي يتصل لأول مرة عبر قناة آمنة
  • تفتيش سجلات أو معروفة _hosts للتحقق من بصمات الأصابع يدويًا (سيتم القيام بها مرة واحدة فقط)

لتعطيل (أو التحكم في تعطيل) ، أضف الأسطر التالية إلى بداية /etc/ssh/ssh_config...

Host 192.168.0.*
   StrictHostKeyChecking=no
   UserKnownHostsFile=/dev/null

خيارات:

  • يمكن أن تكون الشبكة الفرعية المضيفة * للسماح بالوصول غير المقيد إلى جميع IPS.
  • يحرر /etc/ssh/ssh_config للتكوين العالمي أو ~/.ssh/config للتكوين الخاص بالمستخدم.

نرى http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

سؤال مماثل على superuser.com - انظر https://superuser.com/a/628801/55163

تأكد ~/.ssh/known_hosts قابل للكتابة. التي أصلحت لي.

أفضل طريقة للقيام بذلك هي استخدام "BatchMode" بالإضافة إلى "StricThostkeyChecking". وبهذه الطريقة ، سيقبل البرنامج النصي اسم مضيف جديد ويكتبه إلى ملف المعروف _hosts ، ولكنه لن يتطلب تدخل نعم/لا.

ssh -o BatchMode=yes -o StrictHostKeyChecking=no user@server.example.com "uptime"

قم بتحرير ملف التكوين الخاص بك الموجود عادة في "~/.ssh/config" ، وفي التسول للملف ، أضف الأسطر أدناه

Host *
    User                   your_login_user
    StrictHostKeyChecking  no
    IdentityFile          ~/my_path/id_rsa.pub

تعيين المستخدم على your_login_user يقول أن هذه الإعدادات تنتمي إلى your_login_user
STRICTHOSTKEYCHECKING SET إلى NO سوف تجنب المطالبة
IdentityFile هو طريق مفتاح RSA

هذا يعمل بالنسبة لي ولرصاصي ، حظًا سعيدًا لك.

يتم إصدار هذا التحذير بسبب ميزات الأمان ، لا تقم بتعطيل هذه الميزة.

يتم عرضه مرة واحدة فقط.

إذا كان لا يزال يظهر بعد الاتصال الثاني ، فربما تكون المشكلة كتابة إلى known_hosts ملف. في هذه الحالة ، ستحصل أيضًا على الرسالة التالية:

Failed to add the host to the list of known hosts 

يمكنك إصلاحه عن طريق تغيير مالك تغيير أذونات الملف من قبل المستخدم.

sudo chown -v $USER ~/.ssh/known_hosts

بالإشارة إلى إجابة Cori ، قمت بتعديله واستخدمته أدناه ، والذي يعمل. بدون exit, ، كان الأمر المتبقي هو التسجيل بالفعل إلى الجهاز البعيد ، والذي لم أكن أريده في البرنامج النصي

ssh -o StrictHostKeyChecking=no user@ip_of_remote_machine "exit"

افعل هذا -> chmod +w ~/.ssh/known_hosts. هذا يضيف إذن الكتابة إلى الملف على ~/.ssh/known_hosts. بعد ذلك ستتم إضافة المضيف البعيد إلى known_hosts ملف عند الاتصال به في المرة القادمة.

بشكل عام ، تحدث هذه المشكلة عندما تقوم بتعديل المفاتيح في كثير من الأحيان. بناءً على الخادم ، قد يستغرق الأمر بعض الوقت لتحديث المفتاح الجديد الذي قمت بإنشائه ولصقه في الخادم. لذلك بعد إنشاء المفتاح واللصق في الخادم ، انتظر لمدة 3 إلى 4 ساعات ثم حاول. يجب حل المشكلة. حدث ذلك معي.

من الناحية المثالية ، يجب عليك إنشاء سلطة شهادة تتم إدارتها ذاتيا. ابدأ بتوليد زوج مفتاح: ssh-keygen -f cert_signer

ثم قم بتوقيع مفتاح المضيف العام لكل خادم: ssh-keygen -s cert_signer -I cert_signer -h -n www.example.com -V +52w /etc/ssh/ssh_host_rsa_key.pub

هذا يولد مفتاح المضيف العام الموقّع: /etc/ssh/ssh_host_rsa_key-cert.pub

في /etc/ssh/sshd_config, ، نقطة HostCertificate إلى هذا الملف: HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub

أعد تشغيل خدمة SSHD: service sshd restart

ثم على عميل SSH ، أضف ما يلي إلى ~/.ssh/known_hosts: @cert-authority *.example.com ssh-rsa AAAAB3Nz...cYwy+1Y2u/

أعلاه يحتوي على:

  • @cert-authority
  • المجال *.example.com
  • المحتويات الكاملة للمفتاح العام cert_signer.pub

ال cert_signer سوف يثق المفتاح العام في أي خادم يتم توقيع مفتاح المضيف العام من قبل cert_signer مفتاح سري.

على الرغم من أن هذا يتطلب تكوينًا لمرة واحدة على جانب العميل ، إلا أنه يمكنك الوثوق بخوادم متعددة ، بما في ذلك تلك التي لم يتم توفيرها بعد (طالما قمت بتوقيع كل خادم ، وهذا هو).

لمزيد من التفاصيل ، انظر صفحة الويكي هذه.

أضف هذه إلى/etc/ssh/ssh_config

Host *
UserKnownHostsFile=/dev/null
StrictHostKeyChecking=no

قم بتشغيل هذا في الخادم المضيف ، إنها مشكلة في الولادة

chmod -R 700 ~/.ssh

كان لدي نفس الخطأ وأردت لفت الانتباه إلى حقيقة أنه - كما حدث لي - قد يكون لديك امتيازات خاطئة فقط.
لقد قمت بإعداد الخاص بك .ssh الدليل إما منتظم أو root المستخدم وبالتالي يجب أن تكون المستخدم الصحيح. عندما ظهر هذا الخطأ ، كنت root لكنني قمت بتكوين .ssh كمستخدم عادي. الخروج root تم التصليح.

أنا حل المشكلة التي تعطي أدناه خطأ مكتوب:
خطأ:
لا يمكن إنشاء صحة مضيف "xxx.xxx.xxx".
بصمة مفتاح RSA هي 09: 6C: EF: CD: 55: C4: 4F: SS: 5A: 88: 46: 0A: A9: 27: 83: 89.

المحلول:
1. تثبيت أي أداة openssh.
2. تشغيل Command SSH
3. سوف تطلب هل تضيف هذا المضيف مثل. تقبل نعم.
4. سيضيف هذا المضيف في قائمة المضيف المعروفة.
5. الآن أنت قادر على التواصل مع هذا المضيف.

هذا الحل يعمل الآن ......

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top