Ssh कीज़ को एक सर्वर से दूसरे सर्वर पर कॉपी करें


12

मेरे पास एक सर्वर है (मान लें कि इसका आईपी abcd है) जो उपयोगकर्ताओं को ssh के माध्यम से लॉगिन करने की अनुमति देता है। अब मैं आईपी को रखते हुए भौतिक मशीन को बदलना चाहता हूं। ताकि नई मशीन अभी भी इस तरह के उपयोगकर्ता द्वारा एक्सेस की जा सके

$ ssh abcd

समस्या यह है कि हर बार जब कोई उपयोगकर्ता लॉगिन करने की कोशिश करता है, तो उसे निम्नलिखित ssh-key बेमेल त्रुटि मिलती है।

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ चेतावनी: रिमोट पहचान बदल दी गई है! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
यह किसी और के पास है जो किसी को भी लंबे समय तक कर रहा है!
अभी आप पर कोई हमला कर सकता है (बीच-बीच में हमला)!
यह भी संभव है कि RSA होस्ट कुंजी को अभी बदला गया है।
रिमोट होस्ट द्वारा भेजी गई RSA कुंजी के लिए फिंगरप्रिंट है
02: डीसी: C6: 18: 1b: 34: B7: 1d: पिता: 90: अब: E1: 95: 48: 69: 84।
कृपया अपने सिस्टम व्यवस्थापक से संपर्क करें।
इस संदेश से छुटकारा पाने के लिए /home/user/.ssh/ogn_hosts में सही होस्ट कुंजी जोड़ें।
/Home/user/.ssh/ogn_hosts:37 में प्रमुख कुंजी
पूर्व छात्रों के लिए RSA होस्ट कुंजी बदल गई है और आपने सख्त जाँच का अनुरोध किया है।
होस्ट कुंजी सत्यापन विफल रहा।

मुझे पता है कि उपयोगकर्ता फ़ाइल से लाइन # 37 को हटा सकता है ~ / .sh / ज्ञात_होस्ट और अगली बार जब उसे हाँ या कोई संकेत नहीं मिलेगा। मैं क्या चाहता हूं कि उपयोगकर्ता को इस पूरी मशीन प्रतिस्थापन चीज़ से अनजान रखा जाए और बस पासवर्ड के लिए संकेत दिया जाए।

उसको कैसे करे?


3
क्या आप जानते हैं कि यह sshबीच के हमलों में आदमी के खिलाफ केवल सुरक्षा को हरा देगा और आप का इरादा मशीन के बजाय हमलावर को अपना पासवर्ड भेज सकता है? जब तक आप इस तथ्य के लिए नहीं जानते हैं कि आप सक्रिय हमलों के लिए अजेय हैं (उदाहरण के लिए, आप लक्ष्य मशीन के समान सुरक्षित आंतरिक नेटवर्क पर हैं) यह sshसुरक्षा मॉडल को नष्ट कर देता है ।
डेविड श्वार्ट्ज

हाँ। दोनों मशीनें एक ही आंतरिक नेटवर्क में हैं। यहां तक ​​कि उपयोगकर्ता एक ही आंतरिक नेटवर्क के अंदर हैं। इस स्थिति को देखते हुए, मेरे विकल्प क्या हैं?
सौविक पाल

वह पर्याप्त नहीं है। उन्हें उसी सुरक्षित आंतरिक नेटवर्क में रहना होगा । यही है, उन्हें पूरी तरह से, 100% विश्वास होना चाहिए कि कोई भी उपकरण उस आंतरिक नेटवर्क से जुड़ा नहीं है जो 100% सुरक्षित नहीं है, और उन्हें 100% उन सभी पर भरोसा करना चाहिए जिनके पास उन उपकरणों पर नियंत्रण है या उस नेटवर्क पर एक उपकरण संलग्न कर सकते हैं। दूसरे शब्दों में, लगभग किसी भी यथार्थवादी परिदृश्य में, यह एक बुरा विचार है।
डेविड श्वार्ट्ज 16

