सवाल ज्ञात_होस्ट से कुंजी निकालें


मैंने पिछले कुछ हफ्तों के दौरान कई आभासी मशीनें बनाई हैं। समस्या यह है कि .ssh/known_hosts मुझे देता है बीच वाला व्यक्ति चेतावनी। ऐसा इसलिए होता है क्योंकि एक और फिंगरप्रिंट आभासी मशीन आईपी से जुड़ा हुआ है।

में .ssh/known_hosts फ़ाइल, हालांकि, मुझे आईपी से संबंधित रिकॉर्ड नहीं मिला, केवल दो विचित्र, कुंजी जैसी स्ट्रिंग्स और "एसएसएच-आरएसए"।

क्या किसी के पास पुरानी कुंजी को हटाने के तरीके के बारे में कोई विचार है known_hosts?


111
2017-08-26 16:00


मूल


आपके द्वारा संदर्भित "विचित्र, कुंजी-जैसी तार" हैंश किए गए होस्ट / आईपी पते हैं। यह एक सुरक्षा सुविधा है जो घुसपैठियों को यह जानने से रोकती है कि आपके पास कौन सी प्रणालियों तक पहुंच है। यदि आप इसे देखते हैं तो आपके ssh_config में है HashKnownHosts yes सेट। - Deebster
यदि आपको लगता है कि फ़ाइल सामग्री बहुत भ्रमित है, तो संभवतः आपके पास लाइन-रैपिंग सक्रिय है। इसे निष्क्रिय करें। सभी लाइनें होस्ट नाम या आईपी पते से शुरू होती हैं। - Daniel B


जवाब:


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

फाइल को संशोधित करेगा ~ / .ssh / known_hosts: 6, 6 वीं रेखा को हटा रहा है।

मेरी राय में, उपयोग कर रहा हूँ ssh-keygen -R एक ओपनश पावर उपयोगकर्ता के लिए एक बेहतर समाधान है, जबकि आपका नियमित लिनक्स व्यवस्थापक उपरोक्त विधि का उपयोग करके अपने पैड कौशल को ताजा रखने के लिए बेहतर करेगा।


78
2017-07-02 17:56



मुझे नहीं लगता कि अगर आपके पास इसके लिए कोई आधिकारिक एप्लिकेशन है तो कॉन्फ़िगरेशन फ़ाइल को मैन्युअल रूप से संपादित करना एक अच्छी सलाह है। जोखिम लेना आपको एक समर्थक नहीं बनाता है, सबसे तेज़ और सुरक्षित विकल्प ढूंढता है। यह लोगों को आगे बढ़ने और संपादित करने की तरह है /etc/sudoersके बिना visudo। यदि आप अपने को तेज करना चाहते हैं sed कौशल, आगे बढ़ें और अपने सिस्टम को गड़बड़ किए बिना ऐसा करें। - kraxor
"अगर आपके पास उस के लिए आधिकारिक आवेदन है" => दोनों ssh-keygen -R तथा sed -i {line}d सुंदर "आधिकारिक" हैं, और दोनों निकट भविष्य के लिए काम करेंगे। एसएसएच-कीजेन तक लाइन नंबर से हटाने की इजाजत देता है, दोनों आधुनिक डेटा केंद्र होस्ट-नामों से निपटने की तुलना में पूरी तरह से स्वीकार्य हैं (क्योंकि, लाइन संख्याओं को अक्सर निपटने में आसान होता है, और कम त्रुटि प्रवण होती है)। - michael
ए) विशेष रूप से 6 वीं रेखा का विलोपन, सब कुछ "हाथ नहीं देखो" है। फ़ाइल की छठी पंक्ति के बारे में क्या महत्वपूर्ण है इस बारे में कोई स्पष्टीकरण नहीं है ?! बी) इसके अलावा man ssh-keygen उल्लेख है ssh-keygen -R hostname  आपने अभी कहा है ssh-keygen -R बिना होस्टनाम निर्दिष्ट किया गया है, और आपने समझाया नहीं है कि इसका मतलब क्या है। - barlop


