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


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

मैं आमतौर पर पूरे को हटाने का अंत करता हूं 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:1
RSA host key for foo.com has changed and you have requested strict checking.
Host key verification failed.

249
2018-01-10 05:56


मूल




जवाब:


Known_hosts से प्रविष्टियों को निकालने के लिए इस कमांड का उपयोग करें:

ssh-keygen -R hostname

427
2018-01-10 07:43



यह एक आईपी पते के साथ भी काम करता है। उदाहरण के लिए, मेरे पास मेरे वेब सर्वर के लिए एक DNS होस्ट शॉर्टकट है। एक संघर्ष को हटाने के लिए मेरे पास कस्टम होस्टनाम और आईपी पते के लिए कुंजी के बीच था, मुझे दोनों के लिए प्रविष्टियों को हटाना पड़ा था। इसलिए ssh-keygen -R xxx.xxx.xxx.xxx। - StrangeElement
@StrangeElement के रूप में, कुछ समय यह स्पष्ट है कि आपको मेजबाननाम के अलावा आईपी होस्ट को भी हटाना होगा। - Gonzalo Cao
इसके अलावा, यह स्वचालित रूप से बैकअप रखता है (मेरी ओएसएक्स मशीन पर: Original contents retained as /Users/nha/.ssh/known_hosts.old, यह मानते हुए कि उबंटू के लिए यह वही है)। - nha
इसके अलावा, यदि आप गैर-मानक एसएसएच पोर्ट का उपयोग कर रहे हैं, तो इस प्रारूप का उपयोग करें ssh-keygen -R [ssh.sssshh.com]:1234 - Shiji.Jiang
इस सवाल के लिए अब तक का सबसे अच्छा जवाब। एक जादू की तरह काम करता है - bademba


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


28
2018-01-10 06:00



मुझे नहीं पता था कि यह लाइन नंबर की पहचान करता है, जो अविश्वसनीय रूप से सहायक है। - deltree


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

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

vim ~/.ssh/known_hosts

और मारा

dd

फिर इसे बचाओ।


18
2018-01-10 06:01



आप इसका उपयोग कर सकते हैं: पंक्ति संख्या दिखाने के लिए vim में nu सेट करें। Takkat जवाब वैसे भी सबसे अच्छा है। - Javier Rivera
मैं सहमत नहीं था कि आप यह नहीं कर सकते थे। मैं भविष्य में इसका उपयोग करने जा रहा हूं। मैंने विम के लिए लाइन नंबर सेटिंग देखने के लिए अर्थ रखा। धन्यवाद। - percent20


Ssh-keygen -R होस्टनाम का प्रयोग हमेशा काम नहीं करेगा। यदि आपके पास एसएसएच का एक नया संस्करण है जो एसएसएच एजेंट अपहरण को रोकने के लिए होस्टनामों को "छुपा" रहा है, तो स्पष्ट रूप से ssh-keygen होस्टनाम को खोलने में असमर्थ है।

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

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

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

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

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

3
2018-03-24 22:24



यह सही नहीं है। ssh-keygen -R {hostname} काम करेगा, भले ही मेजबाननाम 'छुपा' (हैश) हों। फिर भी, हाँ, कोई संख्या द्वारा प्रविष्टि को हटा सकता है (उदाहरण के लिए, 10 वीं प्रविष्टि के माध्यम से sed -i.bak 10d ~/.ssh/known_hosts), लेकिन यह आमतौर पर आवश्यक नहीं है। यह हो सकता है कि एक गैर-मानक बंदरगाह का उपयोग किया गया था, इस मामले में, आपको कमांड को नोट (प्रारूप उद्धरण) के रूप में प्रारूपित करना पड़ सकता है: ssh-keygen -R '[hostname]:2222' - michael
@ Michael_n को जानना अच्छा है, यह बहुत संभावना है कि यह एक गैर मानक पोर्ट था जो प्रवेश को हटाने की मेरी क्षमता को प्रभावित कर रहा था। मुझे यह भी ध्यान रखना चाहिए कि यदि आपने मेजबान के लिए कई फिंगरप्रिंट स्वीकार किए हैं, तो मुझे यकीन नहीं है कि यह एक ही समय में सभी प्रविष्टियों को हटा देता है, या सिर्फ एक ही समय में। - dragon788


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

या, मैं यह कर सकता हूँ। यहां से: ssh known_hosts फ़ाइल में अपमानजनक कुंजी को कैसे ठीक करें

मुझे क्ली जादू का थोड़ा सा मिला

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

एक्स को लाइन नंबर और वॉयला के साथ बदलें। अगर वह काम नहीं करेगा तो वह एक पेर्ल जवाब भी प्रदान करता है।


1
2018-02-20 00:37





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

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


0
2018-02-20 01:32



आईपी ​​पते और होस्टनाम अब ज्ञात मेजबान फ़ाइल में वर्बैटिम (स्पष्ट पाठ) संग्रहीत नहीं हैं, इसलिए यह काम नहीं करेगा। किसी का उपयोग करना चाहिए ssh-keygen -R ... (अधिमानतः); या, sed हटाने के लिए विशिष्ट लाइन संख्या के साथ। उसको भी sed जगह में, उपयोग करें -i' option; e.g., 10 वीं रेखा को हटाने के लिए sed -i.bak 10d ~ / .ssh / known_hosts`, और (वैकल्पिक रूप से) मूल को बैकअप फ़ाइल में रखें .bak। - michael