سؤال قم بإزالة المفتاح من known_hosts


لقد قمت ببناء العديد من الأجهزة الافتراضية خلال الأسابيع القليلة الماضية. المشكلة هي ، .ssh/known_hosts يعطيني رجل في الوسط تحذير. يحدث هذا بسبب ارتباط بصمة أخرى بجهاز IP الظاهري.

في ال .ssh/known_hosts ملف ، ومع ذلك ، لا أجد السجل المرتبط بالملكية الفكرية ، فقط اثنين غريبة ، سلاسل تشبه المفتاح و "ssh-rsa".

هل لديها أي أفكار حول كيفية إزالة المفتاح القديم من known_hosts؟


111
2017-08-26 16:00


الأصل


"الغريب ، سلاسل تشبه المفتاح" التي تشير إليها هي عناوين المضيفات / ip المجزأة. هذه ميزة أمان تساعد على منع المتطفل من معرفة الأنظمة التي يمكنك الوصول إليها. إذا كنت ترى هذا ثم ssh_config الخاص بك HashKnownHosts yesجلس. - Deebster
إذا شعرت أن محتويات الملف مربكة للغاية ، فمن المحتمل أن يكون لديك التفاف خطي مفعل. قم بإلغاء تنشيطه. تبدأ كل الخطوط باسم مضيف أو عنوان IP. - Daniel B


الأجوبة:


sed -i '6d' ~/.ssh/known_hosts

سيتم تعديل الملف ~ / .ssh / known_hosts: 6 ، إزالة السطر السادس.

في رأيي ، باستخدام ssh-keygen -R هو حل أفضل لمستخدم القوة الافتتاحية ، في حين أن مسؤول لينكس العادي الخاص بك من شأنه أن يجعل من الأفضل الحفاظ على مهاراته / مهاراتها باستخدام الأسلوب السابق.


78
2017-07-02 17:56



لا أعتقد أنها نصيحة جيدة لتحرير ملف التكوين يدويًا إذا كان لديك طلب رسمي لذلك. مخاطر المخاطرة لا تجعلك مواليًا ، حيث تجد الخيار الأسرع والأكثر أمانًا. إنه مثل إخبار الناس بالمضي قدمًا والتعديل /etc/sudoers بدون visudo. إذا كنت ترغب في شحذ الخاص بك sed المهارات ، والمضي قدما وفعل ذلك دون العبث نظامك. - kraxor
"إذا كان لديك طلب رسمي لذلك" => كليهما ssh-keygen -R و sed -i {line}d هي "رسمية" جميلة ، وستعمل كلتاهما في المستقبل المنظور. يسمح Util ssh-keygen بالإزالة حسب رقم السطر ، وكلاهما مقبول تمامًا (لأن أرقام الأسطر غالباً ما تكون أسهل في التعامل معها ، وأقل عرضة للخطأ ، من التعامل مع أسماء المضيفين الحديثة لمراكز البيانات). - michael
أ) حذف الخط السادس على وجه التحديد ، هو كل شيء "لا تبدو بأيديهم". لا يوجد تفسير على الإطلاق لما هو مهم حول الخط السادس للملف ؟! B) أيضا man ssh-keygen يذكر ssh-keygen -R hostname  لقد قلت للتو ssh-keygen -R مع عدم وجود اسم مضيف محدد ، ولم تشرح ما تعنيه بذلك. - barlop


أبسط حل هو:

rm -f .ssh/known_hosts

ssh سيعيد إنشاء الملف مرة أخرى ، لكنك تفقد مفتاح التحقق للمضيفين الآخرين!

أو يمكنك استخدام:

ssh-keygen -R "hostname"

أو يجب أن تشير رسالة ssh "man-in-the-middle" إلى أي سطر من ملف known_hosts لديه بصمة الإساءة. قم بتحرير الملف والقفز إلى هذا الخط وحذفه.


93
2017-08-26 16:11



