SSH इस होस्टनाम का समाधान क्यों नहीं कर रहा है?


12

जब मैं SSH नाम के नेटवर्क पर होस्ट की कोशिश करता storageहूं, तो मुझे DNS रिज़ॉल्यूशन विफलता मिलती है:

$ ssh storage
ssh: Could not resolve hostname storage: Name or service not known

लेकिन जब मैं होस्ट के साथ DNS को क्वेरी करता हूं, तो यह काम करता है

$ host storage
storage has address 192.168.20.103

यह ऐसा कैसे है hostजो IP ढूंढ sshसकता है लेकिन नहीं कर सकता है?


14
हर जगह FQDNs का उपयोग करने की आदत डालना शुरू करें। यदि यह इन रेखाओं के साथ होने वाली पहली समस्या है, तो आप असाधारण रूप से भाग्यशाली हैं। ये वास्तव में नीचे ट्रैक करने के लिए बालों वाली हो सकती हैं, और यह आपका अंतिम नहीं होगा। यहाँ एक संकेत है: storageइंटरनेट पर एक लाइव शीर्ष-स्तरीय डोमेन है।
माइकल हैम्पटन

क्या आप 192.168.20.103 पर 'ssh' कर सकते हैं?
इवानगोनक्रेजी

2
आपने 192.168.20.103 के होस्टनाम को कहां परिभाषित किया है? / etc / hosts?
अनाथ

3
FQDNs टाइप करना एक दर्द है। दूसरी ओर "भंडारण.mydomain.com" को .shsh / config में "स्टोरेज" अलियास करना वास्तव में बहुत आसान है।
pjc50

1
@ pjc50 मैं टाइप करता हूं stoऔर फिर टैब हिट करता हूं ।
माइकल हैम्पटन

जवाबों:


28

sshऔर hostपूरी तरह से अलग-अलग रास्तों के बाद नामों को हल करें, इसलिए यह आश्चर्य की बात नहीं है कि वे कभी-कभी अलग-अलग परिणाम देते हैं, खासकर जब नाम हल करने के लिए एक FQDN नहीं है (इसलिए हर जगह FQDNs का उपयोग करने का सुझाव।)

आप अपने ओएस और आपके सिस्टम कॉन्फ़िगरेशन के बारे में कुछ भी उल्लेख नहीं करते हैं, इसलिए मुझे इसे सामान्य रखना होगा, लिनक्स पर नज़र रखना: मैकओएस विवरण कुछ अलग हैं, और विंडोज और भी अधिक, लेकिन सामान्य अवधारणाएं समान हैं।

  • hostDNS को क्वेरी करता है, इसलिए मूल रूप से यह दिखता है /etc/resolv.confऔर वहां सूचीबद्ध सर्वर से पूछताछ करता है, संभवतः एक डोमेन नाम संलग्न करता है यदि होस्टनाम पहले से पूरी तरह से योग्य नहीं है। यह हर दूसरे संभावित स्रोत को नजरअंदाज करता है, लेकिन सावधान रहें कि इन दिनों कई सिस्टम एक स्थानीय कैशिंग DNS सर्वर (आमतौर पर dnsmasq) चलाते हैं जो /etc/hostsअन्य DNS सर्वरों को क्वेरी करने से पहले पढ़ता है और अन्य स्रोत हैं, इसलिए यदि hostस्थानीय सर्वर से पूछताछ में परिणाम /etc/hostsरेंगना पड़ सकता है।

  • sshअपने रास्ते पर चलता है। मैं वर्णन करूंगा कि opensshलिनक्स के तहत क्या होता है, अन्य कार्यान्वयन भिन्न होते हैं। पहले यह कॉन्फ़िगरेशन फ़ाइलों (सिस्टम-वाइड और प्रति-उपयोगकर्ता ) में परिभाषित होस्ट उपनामों की तलाश करता है , फिर यह निर्देश द्वारा निर्दिष्ट क्रम में अन्य स्रोतों की खोज करता है । कहो यह कुछ इस तरह है:/etc/ssh/ssh_config~/.ssh/confighosts:/etc/nsswitch.conf

    hosts: files dns
    

    इसका मतलब है: /etc/hostsडीएनएस को देखें और फिर ( /etc/resolv.confफिर से) क्वेरी करें । अन्य संभावित स्रोत अप्रचलित nisऔर netinfoसेवाएं हैं, LDAP, सक्रिय निर्देशिका, आप उनका नाम देते हैं।

अपने विशेष मामले को डीबग करने के लिए, आपको अपने कार्यान्वयन के पथ का अनुसरण करना चाहिए sshऔर यह पता लगाना चाहिए कि यह कहां फंस गया है।


6
ltrace / strace आपको संकेत दे सकता है कि ssh वास्तव में डोमेन को कैसे हल करने की कोशिश कर रहा है ... और निकटतम-टू-द-ऑस-ऑफ़-डू क्या करता है, कमांड लाइन dns टूल संभवतः गेटेंट है।
रैकैंडबॉमन 15

बदलने का आपका सिफारिश /etc/nsswitch.confपढ़ने के लिए hosts: files dnsमेरे लिए काम किया। एक दिलचस्प पक्ष के रूप में, मैंने पिछले कुछ हफ्तों में रास्पियन जेसी के साथ कई रास्पबेरी पेस्ट की स्थापना की है, और उन्हें इस परिवर्तन की आवश्यकता है।
पैट्रिक टुकी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.