2
यह पूरी तरह से उचित काम है। मैं हा के लिए दूसरे सर्वर के लिए ssh सर्वर कुंजियों की नकल कर रहा हूं ताकि जब मैं लॉगिन करता हूं तो मुझे वे त्रुटियां मिल रही हैं। इसके अलावा मुझे फेलओवर का ईमेल मिला है।
मैट एच

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

जवाबों:


14

जैसा कि एथाबेल ने उल्लेख किया है, आप वर्तमान होस्ट कुंजी को नए सर्वर पर कॉपी कर सकते हैं।

आप अपनी sshd_configफ़ाइल (मेरी Ubuntu 12.04 बॉक्स पर /etc/ssh/sshd_config) को खोलकर अपनी होस्ट कुंजी पा सकते हैं । कॉन्फ़िगरेशन फ़ाइल में HostKeyप्रविष्टियों के लिए देखो । ये प्रविष्टियाँ आपको बताएंगी कि होस्ट कुंजी फ़ाइलें कहाँ स्थित हैं। आपको इन फ़ाइलों को नए सर्वर पर कॉपी करने में सक्षम होना चाहिए और sshd_configकॉपी की गई कुंजियों को इंगित करने के लिए नए सर्वर को अपडेट करना चाहिए (या केवल नए सर्वर पर मौजूद फ़ाइलों को अधिलेखित करें)।

इसके अलावा, sshd_configमैन पेज से इस सेक्शन पर ध्यान दें , विशेष रूप से अनुमतियों के बारे में:

SSH द्वारा उपयोग की जाने वाली निजी होस्ट कुंजी वाली फ़ाइल निर्दिष्ट करता है। डिफ़ॉल्ट है /etc/ssh/ssh_host_keyप्रोटोकॉल संस्करण 1 के लिए, और /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_keyऔर /etc/ssh/ssh_host_rsa_keyप्रोटोकॉल संस्करण के लिए 2. ध्यान दें कि sshd (8) एक फ़ाइल का उपयोग करने अगर यह समूह / विश्व पहुँचा जा सकता है मना कर देगा। कई होस्ट कुंजी फ़ाइलें होना संभव है। SSH प्रोटोकॉल के संस्करण 2 के लिए "rsa1" कुंजी का उपयोग संस्करण 1 और "dsa", "ecdsa" या "rsa" के लिए किया जाता है।


1

यदि आपके पास मूल होस्ट कुंजी है तो आप इसे पुनर्स्थापित कर सकते हैं और यह त्रुटि को रोक देगा।

या, आप अपने sshd config फ़ाइल में StrictHostKeyChecking को बंद कर सकते हैं।

... हालांकि, ऐसा करना एक भयानक, भयानक विचार है। यदि आपके लिए ssh-keygen -R server.example.comग्राहक मशीनों पर बस चलाने का कोई तरीका है, तो यह सबसे अच्छा तरीका होगा - क्योंकि होस्ट कुंजी चेकिंग बंद करना यह कहना है, "अरे। मुझ पर हमला करो।" जब चीजें बदलती हैं तो मैं अस्पष्टता चाहता हूं, लेकिन अस्पष्ट बदलावों पर सुरक्षा प्राथमिकता # 1 होनी चाहिए।


क्या आप विस्तार से बता सकते हैं कि नई मशीन पर होस्ट कीज़ को कैसे पुनर्स्थापित किया जाए?
सौविक पाल

1

आप इसे इस तरह से आजमा सकते हैं

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"' 

ध्यान दें कि यदि फ़ोल्डर .shsh पहले से मौजूद नहीं है, तो उपरोक्त कमांड विफल हो जाएगी। इसके अलावा, न्यूनतम संभव अनुमति (मूल रूप से केवल मालिक के लिए पठन-लेखन) सेट करने के लिए फ़ाइल बनाते समय बेहतर हो सकता है। यहाँ एक और अधिक उन्नत कमांड है:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

इस समस्या के बारे में अधिक जानकारी के लिए आपको इस वेबसाइट पर जाना होगा: SSH होस्ट कुंजी परिवर्तन त्रुटि

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