सवाल अस्थायी रूप से मेरी `~ / .ssh / known_hosts` फ़ाइल को अनदेखा करें?


क्या अस्थायी रूप से मेरी अनदेखी करने का कोई तरीका है ~/.ssh/known_hostsफाइल?

mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$ 

ध्यान दें:

.. कुछ उत्तरों (टिप्पणियों) / टिप्पणी से मुझे एहसास हुआ कि मेरा प्रश्न थोड़ा भ्रामक है, इतना छोटा है अपेक्षित व्यवहार), तो यह सामान्य है (मेरे मामले में) इसके पीछे एक वैध कारण है कि मैं क्यों देखना चाहता हूं "इसे अनदेखा करें")


38
2017-12-07 20:06


मूल


आप गलत सवाल पूछ रहे हैं। आपको समस्या को "अनदेखा नहीं करना चाहिए"; आपको पता होना चाहिए कि क्या हो रहा है और इसे हल करें। - Michael Hampton♦
यह अपेक्षित व्यवहार क्यों है? - Thorbjørn Ravn Andersen
मैं उपयोगकर्ता के लिए बात नहीं कर सकता, लेकिन एक उदाहरण एक ऐसी स्थिति होगी जहां आप स्वचालित इंस्टॉल प्रक्रिया (जैसे कि किकस्टार्ट) विकसित कर रहे हों, जहां आपके पुनरावृत्त वर्कफ़्लो में निर्माण प्रक्रिया को जोड़ने, कनेक्ट करने, परीक्षण करने, संशोधित करने और पुनर्निर्माण शामिल है बार-बार खरोंच। - Goladus
@ माइकल हैम्पटन - मुझे यह हर समय मिलता है क्योंकि वीएमवेयर और वर्चुअलबॉक्स मेहमानों के लिए आईपी पते रीसायकल करता है। मेरे लिए, यह सही सवाल है :) - jww
एफडब्ल्यूआईडब्ल्यू मैं इस जवाब की खोज करता रहता हूं क्योंकि मेरे पास लैन में एक सिस्टम है जहां मैं स्टार्टअप के दौरान डिस्क एन्क्रिप्शन पासवर्ड दर्ज करने के लिए ड्रॉपबियर (एक अलग मेजबान कुंजी के साथ) का उपयोग करता हूं। - Zulan


जवाब:


आप उपयोग कर सकते हैं ssh -o StrictHostKeyChecking=no जांच बंद करने के लिए known_hosts क्षण भर के। लेकिन मैं इसके खिलाफ सलाह दूंगा। आपको वास्तव में जांच करनी चाहिए कि मेजबान कुंजी क्यों बदल गई है।

एक और विकल्प आपके लिए एक विशिष्ट प्रविष्टि जोड़ना है ~/.ssh/config प्रश्न में मेजबान के लिए। यह वैध दृष्टिकोण हो सकता है यदि आपके पास एक निश्चित होस्ट है जो हर बार जब यह रीबूट करता है तो नई होस्ट कुंजी उत्पन्न करता है और दिन में कई बार वैध कारण के लिए इसे रीबूट किया जाता है।

Host <your problematic host>
  StrictHostKeyChecking no

50
2017-12-07 20:08



यह व्यवहार की उम्मीद है) तो यह सामान्य है (मेरे मामले में) - alexus
@alexus यदि यह "अपेक्षित" है, तो आप उस विकल्प को एक विशिष्ट होस्टनाम / आईपी पर लागू कर सकते हैं जिसके लिए आप उम्मीद करते हैं। - chrylis
@alexus और याद रखें कि यदि आप ऐसा करते हैं, तो आप एसएसएच प्रदान करता है कि सभी सुरक्षा खो देता है। आप टेलनेट का भी उपयोग कर सकते हैं, क्योंकि किसी के लिए एमआईटीएम आपको और आपके सभी ट्रैफिक को कैप्चर करना मुश्किल होगा। - Michael Hampton♦
सिंगल लेटर वर्तनी त्रुटि: सलाह एक संज्ञा है; आप क्रिया फार्म चाहते हैं, सलाह देना। - TRiG
यह अब काम नहीं करता है (कम से कम OpenSSH_5.3p1 के लिए) - draeath


किसी POSIX वातावरण में अपनी ज्ञात होस्ट फ़ाइल को पूरी तरह से अनदेखा करने के लिए, सेट करें GlobalKnownHostsFile तथा UserKnownHostsFile विकल्प /dev/null:

ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host

