ECDSA होस्ट कुंजी के बारे में चेतावनी को कैसे ठीक करें


287

मैं एक Ubuntu सर्वर पर पासवर्ड-कम SSH को सेटअप करने की कोशिश कर रहा हूं ssh-copy-id myuser@myserver, लेकिन मुझे त्रुटि मिल रही है:

चेतावनी: 'myserver' के लिए ECDSA होस्ट कुंजी IP पते की कुंजी से भिन्न है '192.168.1.123'

यह क्या कारण है, और मैं इसे कैसे ठीक करूं? मैंने .sshदूरस्थ मशीन पर निर्देशिका को हटाने , और ssh-keygen -R "myserver"स्थानीय रूप से चलाने की कोशिश की , लेकिन यह त्रुटि को हल नहीं करता है।


मेरे मामले में, मैं डोमेन के साथ सर्वर (आईपी) को बांधता हूं, फिर The ECDSA host key for server has changed। मेरा तरीका डोमेन के बारे में संबंधित कैश स्ट्रिंग को हटा देना है ~/.ssh/known_hosts। तब ssh काम करता है।
निंजा

जवाबों:


415

192.168.1.123स्थानीय मशीन पर कैश्ड कुंजी निकालें :

ssh-keygen -R 192.168.1.123

14
घर पर SSHing जब काम पर नव स्थापित डेबियन सर्वर पर मेरे लिए काम नहीं किया। इसके अलावा, जवाब बहुत अच्छा है।
क्रिस के

/home/wf/.ssh/ogn_hosts अपडेट किया गया। मूल सामग्री को /home/wf/.ssh/ogn_hosts.old के रूप में बनाए रखा गया है "चेतावनी: स्थायी रूप से ज्ञात मेजबानों की सूची में IP पते 'xxxx' के लिए ECDSA होस्ट कुंजी जोड़ा गया है।" प्रदर्शित किया गया है। और फिर यह काम करने लगता है
वोल्फगैंग फ़ाहल

13
आप इसे हटाने के बजाय कुंजी अपडेट कर सकते हैं। इसके ssh-keyscan -t ecdsa my.server.domain >> ~/.ssh/known_hostsबाद उपयोग करें कि आपको पहली बार होस्ट करने के लिए नई कुंजी को सत्यापित करने की आवश्यकता नहीं है।
एलेक्स

2
जिनके लिए यह काम करने में सफल नहीं होता है: मैंने एक ही आईपी की मल्टीप्ल घटनाएँ दर्ज की हैं: 1 / उक्त आईपी पता (xx.xx.xx.xx), डोमेन (tomsihap.fr), प्रदाता का दिया vps सर्वर पता (vpsxxx.ovh.net)। ssh-keygen -R ने इनमें से प्रत्येक के लिए काम किया।
तोमियाहाप

मेरे लिए काम किया, लेकिन भ्रम हो सकता है कि यह कमांड किस होस्ट से चलाया जाए? इसका उत्तर उस त्रुटि से है। दूसरा सवाल और जवाब अधिक स्पष्ट है, लेकिन सिर्फ मामले में: ssh-keygen -R को पास करने के लिए कौन सा पता? वह पता जो त्रुटि कथन में अंकित है।
रस बेटमैन

62

मेरे मामले ssh-keygen -R ...में चेतावनी को ठीक नहीं किया। मेरे पास इस तरह की अतिरिक्त जानकारी थी:

Offending key for IP in /home/myuser/.ssh/known_hosts:8
Matching host key in /home/myuser/.ssh/known_hosts:24

मैं बस मैन्युअल रूप से संपादित ~/.ssh/known_hostsऔर हटाए गए लाइन 8 ("ऑफेंडिंग कुंजी")। मैंने फिर से जोड़ने की कोशिश की, मेजबान को स्थायी रूप से जोड़ा गया, और उसके बाद सब कुछ ठीक था!


2
एक जादू की तरह काम करता है। अपने सिस्टम पर प्रदर्शित लोगों के साथ sed -e '8d' /home/myuser/.ssh/known_hostsलाइन नंबर 8और फ़ाइल नाम की जगह के साथ एक लाइन में इसे ठीक कर सकते हैं ।
एलेक्स पी। मिलर

