क्या एसएसएच की ज्ञात_होस्ट फ़ाइल से किसी विशेष होस्ट कुंजी को निकालना संभव है?

क्या एसएसएच की ज्ञात_होस्ट फ़ाइल से किसी विशेष होस्ट कुंजी को निकालना संभव है?

मैं आमतौर पर पूरे को हटा देता हूं known_hosts फ़ाइल, जिसे करने में मुझे कोई समस्या नहीं है, लेकिन जिज्ञासा से बाहर, क्या केवल एक प्रविष्टि को हटाना संभव है?

मैंने खोला known_hosts फ़ाइल, लेकिन मैं इसकी सामग्री को समझने के लिए संघर्ष कर रहा हूं ।

नीचे मेरे द्वारा सामना किया गया संदेश है, जिसके कारण मुझे यह प्रश्न पूछना पड़ा:

Add correct host key in /home/wissen16/.ssh/known_hosts to get rid of this message.Offending key in /home/wissen16/.ssh/known_hosts:1RSA host key for foo.com has changed and you have requested strict checking.Host key verification failed.

ज्ञात_होस्ट से प्रविष्टियों को हटाने के लिए इस आदेश का उपयोग करें:

ssh-keygen -R hostname

हां, आप सिर्फ एक कुंजी निकाल सकते हैं । बस इसे एक संपादक में खोलें और अपमानजनक लाइन को हटा दें । त्रुटि संदेश में कोलन के बाद की संख्या लाइन नंबर है, इसलिए यह आपके उदाहरण में -- लाइन 1 को हटाने की रेखा है । .

मैंने हाल ही में होस्ट कुंजी का उपयोग करना शुरू कर दिया है, लेकिन जब मैंने उनके साथ गड़बड़ कर दी है तो यह आम तौर पर प्रति पंक्ति एक कुंजी है इसलिए फ़ाइल का बैकअप लें और उन्हें एक बार में हटा दें जब तक कि आपको सही न मिल जाए । फिर दूसरों को वापस जोड़ें । यह करने के लिए एक लंबा रास्ता तय करना है, लेकिन काम करना चाहिए ।

उस त्रुटि के आधार पर, और बिना किसी विचार के, यह फ़ाइल में पहली होस्ट कुंजी हो सकती है जो समस्या है इसलिए फ़ाइल को विम के साथ खोलें

vim ~/.ssh/known_hosts

और मारा

dd

फिर इसे सेव करें ।

एसएसएच-कीजेन-आर होस्टनाम का उपयोग करना हमेशा काम नहीं करेगा । यदि आपके पास एसएसएच का एक नया संस्करण है जो एसएसएच-एजेंट अपहरण को रोकने के लिए होस्टनाम को "छुपा" रहा है, तो जाहिर तौर पर एसएसएच-कीजेन होस्टनाम को अनशैश करने में असमर्थ है ।

उदाहरण के लिए, मेरे पास बिल्ड-नोड -01 नामक एक होस्ट है और मैंने इससे जुड़ा है और कुंजी को स्वीकार किया है । फिर मैं इसे खरोंच से पुनर्निर्माण करता हूं, एक नया होस्ट फिंगरप्रिंट प्राप्त करता हूं और मैं फिर से कनेक्ट करने की कोशिश करता हूं, मुझे एक चेतावनी मिलेगी कि लाइन एक्स पर एक संघर्ष है (3 कहें) । मैं दौड़ता हूं ssh-keygen -R hostname, लेकिन अगली बार जब मैं कनेक्ट करने का प्रयास करता हूं तो मुझे अभी भी एक चेतावनी मिलती है कि कोई संघर्ष है । मैंने केवल यह पता लगाने के लिए फ़ाइल की जांच की कि होस्टनाम हैश किया गया था और दिखाया गया था [1] Bu4Ch@R@4D0M57uFF एक पठनीय होस्टनाम के बजाय ।

इस मामले में आपत्तिजनक होस्ट को सफलतापूर्वक हटाने का एकमात्र तरीका उपयोग करना था

