AWS EC2 उदाहरण से कनेक्ट करने में असमर्थ - "होस्ट कुंजी सत्यापन विफल"


13

मैंने एक रैलिंग पैकेज के साथ एक उबंटू उदाहरण स्थापित किया था, अपने ऐप को तैनात किया, और यह ठीक काम कर रहा है।

लेकिन जब मैं SSH करने की कोशिश करता हूं, तो यह मुझे रिमोट लॉगिन के लिए अनुमति नहीं देता है और जैसे त्रुटियों को फेंकता है Host key verification failed:।

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

मेरा उदाहरण सिंगापुर क्षेत्र में चल रहा है।

ssh डिबग आउटपुट:

OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e 6 Sep 2011
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 46.137.253.231 [46.137.253.231] port 22.
debug1: Connection established.
debug1: identity file st.pem type -1
debug1: identity file st.pem-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-4ubuntu6
debug1: match: OpenSSH_5.5p1 Debian-4ubuntu6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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.
Please contact your system administrator.
Add correct host key in /home/ubuntu/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/ubuntu/.ssh/known_hosts:1
  remove with: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231
RSA host key for 46.137.253.231 has changed and you have requested strict checking.
Host key verification failed.

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

जवाबों:


19

जब आप किसी ssh सर्वर से जुड़ते हैं तो आपका ssh क्लाइंट आईपी और ssh सर्वर फिंगर प्रिंट के मुख्य-वैल्यू पेयर के रूप में विश्वसनीय मेजबानों की सूची रखता है। Ec2 के साथ आप अक्सर एक ही IP का कई सर्वर इंस्टेंस के साथ पुन: उपयोग करते हैं जो संघर्ष का कारण बनता है।

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

त्रुटि संदेश आपको बताता है कि इसे कैसे ठीक किया जाए:

RSA कुंजी को /home/ubuntu/.ssh/ogn_hosts:1 में
हटाएं: ssh-keygen -f "/home/ubuntu/.ssh/ogn_hosts" -R 46.137.25.231 "

वैकल्पिक रूप से /home/ubuntu/.ssh/ogn_hosts खोलें और पंक्ति 1 को हटाएं (जैसा कि ": 1" द्वारा इंगित किया गया है)।

अब आप एक नया होस्ट सत्यापन कनेक्ट और प्राप्त कर सकते हैं।

कृपया ध्यान दें कि आमतौर पर ssh की ज्ञात_होस्ट फ़ाइल को आमतौर पर hostname या ip6 मान के लिए दूसरी पंक्ति की जोड़ी में संग्रहीत किया जाता है, इसलिए आपको कुछ लाइनों को हटाने की आवश्यकता हो सकती है।

चेतावनी: मेजबान सत्यापन महत्वपूर्ण है और यह एक अच्छा कारण है कि आपको यह चेतावनी क्यों मिलती है। सुनिश्चित करें कि आप होस्ट सत्यापन विफल होने की उम्मीद कर रहे हैं। निश्चित नहीं होने पर सत्यापन कुंजी-मूल्य जोड़ी को न निकालें।


मैंने वह किया। अब मुझे यह त्रुटि मिल रही है: अनुमति से इनकार (publickey)। कोई भी विचार यह कैसे हल किया जाए, क्योंकि पिछली बार जब मैंने अपने AWS सर्वर को एक्सेस किया था, तो सार्वजनिक कुंजी फ़ाइल काफी अच्छी थी।
नजीब

11

@flurdy का उत्तर एकबारगी संकल्प के रूप में अच्छा है।

लेकिन अगर आप अक्सर:

  • नए EC2 उदाहरण लॉन्च करें,
  • EC2 इंस्टेंस को शुरू और बंद करें,

.. इलास्टिक आईपी (आपके सर्वर से स्थायी रूप से जुड़ी) का उपयोग करने के बाद, आप हर समय अपने उदाहरणों के नए / बदलते आईपी / होस्टनाम के साथ व्यवहार करते हैं ।

यदि ऐसा है तो आप स्थायी रूप से SSH चेकिंग और EC2 पब्लिक होस्टनाम के लिए सर्वर फ़िंगरप्रिंट को रोकना चाहते हैं ।


ऐसा करने के लिए बस इसे अपने में जोड़ें ~/.ssh/config:

# AWS EC2 public hostnames (changing IPs)
Host *.compute.amazonaws.com 
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null


कृपया ध्यान दें कि SSH अभी भी Warning: Permanently added (...) to the list of known hosts.कनेक्ट करते समय कहेगा लेकिन इसका मतलब यह है कि इसे इसमें जोड़ा गया है /dev/null...

हालांकि, SSH यह पूछना बंद कर देगा कि क्या आप confirm the authenticity of hostऔर बस कनेक्ट करना जारी रखते हैं।

तो यह अधिक सुविधाजनक है और आप अपने EC2 उदाहरणों का उपयोग करते हुए हमेशा SSH कनेक्शन त्रुटियों की पुष्टि नहीं कर सकते हैं


मुझे यह जोड़ना है कि सिद्धांत रूप में यह सेटिंग आपके SSH कनेक्शनों की सुरक्षा को कम करती है, लेकिन वास्तविक जीवन में आप वैसे भी अपने एक-एक EC2 उदाहरणों की उंगलियों के निशान की जाँच नहीं करेंगे।

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