इस दृष्टिकोण के साथ मेरा मुद्दा यह था कि अगर यह known_hosts:8शून्य-अनुक्रमित मान को संदर्भित करता है या नहीं तो यह थोड़ा भ्रमित है । यह जानकर अच्छा लगा कि यह 1: 1 मैपिंग है ...
डैनियल एफ

मैंने देखा कि ऐसा होता है यदि आप 2022 की तरह एक गैर-मानक पोर्ट का उपयोग करते हैं। उस स्थिति में, आपको करने की आवश्यकता हैssh-keygen -R [hostname]:2022
अलेक्जेंडर मैलाफिट

19

मैं अपने LAN कंप्यूटर और मेरे दो वेबहोस्टिंग खातों के बीच बहुत सारे ssh-ing करता हूं, इसलिए मैंने सभी प्रकार की बाधाओं को सुलझा लिया है और SSH के साथ समाप्त होता है, जिसमें प्रमाणीकरण समस्याओं का उपयोग करके ssh -vयह देखना है कि कहां और क्या गलत हुआ।

बस इस मुद्दे को हल करने और जवाबों से खुश नहीं होने के बाद, मैं वास्तव में "क्यों" खुद को जानना चाहता था ...

मेरे मामले का ट्रिगर यह है: काम पर नया सर्वर ओएस स्थापित किया गया है और ओपनश-सर्वर पैकेज स्थापित करने पर, काम के सर्वर पर होस्ट कुंजी का एक नया सेट उत्पन्न हुआ। पहले, मेरे सभी सर्वर ओएस उबंटू थे और इस बार यह बदलकर डेबियन हो गया (और मुझे संदेह है कि अनुमतियों में एक अति सूक्ष्म अंतर है)।

जब सभी ओएस उबंटू थे और मैं एक सर्वर के ओएस को पुनर्स्थापित करता हूं, तो पहले एसएसएच पर, मुझे इस तरह की चेतावनी मिलती है, जिसे मैं ऊपर की खामोश चेतावनी पर पसंद करता हूं!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
06:ea:f1:f8:db:75:5c:0c:af:15:d7:99:2d:ef:08:2a.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:4
RSA host key for domain.com has changed and you have requested strict checking.
Host key verification failed.

फिर मैं ~/.ssh/known_hostsकंप्यूटर पर ssh आरंभ करता हूं , उस लाइन को हटाता हूं , फिर से जोड़ता हूं और ऐसा होता है:

chris@home ~ $ ssh work
The authenticity of host '[work]:11122 ([99.85.243.208]:11122)' can't be established.
ECDSA key fingerprint is 56:6d:13:be:fe:a0:29:ca:53:da:23:d6:1d:36:dd:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[work]:11122 ([99.85.243.208]:11122)' (ECDSA) to the list of known hosts.
Linux rock 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64

उस बिट के बारे में: 11122 फ़ायरवॉल पर पोर्ट नंबर I मार्ग SSH है

मैंने एक पूर्व उबंटू सर्वर से बैकअप की जाँच की और अपने नए डेबियन इंस्टाल के खिलाफ अलग किया:

Ubuntu:                                            Debian:
# Package generated configuration file             # Package generated configuration file
# See the sshd(8) manpage for details              # See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for      # What ports, IPs and protocols we listen for
Port 22                                            Port 22
# Use these options to restrict which interface    # Use these options to restrict which interfaces
#ListenAddress ::                                  #ListenAddress ::
#ListenAddress 0.0.0.0                             #ListenAddress 0.0.0.0
Protocol 2                                         Protocol 2
# HostKeys for protocol version 2                  # HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key                  HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key                  HostKey /etc/ssh/ssh_host_dsa_key
------------------------------------------------   HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security    #Privilege Separation is turned on for security
UsePrivilegeSeparation yes                         UsePrivilegeSeparation yes

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

मैंने एक सिक्योरिटी को पढ़ा है। ईएसडी / ऑनस्कैड और उस लाइन को sshd_configअपने नए डेबियन सर्वर से पहले ही हटा दिया है । (और भाग गया service ssh restart)