ssh-keygen -R hostname سوف تعمل أيضا. - grawity
إذا أزلنا هذا الملف ، فستزول المفاتيح الأخرى أيضًا. - shgnInc
إزالة الملف نصيحة سيئة ، مثل إخبار شخص ما بشراء جهاز كمبيوتر شخصي جديد لأن الجهاز القديم لديه ماوس مكسور. إن تحرير الملف الذي يمكن تحريره بواسطة تطبيق رسمي هو أيضًا فكرة سيئة. ال ssh-keygen تمت إضافة خيار بسبب تعليق ، ولكن دون أي تفسير. لا أعتقد أن هذه الإجابة تستحق الكثير من التأملات. - kraxor
-1 بسبب الخطوط الأولى "حذف الملف بأكمله known_hosts". هذا أمر رهيب ، رهيب ، يقترحه ، ويجب تحريره. - Olivier Dulac
هذا الحل هو مبالغة. فقط أزل الخط المسيء هذا هو. - Blake Frederick


هناك مفتاح ssh-keygen (-R) لهذا.

يقرأ man ssh-keygen:

-R اسم المضيف                يزيل جميع المفاتيح التي تنتمي إلى اسم المضيف من ملف known_hosts. هذه                الخيار مفيد لحذف المضيفات المجزأة (انظر الخيار -H أعلاه).


58
2018-02-22 18:41



هذه هي الطريقة الأسهل والأكثر أمانا. - Leo
ملاحظة: سيؤدي ذلك إلى تغيير أذونات الملف known_hosts إلى 0600. إذا كان لديك ملف known_hosts مشترك لأي سبب ، فقد يعطل ذلك المشاركة. - Jiri Klouda
والصحيح. أيضا ، كان علي القيام به [localhost]:port، باستخدام الأقواس لأنني استخدم منفذ مخصص أظن = /. وكما قال آخرون ، فإنني سأستخدم أيضًا نهج التحقق من المفاتيح SSH الخاص بنظام تطوير عابر / اختباري. - Pysis


سيخبرك التحذير بالخط الدقيق في ملف المضيفات المعروفة.

إليك مثال على ذلك:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for foo-bar.net has changed,
and the key for the corresponding IP address 127.0.0.1
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in /home/user/.ssh/known_hosts:6
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

شاهد /home/user/.ssh/known_hosts:6 جزء؟ يحدد الملف ورقم السطر.


16
2017-08-26 16:17





يمكنك أيضًا إرشاد ssh لعدم التحقق من الملف known_hosts باستخدام علامات UserKnownHostsFile و StrictHostKeyChecking.

على سبيل المثال:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com

لسهولة الاستخدام ، يمكنك تسمية هذا:

alias boldssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

الآن يمكنك boldssh بمجرد التأكد من أنك تثق بشهادة الخادم.


9
2018-03-12 16:05



يا لها من فكرة فظيعة. بشكل دائم تعطيل طبقة من الأمن لمجرد أنك كسول جدا الحفاظ على الخاص بك ~/.ssh/known_hosts حتى الآن؟ لماذا لا مجرد المضي قدما واستخدامها telnet؟ "عندما تكون متأكداً" - إذا كنت متأكداً من أي شيء ، فليس لديك أدنى فكرة عن هجوم MITM ، وربما ينبغي عليك قضاء بعض الوقت في قراءة بعض المؤلفات الجيدة. - kraxor
استنادا إلى سؤال OP أعتقد أن هذا هو الجواب الصحيح. أحيانًا يكون لديك نظام اختبار تقوم بإنشائه / إتلاف الكثير من أجهزة VM. (أنا أفعل هذا الآن بينما أقوم بإعداد امتحان RHCE). قد لا يكون هناك أي آثار أمنية. مع ملاحظة التأثيرات الأمنية الكبيرة ، لا أعتقد أن هذا يجب وصفه بـ "فكرة رهيبة". - Rick Chatham
ذات صلة: superuser.com/a/1126243/73961 - michael


تحتاج إلى تشغيل الأمر التالي للتخلص من هذه المشكلة. افتح الطرفية واكتب الأمر التالي:

لجميع الأمثلة أدناه مجرد استبدال القيمة بعد -R

