मैं ज्ञात मेजबान के लिए SSH के मेजबान सत्यापन से कैसे बच सकता हूं?


169

मुझे एसएसएच का उपयोग करके सर्वर से कनेक्ट करने का प्रयास करने के बाद हर बार निम्नलिखित संकेत मिलता है। मैं "हाँ" टाइप करता हूं, लेकिन क्या यह एनोविड करने का एक तरीका है?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 

7
/ dev / बातिल जो लोग सोचते हैं कि वे मध्य हमलों में :) मनुष्य के लिए प्रतिरक्षा हैं के लिए मौजूद है
टिम पोस्ट

1
सबसे खराब हिस्सा: yकुछ समय बचाने के लिए टाइप करें, और यह शिकायत करता है: Please type 'yes' or 'no': (hmph)
ADTC

जवाबों:


234

-oविकल्प का उपयोग करें ,

ssh -o "StrictHostKeyChecking no" user@host

1
आप ध्वज '-i' के साथ एक वैकल्पिक पहचान फ़ाइल का उपयोग करना चाह सकते हैं
MUY बेल्जियम

वैकल्पिक पहचान फ़ाइल का उपयोग करने से क्या फायदा होगा? मेरा मतलब है, यदि आप एक समझौता किए गए होस्ट से जुड़ रहे हैं, तो इससे क्या फर्क पड़ता है कि आप कैसे प्रमाणित करते हैं - यह ऐसा नहीं है कि समझौता किया हुआ होस्ट आपकी कुंजी को भी चुरा सकता है।
डगफेल

102

निम्नलिखित लाइनों को शुरुआत में जोड़ें /etc/ssh/ssh_config...

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

विकल्प:

  • होस्ट सबनेट *सभी आईपी में अप्रतिबंधित पहुंच की अनुमति दे सकता है।
  • /etc/ssh/ssh_configवैश्विक कॉन्फ़िगरेशन के लिए या ~/.ssh/configउपयोगकर्ता-विशिष्ट कॉन्फ़िगरेशन के लिए संपादित करें ।

Http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html देखें


2
दया, मैं केवल एक बार तुम्हें उकसा सकता हूं। KnownHosts को / dev / null में सेट करना जीनियस है।
J0hnG4lt

1
आपका सबसे चतुर।
डार्थ एलीजियस

30
हा! मेरी पत्नी से कहो।
जिमफ्रेड

30

आपको केवल यह पहली बार मिलना चाहिए जब आप एक नए होस्ट से जुड़ेंगे। आपके द्वारा जवाब देने yesके बाद होस्ट जमा हो जाता है ~/.ssh/known_hostsऔर अगली बार कनेक्ट होने पर आपको संकेत नहीं मिलेगा।

ध्यान दें कि यदि ~/.ssh/known_hostsकिसी कारण से नहीं लिखा जा सकता है (जैसे अनुमति समस्या) तो आपको कनेक्ट होने पर हर बार संकेत मिलेगा।


6
सवाल यह है कि वहाँ से बचने के लिए वैसे भी है?
शांतनुओ

मैंने "CheckHostIP no" को / etc / ssh / ssh_config फ़ाइल में जोड़ने का प्रयास किया। लेकिन यह काम नहीं करता प्रतीत होता है
शांतनुओ

2
sudo chown -R उपयोगकर्ता: उपयोगकर्ता .ssh; सुडो चामोड 700 .sh; sudo chmod -R 600 .ssh /; ssh-keygen -R $ hostname और फिर से कनेक्ट करें जो सभी समस्याओं को बाहर ले जाना चाहिए और यदि ssk_Hostkey के साथ mucked है तो कभी भी फिर से संकेत दें। परिवर्तित या आप MITM के शिकार हैं।
linuxdev2013


11

सबसे अच्छा तरीका (क्योंकि यह सुरक्षा का बलिदान नहीं करता है) एक क्लाइंट से सभी कंप्यूटरों से एक बार कनेक्ट करना है (आपको हर बार, हमेशा हाँ करने के लिए कहा जाएगा)। जैसा कि दूसरे उत्तर में बताया गया है, तब कुंजियाँ ~ / .ssh / ज्ञात_होस्ट में संग्रहीत की जाएंगी। फिर इस फ़ाइल को प्रत्येक क्लाइंट कंप्यूटर पर कॉपी करें जिसे आप बाद में कनेक्ट करना चाहते हैं (संभवतः आपके द्वारा उपयोग किए जाने वाले प्रत्येक उपयोगकर्ता खाते के लिए)। फिर ये सभी खाते कंप्यूटर को "पता" करेंगे, इसलिए कोई संकेत नहीं।

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


1
यद्यपि, यदि आप अक्सर फॉरवर्ड कनेक्शन के माध्यम से ssh करते हैं, तो आप इसे / etc / ssh / ssh_config में जोड़ना चाहेंगे: होस्ट 127.0.0.1 NoHostAuthenticationForLocalhost हाँ
डैगेल

1

यदि आप प्रमाणीकरण के बजाय पुष्टि को अक्षम करना चाहते हैं, तो आप विकल्प का उपयोग कर सकते हैं: "-o चेकहॉस्टिप = नहीं"

ssh -i sergeys_rsa_key.pem -o CheckHostIP=no brin@8.8.8.8

ओपी पहले से ही एक ही जवाब मिला है और इसे स्वीकार कर लिया है।
अयान

0

यह संभवतः इसलिए है क्योंकि आपका ssh कुंजी सर्वर बदल गया है, क्योंकि सर्वर आईपी या डोमेन एक ही है, लेकिन ssh कुंजी बेमेल है।

/home/$user/.ssh/known_hostsइस संदेश से बचने के लिए आपको संग्रहीत कुंजी को निकालना होगा ।

मैंने इसे उस फ़ाइल की सभी कुंजियों को हटा दिया, इसलिए इस डोमेन नाम के लिए नया टोकन बनाया गया है।


1
कुंजी बदल atsigns के एक बॉक्स और के साथ एक बहुत भद्दा संदेश पैदा करता है WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! और IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!सभी टोपियां में। प्रश्न में संदेश केवल तभी होता है जब पहले से ही एक प्रविष्टि नहीं है known_hosts
dave_thompson_085

-1

अपनी ~/.ssh/known_hostsफ़ाइल पर अनुमतियों की जाँच करें । जब मुझे यह समस्या हुई तो मेरा नाम गलत था। मैंने इसे ठीक किया:

chmod 0600 ~/.ssh/known_hosts
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.