एक बार-बार बदले गए IP के साथ SSH बॉक्स में


22

मेरे पास कुछ क्लाउड बॉक्स हैं जो अपने आईपी को बार-बार बदलते हैं।

मैं होस्टनाम का उपयोग कर रहा हूं, लेकिन इस त्रुटि संदेश के कारण सर्वर द्वारा लॉन्च किए गए ज्ञात_होस्ट फ़ाइल को हर बार संपादित करना होगा:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is

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

जवाबों:


20

अपनी ssh_config फ़ाइल संपादित करें और इस पंक्ति को बदलें:

CheckHostIP no

चेकहोस्टिप 'हां' के लिए डिफॉल्ट करता है। यह क्या करता है कि आप जिस तरह की जाँच कर रहे हैं वह विफल हो रही है। इसे बंद करने का मतलब है कि यह सिर्फ भरोसा करता है कि आईपी परिवर्तनशील है, और होस्टनाम के खिलाफ कुंजी-जांच करेगा।


2
यह उन सभी सर्वरों के लिए एक सुरक्षा सुविधा को निष्क्रिय कर देता है जिन्हें आप कभी भी कनेक्ट करेंगे, जो बहुत बुरा अभ्यास है। इसके बजाय आपको इस विकल्प का उपयोग केवल उस विशिष्ट होस्ट के लिए करना चाहिए जिसे आप जानते हैं कि यह समस्या होगी - या HostKeyAlias ​​विकल्प का उपयोग करें - फिर से एक विशिष्ट होस्ट के लिए।
zaTricky

@zaTricky "बहुत बुरा अभ्यास"? क्या इतना चरम इसके बारे में हम्म है? मुझे लगता है कि यह बहुत सुरक्षित है, यह बस एक व्यक्तिगत प्राथमिकता है। आप बस एक होस्टनाम (आईपी के बजाय) की एक कुंजी पिन करते हैं। Https के लिए, एचपीकेपी समान रूप से काम करता है और हर कोई कहता है कि यह सुरक्षित या अति सुरक्षित है।
कुबंझक

@kubanczyk यह एक वैश्विक सेटिंग बनाने के लिए कह रहा है - एक मेजबान को निर्दिष्ट करने के बारे में कोई सलाह नहीं, जो मैंने इंगित किया था
zaTricky

25

जोड़: आप केवल उस नाम के लिए CheckHostIP चेक को अक्षम करने का प्रयास कर सकते हैं :

Host *
  [ global settings .. ]

Host very.dynamic.host
  CheckHostIP no

5
आईपी-चेकिंग को अक्षम करने के सुरक्षा प्रभाव को कम करने के लिए यह सबसे अच्छा विकल्प है।
12

3

यहां बहुत सारे उत्तर काम करेंगे - लेकिन तकनीकी रूप से वे वर्कअराउंड हैं। ओपनएसएसएच में पहले से ही एक अंतर्निहित सुविधा है, जो इसे ध्यान में रखते हुए HostKeyAlias:।


आपकी .ssh / config फ़ाइल में, HostKeyAlias <alias>होस्ट कॉन्फ़िगरेशन में जोड़ें :

host myserver.example.com
HostKeyAlias myserver.example.com

इसके साथ, सर्वर myserver.example.comसे जुड़ने से स्थानीय संदर्भ के लिए होस्टनाम या आईपी ​​पते का उपयोग नहीं किया जाएगा - यह हमेशा उस सर्वर से कनेक्ट करते समय केवल दिए गए HostKeyAlias ​​का उपयोग करेगा । मेरे लिए यह मेजबाननाम का उपयोग करने के लिए समझ में आता है - लेकिन आप निश्चित रूप से किसी भी अन्य उपनाम का उपयोग कर सकते हैं जिसे आप पसंद करते हैं।


गतिशील मेजबान के लिए खुद के लिए विशिष्ट विन्यास इस तरह हैं:

host myserver
hostname myserver.dyn.example.com
HostKeyAlias myserver.private.example.com