सबसे आसान समाधान है:

rm -f .ssh/known_hosts

एसएसएच फिर से फ़ाइल को फिर से बना देगा, लेकिन आप अन्य मेजबानों के लिए कुंजी जांच खो देंगे!

या, आप इसका उपयोग कर सकते हैं:

ssh-keygen -R "hostname"

या एसएसएच "मैन-इन-द-बीच" संदेश इंगित करना चाहिए कि ज्ञात_होस्ट फ़ाइल की कौन सी रेखा अपमानजनक फिंगरप्रिंट है। फ़ाइल संपादित करें, उस पंक्ति पर कूदें और इसे हटा दें।


93
2017-08-26 16:11



ssh-keygen -R hostname भी काम करेगा - grawity
अगर हम उस फ़ाइल को हटा देते हैं, तो अन्य कुंजियां भी हटा दी जाएंगी। - shgnInc
फ़ाइल को निकालना एक बुरी सलाह है, यह किसी को एक नया पीसी खरीदने के लिए कहने जैसा है क्योंकि पुराने व्यक्ति के पास टूटा हुआ माउस है। किसी फ़ाइल को मैन्युअल रूप से संपादित करना जिसे आधिकारिक एप्लिकेशन द्वारा संपादित किया जा सकता है, भी एक बुरा विचार है। ssh-keygen एक टिप्पणी के कारण विकल्प जोड़ा गया था, लेकिन कोई स्पष्टीकरण के साथ। मुझे नहीं लगता कि यह जवाब इतने सारे अपवर्तनीय है। - kraxor
-1 पूरी वजह से "पूरी ज्ञात_होस्ट फ़ाइल हटाएं" पहली पंक्तियां। यह प्रस्तावित करने के लिए एक भयानक, भयानक, भयानक चीज है, और इसे संपादित किया जाना चाहिए। - Olivier Dulac
यह समाधान अधिक है। बस अपमानजनक रेखा को हटा दें। बस। - Blake Frederick


इसके लिए एक एसएस-कीजेन स्विच (-आर) है।

आदमी एसएसएच-कीजेन पढ़ता है:

-आर होस्टनाम                किसी ज्ञात_होस्ट फ़ाइल से होस्टनाम से संबंधित सभी कुंजियों को हटा देता है। इस                विकल्प हैश होस्ट को हटाने के लिए उपयोगी है (ऊपर -एच विकल्प देखें)।


58
2018-02-22 18:41



यह सबसे आसान और सुरक्षित तरीका है। - Leo
नोट: यह ज्ञात_होस्ट फ़ाइल की अनुमतियों को 0600 पर बदल देगा। अगर आपके पास किसी भी कारण से ज्ञात_होस्ट फ़ाइल साझा की गई है, तो यह इसके साझाकरण को अक्षम कर सकती है। - Jiri Klouda
और सही एक। इसके अलावा, मुझे करना था [localhost]:port, ब्रैकेट का उपयोग करते हुए क्योंकि मैंने कस्टम पोर्ट का अनुमान लगाया है = /। दूसरों की तरह कहा है, मैं अपने क्षणिक / परीक्षण प्रणाली के विकास के लिए कोई एसएसएच कुंजी-जांच दृष्टिकोण भी उपयोग नहीं करूंगा। - 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





आप एसएसएच को userKnownHostsFile और StrictHostKey चेकिंग झंडे का उपयोग करके ज्ञात_होस्ट फ़ाइल की जांच न करने के लिए भी निर्देश दे सकते हैं।

उदाहरण के लिए:

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

उपयोग की आसानी के लिए आप इसे उपनाम कर सकते हैं:

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

अब जब भी आप सुनिश्चित हों कि आप सर्वर के प्रमाण पत्र पर भरोसा करते हैं तो आप केवल बोल्डशश कर सकते हैं।


9
2018-03-12 16:05