2
अच्छा साइड-बाय-साइड तुलना ब्लॉक के लिए +1। क्या आप URL को "रॉक-सॉलिड लाइनक्स OS से दूर उबंटू की शिफ्टिंग" के माध्यम से जोड़ सकते हैं?
bgoodr

@bgoodr यह मेरी राय है और पूरी तरह से पिछले कुछ वर्षों में कई बार मेरी अपनी RAID फाइलरवर स्थापित करने पर आधारित है। : / उत्तर के लिए बकवास, लेकिन googling शुरू करें ubuntu debian serverऔर आप देखेंगे कि मेरा क्या मतलब है।
क्रिस के

1
@ क्रिस आप, सर, एक बॉस हैं। विस्तृत, अभी तक संक्षिप्त, उत्तर के लिए धन्यवाद।
सरगस

6

प्रॉम्प्ट हर बार होता है क्योंकि गतिशील पतों का उपयोग करते समय आईपी पते हर समय बदलते हैं। स्थिर IP का उपयोग करने का प्रयास करें ताकि आपको केवल एक बार ही कुंजी जोड़ना पड़े।


1
अच्छी बात है, क्या मुझे याद आया कि किसी ने गतिशील ips का उल्लेख किया है?
क्रिस के

6

ssh-keygen -f "/root/.ssh/ogn_hosts" -R 192.168.1.123

इसे ज्ञात_होसेसफोल्ड के तहत मौजूदा कुंजियों को बदलना चाहिए और एक नया बनाना चाहिए। इस समाधान ने मेरे लिए एक ही परिदृश्य में काम किया


3

मैंने निम्नलिखित पंक्तियों को अपने ~ / .ssh / config में जोड़ा, इस प्रकार सभी .local पतों के लिए सख्त होस्ट चेकिंग को अक्षम कर दिया। (डीएचसीपी पता आवंटन के साथ, मेरे स्थानीय मशीनों के आईपी पते हमेशा बदलते रहते हैं)

host *.local
    StrictHostKeyChecking no

आप अभी भी चेतावनी प्राप्त करते हैं, हालांकि, जो मेरे द्वारा ठीक है।


2

क्या आप कनेक्ट करने के लिए उसी उपयोगकर्ता का उपयोग कर रहे हैं?

यदि आप उपयोगकर्ता जॉन की तरह एक स्थानीय पीसी में लॉग इन हैं और सर्वर बी से जुड़ा है जैसे यूजर एडॉल्फ @ बी और सब कुछ ठीक है, तो इसका मतलब यह नहीं है कि यदि आप स्थानीय पीसी जैसे उपयोगकर्ता जेन और सर्वर से कनेक्ट हो तो सब कुछ ठीक है उपयोगकर्ता Adolf @ B की तरह बी

यदि आप बिना पासवर्ड के पीसी से सर्वर बी के रूप में लॉगिन करना चाहते हैं, तो इस कमांड को पीसी से सभी को आज़माएं :

ssh-keygen -t rsa

यह कमांड कुंजी बनाता है और फाइल में कुंजी को संग्रहीत करता है। कृपया पासफ़्रेज़ को खाली छोड़ दें ।

ssh Beda@B mkdir -p .ssh

यह कमांड निर्देशिका बनाता है, अगर वे पहले से मौजूद नहीं हैं। अन्यथा, त्रुटि संदेश न छापें।

cd ~/.ssh

यह कमांड आपके उपयोगकर्ताओं के घर निर्देशिका के लिए निर्देशिका को बदल देती है ।/ssh।

cat id_rsa.pub | ssh Beda@B 'cat >> .ssh/authorized_keys'

यह आदेश फ़ाइल प्रिंट id_rsa.pub में (आपकी सार्वजनिक कुंजी) authorized_keys सर्वर पर।

महत्वपूर्ण: बेडा सर्वर पर आपका उपयोगकर्ता नाम है जिसे आप कनेक्ट कर रहे हैं, बी आपका सर्वर आईपी है।

अब, आप बिना पासवर्ड या पासफ़्रेज़ के सर्वर B से जुड़ सकते हैं:

ssh Beda@B

1
या सभी अतिरिक्त परेशानी के बिना अपने id_rsa.pub कुंजी के साथ अधिकृत_की फ़ाइल को पॉप्युलेट करने के लिए ssh-copy-id का उपयोग करें।
ब्लेकबैट

1

यहाँ धागा मदद कर सकता है।

अनिवार्य रूप से, आप उस होस्ट के लिए RSA और ECDSA दोनों कुंजियों को हटाना चाहते हैं, फिर ssh-keyscanउन्हें अपनी known_hostsफ़ाइल में इस तरह से वापस लाने के लिए उपयोग करें जिससे यह विरोध न हो। मेरे लिए यह काम किया जब मेरे पास एक ही मुद्दा था।


1

प्रश्न: यह क्या कारण है, ...?

तो ssh सर्वर होस्ट कुंजी बदल गई। किस वजह से हुआ बदलाव? यह कहना कठिन है। यहाँ कुछ अनुमान हैं:

  • क्या Myserver पर sshd ने ECDSA कुंजियों का उपयोग करना शुरू कर दिया है, इसलिए यह एक नया कुंजी प्रकार है?
  • क्या मेरा पर्यवेक्षक हाल ही में फिर से स्थापित किया गया था?
  • Myshver पर sshd था हाल ही में फिर से inseled तो एक नया ssh होस्ट कुंजी उत्पन्न किया गया था?
  • क्या किसी ने sshd होस्ट कुंजी को फिर से बनाया या प्रतिस्थापित किया?
  • क्या Myserver का IP पता बदल गया है ताकि एक अलग होस्ट उस IP पते का उत्तर दे रहा है?

प्रश्न: ... और मैं इसे कैसे ठीक करूं?

जैसा कि अन्य लोग पहले ही उत्तर दे चुके हैं, Myserver के लिए कैश की गई ECDSA होस्ट कुंजी को हटा दें जिसे आपके खाते ने कैश कर दिया है।


2
अच्छी सलाह, लेकिन वास्तव में इस सवाल का जवाब नहीं है। सवाल का जवाब देने की कोशिश भी नहीं करता।
बोटकॉडर

1

यह त्रुटि मुझे लंबे समय तक परेशान करती रही। किसी कारण से यह फर्क पड़ा कि क्या मैं एक काम करूंगा

ssh host

या

ssh host.domain

https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh

फिर मुझे कॉन्फ़िगर फ़ाइल बदलने के विकल्प की ओर इशारा किया। प्रक्रिया को स्वचालित करने के लिए मेरी स्क्रिप्ट https://askubuntu.com/a/949731/129227 देखें ।


1
कॉन्फ़िगरेशन मान का उपयोग करते हुए CanonicalizeHostnameऔर CanonicalDomainsसख्त चेकिंग को दूर करने से बच जाएंगे और ssh ही हो मेजबान और host.domain पर विचार होगा।
ब्लाकबैट

0

मैंने सिक्योर शेल को अनइंस्टॉल और रीइंस्टॉल करके क्रोमबुक पर इसे तय किया ... यह एक आकर्षण की तरह काम करता था।


यह ओवरकिल है। यहाँ मेरे उत्तर में एक सरल समाधान देखें।
एलेक्स युरशा

0

known_hostsChrome OS पर एक ज्ञात होस्ट फ़िंगरप्रिंट ( फ़ाइल से) निकालने का तरीका यहां दिया गया है :

कनेक्शन विफल होने पर ssh आउटपुट में आपत्तिजनक होस्ट प्रविष्टि के सूचकांक का पता लगाएं। उदाहरण के लिए नीचे दिए गए सूचकांक में लाइन 7 है :

Offending ECDSA key in /.ssh/known_hosts:7

सुरक्षित शेल विंडो के जावास्क्रिप्ट कंसोल ( CTRL+ Shift+ J) खोलें और INDEXउचित मान (जैसे 7 ) के साथ प्रतिस्थापित करते हुए , निम्न टाइप करें :

term_.command.removeKnownHostByIndex(INDEX);

यह समाधान लियो गैगल के ब्लॉग से लिया गया था ।

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