sed -i 'xd' ~/.ssh/known_hosts

इस एसईडी को एक कदम आगे ले जाने के लिए, आप गलत लाइन को हटाने के मामले में ज्ञात_होस्ट का बैकअप बनाना चाह सकते हैं, इस मामले में बस एक जोड़ें । उस एक्सटेंशन के साथ बैकअप बनाने के लिए-आई विकल्प के लिए बीएके (या कोई एक्सटेंशन) । एसएसएच-कीजेन का उपयोग यह स्वचालित रूप से करता है ।

sed -i.bak 'xd' ~/.ssh/known_hosts

बस एक और साफ और आसान जवाब साझा करने के लिए मुझे अभी मिला । होस्टनाम को हटाना मेरे लिए बाहर है, क्योंकि ज्ञात_होस्ट फ़ाइल हैशेड है । हालाँकि, मैं त्रुटि संदेश में लाइन नंबर के आधार पर होस्ट प्रविष्टि को मैन्युअल रूप से संपादित कर सकता था । जैसा कि माइक स्कॉट ने पहले उल्लेख किया था, अपमानजनक होस्टनाम लाइन नंबर त्रुटि संदेश में है ।

या, मैं यह कर सकता हूं । यहाँ से: एसएसएच ज्ञात_होस्ट फ़ाइल में आपत्तिजनक कुंजी को कैसे ठीक करें

मुझे सीएलआई जादू का यह सा मिला

sed -i 'xd' ~/.ssh/known_hosts

एक्स को लाइन नंबर और वॉइला से बदलें । यदि एसईडी काम नहीं करेगा तो वह एक पर्ल उत्तर भी प्रदान करता है ।

यदि आप कुछ आईपी के लिए होस्ट कुंजी निकालना चाहते हैं, तो इससे मदद मिलेगी:

ssh-keygen -f "~/.ssh/known_hosts" -R "49.12.89.136"

अपमानजनक प्रविष्टि को हटाने के लिए यह है

sed -i '/<ipaddr|hostname>/d' ~/.ssh/known_hosts

मैंने नीचे दिए गए स्किप को एक साथ रखा । बस इसे ~/के रूप में सहेजें । आरएमहोस्ट

#!/bin/bashrmhost_help(){        echo "Usage rmhost {ipaddr|hostname}"        echo "          -h      Print this help message"        exit 0}if [ -z $1 ] || [ $1 == "-h" ]; then rmhost_helpfised -i "/$1/d" ~/.ssh/known_hostsecho "host $1 removed"exit 0

फिर इस उपनाम को ~/में डालें । बीएएसआरसी

उपनाम आरएमहोस्ट=~ / । आरएमहोस्ट

जब आपको त्रुटि मिलती है तो बस 'आरएमहोस्ट {आईपीएडीडीआर|होस्टनाम}' टाइप करें

यह मेरे लिए काम किया । किसी ज्ञात होस्ट को जोड़ने का प्रयास करने पर प्रदर्शन में दिखाया गया यह डिफ़ॉल्ट तरीका है ।

ssh-keygen -f "/home/noob/.ssh/known_hosts" -R "172.16.132.132"

बस आपको यहां आईपी एड्रेस और होस्ट फाइल पाथ बदलना होगा ।

sed '/10\.20\.120\.211/d' ~/.ssh/known_hosts > temp && mv temp ~/.ssh/known_hosts

इस मामले में, 10.20.120.211 वह होस्ट है जिसे मैं अपनी ज्ञात_होस्ट फ़ाइल से हटाना चाहता हूं, सुनिश्चित करें कि आप विशेष वर्णों से बचते हैं जैसे (।)

आप इसे अपडेट करके विशेष होस्ट को हटाने से बच सकते हैं:

ssh-keyscan -t ecdsa hostname >> ~/.ssh/known_hosts

इस तरह आपको फिर से होस्ट से जुड़ना नहीं है ।