it-swarm.asia

أزل المفتاح من known_hosts

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

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

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

128
Adam Matan
sed -i '6d' ~/.ssh/known_hosts

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

في رأيي ، يعد استخدام ssh-keygen -R حلًا أفضل لمستخدم الطاقة opensh ، بينما من الأفضل أن يقوم مسؤول نظام Linux المعتاد الخاص بك بالإبقاء على مهارات sed جديدة/جديدة باستخدام الطريقة المذكورة أعلاه.

83
mikewaters

الحل الأبسط هو:

rm -f .ssh/known_hosts

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

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

ssh-keygen -R "hostname"

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

111
Sean Staats

يوجد مفتاح التبديل ssh-keygen (-R) لهذا الغرض.

رجل ssh-كجن يقرأ:

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

70
user201564

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

إليك مثال:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       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 جزء؟ يحدد الملف ورقم السطر.

18
innaM

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

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

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]

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

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

الآن يمكنك فقط boldssh كلما كنت متأكدًا من ثقتك في شهادة الخادم.

8
rouble

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

لجميع الأمثلة أدناه ، فقط استبدل القيمة بعد - 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
8
Tarun Gupta

يمكنك أيضًا إزالة سطر واحد من مضيفين معروفين على سبيل المثال 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
grosser

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

مثلا أنت تتصل

ssh some.Host.name -p 222

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

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

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

0
Arunas Bartisius

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

0
stimms

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

0
Ryan Griggs