यह कुछ अस्पष्ट परिदृश्यों में भी उपयोग किया जा सकता है, जहां आप जानते हैं कि आपके सर्वर का एक गुच्छा एक ही मेजबान कुंजी है (आमतौर पर यह मामला नहीं होना चाहिए )। इसके बाद डुप्लिकेट प्रविष्टियों को रोका जा सकेगा। भविष्य में, यदि कुंजी वैध रूप से बदल जाती है, तो आपको कई प्रविष्टियों को बदलने / हटाने की आवश्यकता नहीं है। केवल एक। Gitlab जियो सर्वर इसका एक अच्छा उदाहरण है।


ज्ञात_होस्ट फ़ाइल को साफ़ करने के बारे में, मैं सुझाव देना चाहूंगा कि अन्य प्रश्न / उत्तर विशेष रूप से बासी ज्ञात_होस्ट प्रविष्टियों को बनाए रखने / हटाने से संबंधित हों। उदाहरण के लिए, देखें कि मेरी .ssh / ज्ञात_होस्ट फ़ाइल को कैसे प्रबंधित किया जाए ; मैं विशेष रूप से user1953828 के उत्तर से प्रभावित हूँ, हालाँकि मैं देखता हूँ कि इसमें बहुत से अपवोट (अभी तक) नहीं हैं। :)


यह दिखाने के लिए जाता है कि एसओ बनाम सही उत्तर पर एक ही दिन के उत्तर का कितना मूल्य है, 8 साल बाद उत्तर दिया गया।
parity3

2

मैं इस समस्या के आसपास काम करने के लिए इन डॉगी विकल्पों का उपयोग करता हूं। (मेरे मेजबान की सार्वजनिक कुंजी को बहुत बार पुनर्जीवित किया गया है। इसलिए यह आईपी और कुंजी की जांच को हटा देता है)

ssh remoteServerName -l username -o "UserKnownHostsFile=/dev/null"

यदि कुंजी समान रहती है, लेकिन IP में परिवर्तन होता है, तो आप इसका उपयोग कर सकते हैं:

ssh remoteServerName -l username -o "CheckHostIP=no"

यदि आपका सर्वर होस्ट कुंजियों को बदलता है, तो अक्सर, आपको होस्ट-कुंजी साइन अप करने पर विचार करना चाहिए
कैमरन टैक्लिंड

1

आप चेतावनी को अनदेखा करने के लिए StrictHostKeyChecking = अपने ssh क्लाइंट कॉन्फ़िगरेशन (यानी जिस मशीन से कनेक्ट करते हैं, उस पर ~ / ssh / config फ़ाइल) में नहीं।


1

आप CheckHostIP noअपनी ~/.ssh/configफ़ाइल में डाल सकते हैं, लेकिन यह आपको स्पूफिंग हमलों के लिए खुला छोड़ देता है। यदि आप इसके बारे में चिंतित नहीं हैं, तो इस सेटिंग को known_hostsचेक को बंद कर देना चाहिए ।


0

known_hostsक्षणिक AWS मशीनों से कनेक्ट होने पर मैं अपनी फ़ाइल में फ़िंगरप्रिंट जोड़ने से बचता हूं । मैं एक कमांड का उपयोग करता हूं जैसे कि

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i secret.pem ec2-user@10.0.0.5

उनसे जुड़ने के लिए। यह आपसे यह नहीं पूछेगा कि क्या आप मशीन को "ज्ञात मेजबानों की सूची में जोड़ना चाहते हैं।" 10.0.0.5अपनी मशीन के आईपी पते से और secret.pemअपनी Ssh कुंजी के पूर्ण पथ से बदलें । आपको अभी भी एक चेतावनी मिलेगी कि 10.0.0.5जोड़ा गया है, लेकिन यह वास्तव में गायब हो गया है /dev/null। मैं अक्सर ऐसा करता हूं कि मैं अपने आप में एक उपनाम सेट करता हूं~/.profile

alias awsssh='ssh -i secret.pem -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

मैं ssh ec2-user@example.comमशीनों के लिए प्रकार के आदेशों को आरक्षित कर रहा हूं मैं फिंगरप्रिंट की जांच करने की परेशानी में गया था।


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

-2

ज्ञात_होस्ट को केवल पढ़ने के लिए करें।


यह कार्यक्षमता को तोड़ता है जब व्यावहारिक विकल्प आसानी से उपलब्ध होते हैं। : - /
zaTricky
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.