ssh-keygen -R server-name
ssh-keygen -R server.ip.addre.ss
ssh-keygen -R 202.54.1.5
ssh-keygen -R server1.example.com

4
2018-05-28 09:28



وقد سبق اقتراح هذه الطريقة في الإجابات السابقة. هل يمكنك التوسع في ما هو مختلف في إجابتك؟ - Burgi
Burgi - هذه الإجابة تعطي المزيد من التفاصيل حول بناء جملة ssh-keygen -R من أي من الإجابات الأخرى حتى الآن. تظهر من خلال المثال بالضبط ما يمكنك الكتابة بعد -R. لذا فإن هذه الإجابة جديرة بالاهتمام ، على الرغم من أنها ليست إجابة جديدة تمامًا. - Yitz
Yitz لقد تم تعليقي كجزء من المراجعة. في ذلك الوقت (قبل 18 شهراً) اعتقدت أن السؤال يحتاج إلى القليل من المساعدة لجعله أفضل. - Burgi


يمكنك أيضًا إزالة سطر واحد من المضيفين المعروفين على سبيل المثال. rmknownhost 111 (111 هو خط الإزالة):

#! /usr/bin/env ruby
line = ARGV[0] || raise("gimme line to remove")
hosts = File.expand_path("~/.ssh/known_hosts")
content = File.readlines(hosts)
removed = content.delete_at line.to_i - 1
puts "Removed:\n#{removed}"
File.open(hosts, 'w'){|f| f.write content * ""}

احفظ هذا باسم rmknownhost في مجلد من الخاص بك PATH.


2
2018-06-22 16:32



ما فائدة هذا الأمر في القيام به في أي محرر نصوص معين؟ هل هناك سبب لعدم القيام بهذه الطريقة ، مثل كيف يجب تحرير sudoers مع visudo؟ - Andy Lester
ما توزيعات تأتي مع هذا؟ يبدو أن أوبونتو لا يمتلكها. - flickerfly
الفائدة هي أنه آلي وسريع / إنه ثنائي منفصل تضيفه بنفسك - grosser
يمكنك نشر النص البرمجي هنا فقط بدلاً من ربط إدخال المدونة الخاص بك الذي أنشأته في يوم نشر هذه الإجابة. هذا يؤهل بمثابة البريد المزعج IMHO. ناهيك عن أنه يمكنك إنشاء اسم مستعار بسيط لتحقيق النتيجة نفسها ، لا حاجة لسكربت 7 خطوط طويلة روبي. - kraxor


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


0
2017-08-26 16:13





إنه ملف نصي. يمكنك تحرير بسهولة مع vi (m) وحذف الخط في السؤال (dd) وحفظ الملف (wq). ولكن إذا كان هناك أمر محدد لإزالة مضيف ، فمن المحتمل أن يكون ذلك الأسلوب الأكثر أمانًا.


0
2018-06-27 13:23



لا أرى كيف أن تحرير الملف مباشرة في VIM هو "غير آمن". انها تقوم على مستوى راحتك مع VIM. خاصة مع هذا الملف ، فإن أكبر خطر لديك هو حذف الكثير من المفاتيح ، وفي هذه الحالة ستتم مطالبتك مرة أخرى فقط. - Rick Chatham
"الأمان" الذي كنت أشير إليه ينطوي على 1) النسيان / عدم المعرفة لإزالة المعلومات التابعة في ملفات أخرى (إن وجدت) و 2) حذف بطريق الخطأ أكثر أو أقل مما هو مطلوب ، وبالتالي كسر الملف. - Ryan Griggs


جميع الإجابات جيدة ، ولكن للمحترفين الحقيقي SSH لدينا معلومات مفقودة عن كيفية إزالة توقيع ssh مع رقم المنفذ.

مثلا قمت بالاتصال

ssh some.host.name -p 222

وتحصل على تحذير ، ولإزالة هذا ، تحتاج إلى استخدام رقم منفذ القولون المربّع:

ssh-keygen -R [some.host.name]:222

نأمل أن يساعد هذا لمستخدمي التكوين غير قياسي.


0
2018-05-16 08:03