SSH से कनेक्ट होने पर "दूरस्थ होस्ट पहचान बदल गई है" चेतावनी


21

मुझे यह संदेश आज मिला जब मैं अपने सर्वर में लॉग इन करने की कोशिश कर रहा था। मुझे क्या करना चाहिए? क्या चल रहा है?

$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.

2
एक तरफ के रूप में, आप स्थानीय रूप से लॉग इन करने और रूट के रूप में दूर से बचने की इच्छा कर सकते हैं, और इसके बजाय सुडो के साथ संयुक्त गैर-विशेषाधिकार प्राप्त उपयोगकर्ताओं का उपयोग कर सकते हैं।
स्टीव बीट्टी

जवाबों:


12

क्या आपने हाल ही में अपने सर्वर या उस जैसे कुछ पर ओएस को फिर से स्थापित किया है? यही इसका कारण होगा।

इसे ठीक करने के लिए: http://www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

समाधान # 1: ssh-keygen का उपयोग कर चाबियाँ निकालें

-Rकिसी ज्ञात_होस्ट फ़ाइल से होस्टनाम से संबंधित सभी कुंजियों को निकालने के लिए विकल्प का उपयोग करें । यह विकल्प हैशेड होस्ट को हटाने के लिए उपयोगी है। यदि आपका दूरस्थ होस्टनाम server.example.com है, तो दर्ज करें:

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

अब, आप समस्या के बिना होस्ट से जुड़ सकते हैं।

समाधान # 2: सही होस्ट कुंजी जोड़ें /home/user/.ssh/known_hosts

यह पूरी ज्ञात_होस्ट फ़ाइल को हटाने के लिए आवश्यक नहीं है, बस उस फ़ाइल में अपमानजनक रेखा है। उदाहरण के लिए यदि आपके पास निम्नानुसार 3 सर्वर हैं।

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

दूसरा सर्वर (myserver.com) हटाने के लिए, फ़ाइल खोलें:

# vi +2 .ssh/known_hosts

और लाइन को हटाने के लिए dd कमांड को हिट करें। फ़ाइल को सहेजें और बंद करें। या निम्नलिखित का उपयोग करें

$ vi ~/.ssh/known_hosts

अब लाइन # 2 पर जाएं, निम्न कमांड टाइप करें

:2

अब dd और बाहर निकलने के साथ लाइन हटाएं:

dd
:wq

या आप लाइन # 44 पर अपकमिंग कुंजी को हटाने के लिए निम्नानुसार सेड कमांड का उपयोग कर सकते हैं:

$ sed -i 44d ~/.ssh/known_hosts

समाधान 3: यदि आप केवल एक ssh सर्वर है, तो ज्ञात_होस्ट फ़ाइल को हटा दें

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

Ssh के साथ फिर
से कनेक्ट करने का प्रयास करें। अब आपको अपने सर्वर को ssh के माध्यम से कनेक्ट करने में सक्षम होना चाहिए:

ssh username@server-ip-here
ssh nixcraft@server1.cyberciti.biz

इसके बाद, आपको ~/.ssh/known_hostsनिम्न के रूप में कुंजी जोड़ने के लिए एक नया संकेत मिलेगा :

The authenticity of host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.

9
ध्यान दें कि यदि आपने अपने सर्वर की SSH होस्ट कुंजियों को नहीं बदला है , तो आपको होस्ट कुंजी की अपनी प्रति को प्रतिस्थापित नहीं करना चाहिए , क्योंकि यह एक संकेत हो सकता है कि कोई व्यक्ति किसी मध्य-मध्य हमले का प्रदर्शन करके आपके संचार को हटाने का प्रयास कर रहा है।
कीस कुक

7

मैं जो बता सकता हूं, ये सभी जवाब उससे निपटने के बजाय, चेतावनी को दबाने के बारे में हैं। संक्षेप में, चेतावनी आपको बता रही है कि सर्वर वैसा नहीं दिखता जैसा वह दिखता था; इसके लिए https://en.wikipedia.org/wiki/Man_in_the_middle_attack देखें कि यह खतरा क्यों हो सकता है।

पढ़ें man ssh, विशेष रूप से इस खंड:

बहुत बड़े आकार

पहली बार सर्वर से कनेक्ट करते समय, सर्वर की सार्वजनिक कुंजी का एक फिंगरप्रिंट उपयोगकर्ता को प्रस्तुत किया जाता है (जब तक कि विकल्प StrictHostKeyChecking को अक्षम नहीं किया गया है)। उंगलियों के निशान ssh-keygen (1) का उपयोग करके निर्धारित किया जा सकता है :

   $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

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


1
यदि आपका होस्ट md5 हैश के बजाय sha256 फिंगरप्रिंट प्रदान करता है, तो इसका उपयोग करें। ssh -o FingerprintHash=md5 example.org
डेक्कन मैककेना

1
FingerprintHash पर अधिक: superuser.com/questions/929566/… (यानी। Sha256 को प्राथमिकता दी जानी चाहिए, लेकिन आप उस मूल्य को नहीं जान सकते हैं यदि आपने हाल ही में अपग्रेड नहीं किया है)
unhammer

2

मुझे एक ही समस्या का सामना करना पड़ा, और यदि आप संपूर्ण known_hostsफ़ाइल को हटाना नहीं चाहते हैं , तो आप निम्नलिखित कमांड निष्पादित कर सकते हैं:

ssh-keygen -R 10.10.10.69

ज्ञात_होस्ट को हटाने में कोई समस्या नहीं है। जब भी आप उनसे जुड़ेंगे हर बार सूची में आपको केवल प्रत्येक सर्वर को जोड़ना होगा, जिससे आप जुड़ेंगे। हो सकता है कि आपकी स्क्रिप्ट्स भी खराब हो जाएं, क्योंकि मेजबानों पर अभी भरोसा नहीं किया गया है। चेतावनी तब होती है जब मेजबान के हस्ताक्षर (कंप्यूटर जिसे आप नई कुंजी से कनेक्ट करने का प्रयास कर रहे हैं, आमतौर पर फिर से स्थापित या कुंजी घुमाव के कारण।)


0

यदि आप मानते हैं कि झूठी सकारात्मक चेतावनी, तो आप एक नया सत्यापन शुरू करने के लिए अपने / रूट / ssh / ज्ञात_होस्ट को हटा सकते हैं।


3
कृपया ऐसा न करें, आप अन्य ज्ञात होस्ट खो देंगे। इसके बजाय, यदि आप सुनिश्चित हैं कि यह एक झूठी सकारात्मक है तो इस मामले में विशिष्ट लाइन: "ज्ञात_होस्ट: 8" लाइन 8 को हटा दें।
रोजर लाइट

0

यदि आपने हाल ही में सर्वर को फिर से इंस्टॉल किया है, या अन्यथा होस्ट कुंजी को बदल दिया है, तो संभवतः यह आपकी ~ / .ssh / ज्ञात_होस्ट फ़ाइल से लाइन 8 को हटाने और सर्वर को फिर से जोड़ने (इसे ssh'ing करके) और "हां" का जवाब देने के लिए सुरक्षित है "जब यह कुंजी सत्यापन के लिए पूछता है)


0

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

यदि आपने अपने सिस्टम को फिर से इंस्टॉल किया है, तो यह सामान्य है, लेकिन अपनी ज्ञात_होस्ट फ़ाइल को हटाने के बजाय, मैं अनुशंसा करूँगा echo "" > ~/.ssh/known_hosts


लोग अभी भी एक स्थानीय नेटवर्क पर चालें खेल सकते हैं। भरोसेमंद न होने के लिए व्यवसाय या स्कूल नेटवर्क में बहुत जगह हो सकती है।
अज़ेंडेल


0

इस पंक्ति को कॉपी करें, लेकिन उपयोगकर्ता नाम और होस्टनाम / आईपी के लिए डालें userऔर remote-server:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

उदाहरण के लिए:

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

और अपने स्थानीय टर्मिनल पर पेस्ट करें और इसे चलाएं। इसने मेरे लिए काम किया।


0

क्लाइंट नोड पर जहाँ आप ssh जारी कर रहे हैं,

vi ~/.ssh/known_hosts

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

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