एसएसएच एक आईपी पते के लिए एक ज्ञात_होस्ट प्रविष्टि क्यों जोड़ता है?


18

मेरा एक मेजबान है जिसका नाम nms.example.org है। मेरे में मेरे /etc/ssh/ssh_known_hostsपास RSA कुंजी के साथ मेजबान के लिए एक प्रविष्टि है। यह प्रविष्टि, और अन्य सभी प्रविष्टियाँ मेरे विन्यास प्रबंधन प्रणाली द्वारा प्रबंधित हैं।

nms.example.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZqfmVPs/XqTS...

इसके अलावा, मेरे पास /etc/ssh/ssh_configमेजबान कुंजी उपनाम स्थापित करने वाले विशिष्ट होस्ट के लिए मेरी प्रविष्टि है । जो अगर मुझे सब कुछ ठीक से समझ में आ रहा है, इसका मतलब है कि केवल nms.example.orgबात होनी चाहिए।

Host nms.example.org nms.example nms
    HostKeyAlias nms.example.org
    HostName nms.example.org

तब क्यों, जब मैं किसी क्लाइंट से कनेक्ट करता हूं, तब भी लगता है कि उसे लगता है कि उसे होस्ट के आईपी के साथ मेरे प्रति उपयोगकर्ता ज्ञात_होस्ट की कुंजी जोड़ने की जरूरत है ?

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/zoredache/.ssh/config
debug1: /home/zoredache/.ssh/config line 61: Applying options for *
debug1: /home/zoredache/.ssh/config line 71: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 84: Applying options for nms
debug1: /etc/ssh/ssh_config line 363: Applying options for *
debug1: Connecting to nms.example.org [104.236.190.144] port 22.
debug1: Connection established.
debug1: identity file /home/zoredache/.ssh/zoredache-20140204.id_rsa type 1
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: Permanently added the RSA host key for IP address '192.0.2.144' to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
...

SSH जानता है कि मेरा होस्ट वैध है (देखें :)Host 'nms.example.org' is known and matches the RSA host key तो यह आईपी के लिए उपयोगकर्ता प्रोफ़ाइल में कुंजी क्यों जोड़ता है?

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

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
...
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u4
debug1: using hostkeyalias: nms.example.org
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: the RSA host key for 'nms.example.org' differs from the key for the IP address '192.0.2.144'
Offending key for IP in /home/zoredache/.ssh/known_hosts:25
Matching host key in /etc/ssh/ssh_known_hosts:104
Are you sure you want to continue connecting (yes/no)?

मैं प्रत्येक उपयोगकर्ता-ज्ञात_होस्ट में प्रति-आईपी मान को कैशिंग से कैसे रोक सकता हूं? या क्या कुछ सुरक्षा कारण है कि मुझे सिर्फ इस कष्टप्रद व्यवहार के साथ रहना है? यह मुझे निराश भी करता है क्योंकि कुछ सर्वरों में कुछ गतिशील आईपी पते होते हैं। मेरा कॉन्फ़िगरेशन प्रबंधन DNS अद्यतनों को संभालता है। लेकिन मुझे इन प्रति-आईपी होस्ट कीज़ पर मेरी प्रति-उपयोगकर्ता ज्ञात_होस्ट फ़ाइलों को भरने की सुविधा मिलती है।

जवाबों:


22

मुझे लगता है कि यह CheckHostIPकाम करना है।

यदि यह ध्वज "हाँ" पर सेट है, तो ssh (1) known_hostsफ़ाइल में होस्ट IP पते की अतिरिक्त जाँच करेगा । यह पता लगाने की अनुमति देता है कि DNS स्पूफिंग के कारण होस्ट कुंजी बदल गई है या नहीं। यदि विकल्प "नहीं" पर सेट है, तो चेक निष्पादित नहीं किया जाएगा। डिफ़ॉल्ट "हाँ" है।

इस विकल्प के साथ ग़लतफ़हमी या हमले के मामले में आपको थोड़ा बेहतर निदान मिलता है, लेकिन यह वास्तव में किसी भी तरह से सुरक्षा में सुधार नहीं करता है जिसके बारे में मैं सोच सकता हूं।

यदि आप बंद करते हैं CheckHostIPतो SSH (OpenSSH 6.7p1 के रूप में) आईपी पते को रिकॉर्ड नहीं करता है जब आप किसी नए होस्ट को नाम से जोड़ते हैं। इसलिए इसे अपने में जोड़ें .ssh/config:

CheckHostIP no

Hostयदि आप केवल विशिष्ट होस्ट के लिए इसे बंद करना चाहते हैं (विशेष रूप से एक गतिशील आईपी पते के साथ) तो आप इसे एक खंड में जोड़ सकते हैं ।


हाँ, यह मेरी ज़रूरत की सेटिंग है।
Zoredache

जबकि मैं आपकी कही गई सभी बातों से सहमत हूं @ गिलेस, तकनीकी रूप से मैं (एक अच्छी चर्चा के लिए) कहूंगा कि सुरक्षा में सुधार CheckHostIP yes होता है ... यदि उपयोगकर्ता को ठीक से पता है कि यह क्या कर रहा है, तो सिस्टम इस पैरामीटर का उपयोग कैसे करता है, निहित विश्वास की अवधारणाएं। इसलिए, मैं वास्तव में बालों को विभाजित करूंगा, जो मैं नहीं करूंगा ... मैं इसे सुरक्षा-से
बचाऊंगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.