क्या एक भयानक विचार है। सुरक्षा की एक परत को स्थायी रूप से अक्षम करें क्योंकि आप बहुत आलसी हैं ~/.ssh/known_hosts आधुनिक? क्यों न आगे बढ़ें और उपयोग करें telnet? "जब भी आप सुनिश्चित हों" - यदि आप निश्चित रूप से सुनिश्चित हैं, तो आपको पता नहीं है कि एमआईटीएम हमला क्या है और आपको शायद कुछ अच्छे साहित्य पढ़ने में कुछ समय व्यतीत करना चाहिए। - kraxor
ओपी के सवाल के आधार पर मुझे लगता है कि यह एक वैध जवाब है। कभी-कभी आपके पास एक परीक्षण प्रणाली है जिसे आप बहुत सारे वीएम बना रहे / नष्ट कर रहे हैं। (मैं अभी यह कर रहा हूं क्योंकि मैं आरएचसीई परीक्षा के लिए तैयार हूं।) कोई सुरक्षा प्रभाव नहीं हो सकता है। सुरक्षा प्रभावों को ध्यान में रखते हुए बहुत अच्छा है, मुझे नहीं लगता कि इसे "भयानक विचार" लेबल किया जाना है। - 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
@ बुर्गी - यह उत्तर वाक्यविन्यास के बारे में अधिक जानकारी देता है 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



किसी भी दिए गए टेक्स्ट एडिटर में इसे करने पर इसका क्या फायदा है? क्या ऐसा कोई कारण नहीं है कि इस तरह से ऐसा न करें, जैसे कि स्यूडोर्स को विडियो के साथ कैसे संपादित किया जाए? - Andy Lester
इसके साथ क्या distros आते हैं? उबंटू ऐसा प्रतीत नहीं होता है। - flickerfly
लाभ यह है कि यह स्वचालित और त्वरित / यह एक अलग बाइनरी है जिसे आप स्वयं जोड़ते हैं - grosser
आप जिस दिन आपने इस उत्तर को पोस्ट किया था, उस दिन आपने अपनी ब्लॉग प्रविष्टि को जोड़ने के बजाय यहां अपनी स्क्रिप्ट पोस्ट की हो सकती थी। यह स्पैम IMHO के रूप में योग्यता प्राप्त करता है। उल्लेख नहीं है कि आप एक ही परिणाम प्राप्त करने के लिए एक साधारण उपनाम बना सकते हैं, 7 लाइन लंबी रूबी स्क्रिप्ट की आवश्यकता नहीं है। - kraxor


होस्ट नाम या आईपी के लिए प्रविष्टि पहले कॉलम में होनी चाहिए। चेतावनी को एक लाइन नंबर भी सूचीबद्ध करना चाहिए जहां अपमानजनक कुंजी झूठ बोलती है।


0
2017-08-26 16:13





यह एक पाठ फ़ाइल है। आप आसानी से vi (m) के साथ संपादित कर सकते हैं और प्रश्न में लाइन (डीडी) को हटा सकते हैं, और फ़ाइल (wq) को सहेज सकते हैं। लेकिन यदि मेजबान को हटाने के लिए कोई विशिष्ट आदेश है, तो शायद यह सबसे सुरक्षित तरीका है।


0
2018-06-27 13:23



मैं नहीं देखता कि फ़ाइल को सीधे वीआईएम में कैसे संपादित करना "असुरक्षित" है। यह वीआईएम के साथ आपके आराम स्तर पर आधारित है। विशेष रूप से इस फ़ाइल के साथ, आपके पास सबसे बड़ा जोखिम बहुत सारी चाबियाँ हटा रहा है, इस मामले में आपको फिर से संकेत मिलेगा। - Rick Chatham
"सुरक्षा" जिसमें मैं शामिल था, 1) अन्य फाइलों (अगर कोई है) में निर्भर जानकारी को हटाने / भूलने के बारे में भूलना / 2) आकस्मिक रूप से फाइलों को तोड़ने की आवश्यकता से अधिक या कम को हटा देना। - Ryan Griggs