सेट करना StrictHostKeyChecking=no विकल्प आपको कनेक्ट करने की अनुमति देगा लेकिन एसएसएच अभी भी एक चेतावनी दिखाएगा:

ssh -o StrictHostKeyChecking=no user@host

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


25
2018-04-14 20:07



यह वर्तमान में तुलना में एक बेहतर जवाब हो सकता है सबसे ऊपर उठाया एक क्योंकि यह पासवर्ड प्रमाणीकरण का उपयोग करने की अनुमति देता है जो अन्यथा अक्षम हो जाएगा (बेशक, आपको समझना चाहिए कि आप अपने पासवर्ड में टाइप करने से पहले क्या कर रहे हैं ...) - VZ.


यदि आपने सर्वर को पुनर्स्थापित कर दिया है और इसलिए पहचान बदल गई है, तो आपको केवल निर्दिष्ट पंक्ति 155 को हटा देना चाहिए /Users/alexus/.ssh/known_hosts और आगे बढ़ो।

यदि आप अलग-अलग निजी नेटवर्क के बीच स्विच करते हैं, तो आपको इसके बजाय कनेक्ट करने के लिए होस्टनाम का उपयोग करना चाहिए, क्योंकि एसएसएच क्लाइंट मेजबाननाम के आधार पर कुंजी भी सहेज लेगा। इस तरह कुछ जोड़ें /etc/hosts:

10.52.11.171 server1
10.52.11.171 server2

और फिर उपयोग करें ssh server1 जब सबनेट 1 और से जुड़ा हुआ है ssh server2 जब subnet2 से जुड़ा हुआ है। इस तरह, दोनों सर्वरों में अलग-अलग होस्टकी हो सकती हैं।


4
2017-12-07 22:33



क्या होगा यदि आप दो निजी नेटवर्क के बीच स्विच करते हैं और दो आईपी से कनेक्ट करते हैं? - alexus
मैंने अपना जवाब संपादित कर लिया है। - etagenklo
@alexus तो आपको आईपीवी 6 की आवश्यकता है :) लेकिन यह आपके मूल प्रश्न में उपयोगी जानकारी होगी। - Michael Hampton♦


-o StrictHostKeyChecking=no केवल तभी काम करता है जब मेजबान ज्ञात_होस्ट फ़ाइल में पहले से मौजूद नहीं है।

मुझे लगता है कि यह क्लीनर (कोई चेतावनी नहीं है), अगर आप मेजबान कुंजी को वीएम क्लोनिंग के कारण बदलने की उम्मीद करते हैं, तो इस तरह के मेजबानों को अनदेखा करने के लिए:

# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
    ssh-keygen -R ${host_ip}
    echo ${host_key} >>  ~/.ssh/known_hosts
}

# connect as normal way
ssh root@${host_ip} "hostname"

1
2017-10-23 15:57





कुछ लोग कहते हैं कि यह सही नहीं है, आप इसे और ऐसा नहीं करते हैं, लेकिन मुझे इसे दोबारा एम्बेडेड डिवाइसों का परीक्षण करने की भी आवश्यकता है। आपको अक्षम करने की आवश्यकता है StrictHostKeyChecking=no, यह सही है, लेकिन ज्ञात होस्ट फ़ाइल को रीसेट भी करें /dev/null। यहां autologin के साथ एक उदाहरण है ps रिमोट डिवाइस पर।

sshpass -p pass ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host 'ps ax'

1
2018-06-28 07:27





अपने सभी सर्वरों में लॉग इन करें, (और यदि रेडहाट) rm -f /etc/ssh/ssh_host_* और फिर एसएसएचडी को पुनरारंभ करें।

यह नई एसएसएच होस्ट कुंजी बनाएगा जिसे अनदेखा करने की आवश्यकता नहीं है।

मैं केवल एक उदाहरण के बारे में सोच सकता हूं जहां कई सर्वरों पर क्लोन की गई एसएसएच कुंजी न केवल वांछित है बल्कि किसी भी चेतावनी को फेंक नहीं देती है। एक रिकॉर्ड के गुणक। एक रिकॉर्ड के साथ सभी मेजबान एक ही कुंजी है।


-2
2018-04-14 21:15



यह जवाब गलत है। फिंगरप्रिंट ग्राहक पर स्थानीय है। - 89c3b1b8-b1ae-11e6-b842-48d705