चेतावनी क्या बताती है
सर्वर होस्ट कुंजी से अपनी पहचान साबित करता है। जब कुंजी क्लाइंट में पहले सहेजी गई कुंजी से अलग होती है, तो OpenSSH, REMOTE HOST IDENTIFICATION HAS CHANGED दिखाता है और कनेक्शन अस्वीकार कर देता है। क्लाइंट हानिरहित बदलाव और हमले के बीच अंतर नहीं कर सकता, इसलिए जाँच पूरी होने तक चेतावनी को अनसुलझा मानें।
सामान्य कारण
आम कारण हैं: सर्वर की दोबारा स्थापना, किसी इमेज से पुनर्स्थापित या क्लोन की गई VM, पता अब किसी दूसरी मशीन को दिया जाना और ऐसा लोड बैलेंसर जो आपको अलग-अलग नोड पर भेजता है। कनेक्शन को बीच में रोकने वाला हमलावर भी यही चेतावनी उत्पन्न करता है। यदि आपको बदलाव की उम्मीद नहीं थी, तो रुकें और पासवर्ड दर्ज न करें।
फ़िंगरप्रिंट की तुलना करें
सर्वर पर असली फ़िंगरप्रिंट ऐसे माध्यम से पढ़ें जो इस SSH कनेक्शन पर निर्भर न हो, जैसे प्रदाता का कंसोल या हाइपरवाइज़र कंसोल। ssh-keyscan कमांड केवल वही दिखाता है जो नेटवर्क आपके सामने प्रस्तुत करता है, इसलिए वह अपने आप में कुछ भी साबित नहीं करता। वह केवल कंसोल से मिले मान के साथ तुलना करने के लिए उपयोगी है।
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
ssh-keyscan -t ed25519 server.example | ssh-keygen -lf -पुरानी प्रविष्टि बदलें
फ़िंगरप्रिंट मेल खाने के बाद ही पुरानी प्रविष्टि हटाएँ और दोबारा कनेक्ट करें। गैर-मानक पोर्ट की अपनी प्रविष्टि होती है, जिसे वर्ग कोष्ठकों के साथ लिखा जाता है। ssh-keygen पिछली फ़ाइल को known_hosts.old के रूप में रखता है। StrictHostKeyChecking बंद न करें और पूरी known_hosts फ़ाइल न मिटाएँ, क्योंकि इससे आपके सभी सर्वरों की सुरक्षा हट जाती है।
ssh-keygen -R server.example
ssh-keygen -R '[server.example]:2222'
ssh user@server.exampleदोबारा स्थापना के बाद चेतावनी से बचें
यदि सर्वर को फिर से बनाने की योजना है और आप उसकी पहचान बनाए रखना चाहते हैं, तो /etc/ssh में मौजूद होस्ट कुंजियों का सुरक्षित बैकअप लें और उन्हें उसी स्वामी और अनुमतियों के साथ पुनर्स्थापित करें। क्लोन के साथ इसका उलटा करें: एक इमेज से बनी हर मशीन को अपनी अलग होस्ट कुंजियाँ चाहिए, वरना कई सर्वर एक ही पहचान साझा करेंगे।
CH-J Server Manager में होस्ट कुंजियाँ
ऐप होस्ट कुंजियों के SHA-256 फ़िंगरप्रिंट अपने एन्क्रिप्टेड वॉल्ट में रखता है, जो OpenSSH की known_hosts फ़ाइल से अलग है। बदलाव होने पर वह कनेक्शन रोकता है और ज्ञात तथा नए फ़िंगरप्रिंट दिखाता है। प्रविष्टि तभी बदली जाती है जब आप पुष्टि करते हैं, और रद्द करने से कुछ नहीं बदलता। Alpha 0.1.1 में हर जंप होस्ट की भी जाँच होती है और कुंजी बदलने पर चल रहा स्थानांतरण रुक जाता है। ऐप आपके लिए नए फ़िंगरप्रिंट को सत्यापित नहीं कर सकता, इसलिए दूसरे माध्यम से जाँच करना अब भी आपका काम है।