त्रुटि संदेश "sudo: होस्ट को हल करने में असमर्थ (कोई नहीं)"


737

जब मैं sudoटर्मिनल चलाता हूं तो कुछ सेकंड के लिए अटक जाता है और फिर एक त्रुटि संदेश आउटपुट करता है। मेरा टर्मिनल इस तरह दिखता है:

ubuntu@(none):~$ sudo true
sudo: unable to resolve host (none)

मैं इसे हल करने के लिए क्या कर सकता हूं?


2
की सामग्री को पोस्ट करें /etc/hostnameऔर /etc/hosts
व्यवस्थित करें

48
मैं इस सवाल को बंद करने की सिफारिश करता हूं क्योंकि यह बहुत स्थानीय है । कई उपयोगकर्ता हैं जो गलती से सोच सकते हैं कि उन्होंने अपनी hostsफ़ाइल में एक नाम रखा है, लेकिन इसके बजाय एक अलग नाम रखा है, खासकर जब से कई नेटवर्क पर, कंप्यूटर समान रूप से नामित होते हैं। यह प्रश्न (और उत्तर) तब दिखाई देगा जब कोई व्यक्ति उस समस्या के साथ खोज करता है, और उत्तर उन्हें ऐसी विसंगतियों की जांच करने के लिए संकेत देगा, भले ही सटीक गलत वर्तनी अलग होगी।
एलियाह कगन

9
अपने hostnameसाथ सुनिश्चित करें hosts। जैसे होस्टनाम ubuntu-pc है और होस्ट ubuntu-pc एक ही होना चाहिए।
मुहम्मद शोलहिन

1
मैं आज इसमें भाग गया। समस्या यह थी कि मेरे पास होस्टनाम में क्या था / आदि / मेजबानों में नहीं था। बुद्धि के लिए: $ hostname => 'mybox' $ grep 'mybox' / etc / मेजबान => 192.168.1.2 mybox.example.com। मुझे अपने डोमेन नाम / etc / host => 192.168.1.2 mybox.example.com mybox
Ray

3
मैं एक उत्तर पोस्ट नहीं कर सकता क्योंकि यह प्रश्न संरक्षित है और मेरी यहाँ पर्याप्त प्रतिष्ठा नहीं है। मेरे मामले में, मैंने नेटवर्क-प्रबंधक को पुनरारंभ करके समस्या को हल किया sudo /etc/init.d/network-manager restart:। हालांकि, मैं सोच रहा हूं कि पहली बार में sudoनेटवर्क से संबंधित सामान की प्रतीक्षा में समय क्यों बर्बाद होता है। sudoनेटवर्क उपलब्ध नहीं होने पर समस्याओं के बिना काम नहीं करना चाहिए ?
bli

जवाबों:


999

जांच करने के लिए दो चीजें (अपनी मशीन को कहा जाता है my-machine, आप इसे उपयुक्त रूप में बदल सकते हैं):

  1. उस /etc/hostnameफाइल में सिर्फ मशीन का नाम होता है।

  2. यही कारण है कि /etc/hostsप्रविष्टि मौजूद होती है localhost। यह कुछ इस तरह होना चाहिए:

     127.0.0.1 localhost.localdomain लोकलहोस्ट
     127.0.1.1 मेरी-मशीन
    

यदि इनमें से कोई भी फाइल सही नहीं है (क्योंकि आप sudo नहीं कर सकते हैं), तो आपको मशीन को रिकवरी मोड में रिबूट करना पड़ सकता है और संशोधन कर सकते हैं, फिर अपने सामान्य वातावरण में रिबूट करें।


31
जब तक आप रिबूट नहीं करेंगे तब तक होस्टनाम नहीं बदलेगा। यदि आप मशीन को रिबूट किए बिना इसे बदलना चाहते हैं तो उपरोक्त चरणों का पालन करें और उसके बाद चलाएं: - "sudo hostname my-machine" यह देखने के लिए कि क्या इसने "sudo hostname" चलाया है, यह आपकी मशीन के होस्ट नाम को दिखाएगा। यह तरीका शायद होस्टनाम बदलने के लिए एक अस्थायी विधि के रूप में भी उपयोग किया जाता है। पुनरारंभ करने के बाद, / etc / hostname फ़ाइल से मान का उपयोग किया जाता है।
यशवित

2
नोट: चूंकि आप शुरुआत करने के लिए सूडो नहीं कर सकते, इसलिए उन फाइलों को संपादित करना मुश्किल है। मेरे समाधान मैं किसी भी तरह sudo visudo करने में सक्षम था और बदल था #%admin ALL=(ALL) ALLकरने के लिए %admin ALL=NOPASSWD: ALL, तो रिबूट, और sudo सु -, उन फ़ाइलों को संपादित, सेट / सही होस्ट नाम, रिबूट फिर से, और सब कुछ काम किया।
इयान एम

4
मैं विंडोज में लिनक्स सबसिस्टम का उपयोग कर रहा हूं और मुझे इस समस्या का सामना करना पड़ा। आपके उत्तर का पालन करने के बाद, इसे हल कर दिया गया है।
अमरवशिष्ठ

2
आपको इसे जोड़ने की भी आवश्यकता हो सकती ::1 localhostहै /etc/hosts(यह 127.0.0.1 का आईपीवी 6 संस्करण है, उर्फ ​​द लूपबैक एड्रेस)
वुड्रो बार्लो

11
क्यों अपने उदाहरण है 127.0.0.1 localhostलेकिन 127.0.1.1 my-machine?
एडम

193

/etc/hostsअपना नया होस्टनाम 127.0.0.1 लाइन में संपादित करें और जोड़ें (या यदि आप चाहें तो एक नई पंक्ति बनाएं)।

मेरा जैसा दिखता है:

127.0.0.1       localhost localhost.localdomain penguin

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

फ़ाइल penguinमें बताए अनुसार अपने नए होस्टनाम द्वारा उपरोक्त उदाहरण को बदलें /etc/hostname


2
यदि वह sudo नहीं कर सकता है तो वह / etc / host फ़ाइल को कैसे संपादित कर सकता है? जब तक उसने पासवर्ड (बुरे विचार) के साथ एक रूड खाता नहीं बनाया
डेनिस

9
@ डेनिस आप तब भी निष्पादित कर सकते हैं, sudoभले ही वह संदेश प्रदर्शित हो। IIRC आपको अभी भी प्रत्येक आह्वान पर अपना पासवर्ड दर्ज करना है। यदि यह काम नहीं करता है, तो आप रिकवरी कंसोल में रिबूट कर सकते हैं और परिवर्तन लागू कर सकते हैं। पासवर्ड वाला रूट खाता हतोत्साहित किया जाता है।
लेकेनस्टाइन

68

/etc/hostsऐसा करने के लिए अपने hostname जोड़ें :

echo $(hostname -I | cut -d\  -f1) $(hostname) | sudo tee -a /etc/hosts

2
यह चतुर है, लेकिन मुझे नहीं लगता कि यह कुछ इस तरह से स्वचालित करने के लिए एक अच्छा विचार है।
mwfearnley

1
यह होस्टनाम के परिशिष्ट को होस्ट फ़ाइल में करता है। एक अंतर्निहित धारणा है कि लूपबैक आईपी से लोकलहोस्ट और फ़ाइल के अंत में मैपिंग के बीच कुछ भी नहीं है, लेकिन इस लाइन और फ़ाइल के अंत के बीच अब कुछ आईपीवी 6 सामान है, इस मामले में यह समाधान वास्तव में आपको देना नहीं है आप क्या चाहते हैं। एक संबंधित टिप्पणी: इस या अन्य फ़ाइलों को संपादित करने के लिए sudo के उपयोग की आवश्यकता होती है और यह sudo है जिसे हम ठीक करने का प्रयास कर रहे हैं। हमें अभी भी सूडो को चलाने में सक्षम होना चाहिए। इस स्थिति में sudo -h hostname का उपयोग फ़ाइलों पर अनुमतियों को बदलने या उन्हें संपादित करने के लिए ऊंचाई हासिल करने के लिए किया जा सकता है।
शिवेश सुमन

1
यह विफल हो जाता है क्योंकि मैं "sudo tee .." नहीं कर सकता, लेकिन इसने यह चाल echo $(hostname -I | cut -d\ -f1) $(hostname) | sudo -h 127.0.0.1 tee -a /etc/hosts
चली

31

ध्यान दें, यह इस प्रश्न का उत्तर है जिसे इस के साथ मिला दिया गया है।

आपके होस्टनाम ( dave00-G31M-ES2L) का प्रतिनिधित्व नहीं किया गया है /etc/hostsLइस पंक्ति में एक जोड़ें :

127.0.1.1   dave00-G31M-ES2

तो यह हो जाता है:

127.0.1.1   dave00-G31M-ES2L

इसे पूरा करने के लिए, एक कंसोल खोलें ( Ctrl+ Alt+ दबाएं T) और टाइप करें:

sudo gedit /etc/hosts

Lबताए अनुसार पत्र जोड़ें , सहेजें और बाहर निकलें।


10
याद है! उपयोग sudoedit(या sudo -e)। पसंदीदा संपादक को निर्दिष्ट करने के लिए, EDITORपर्यावरण चर (जैसे। export EDITOR=vim) का उपयोग करें क्योंकि यह संपादन के लिए एक ऑफ़लाइन प्रतिलिपि बनाता है और फिर संपादन के बाद सफाई से ओवरराइट करता है।
Jan

2
और यहां एक और है जो सुझाव sudoदेता है कि अब नहीं है sudosudoकाम नहीं करता है, सर। sudo: unable to resolve host ...
ग्रीन

@ग्रीन: नहीं sudo? आपके द्वारा उल्लिखित त्रुटि संदेश sudoकमांड से आता है । शायद आपका मतलब कुछ अलग था?
थोर

@ग्रीन sudoठीक काम करता है। यह सिर्फ किसी भी राज्य को स्टोर नहीं कर सकता (जैसे कि लेकेनस्टीन ने कहा कि आपको हर बार अपना पासवर्ड दर्ज करना होगा)।
वॉलरिन

4
यदि आपके पास W10 की बैश पर यह समस्या है और Google से इस प्रश्न पर आया है, तो यह उत्तर है जो मेरे लिए काम करता है। मैंने "127.0.0.1 लोकलहोस्ट DESKTOP-SLQK4CV" ("sudo vim / etc / मेजबान" (जैसे vim newbies के लिए त्वरित टिप करके) देखने के लिए 127.0.0.1 को बदल दिया है: डालने के लिए स्विच करने के लिए टाइप करने से पहले i दबाएं, बाहर निकलने के लिए esc दबाएँ कि, "बचाने के लिए और बाहर निकलने या": q! "को बिना सेव किए बाहर निकलने के लिए लिखें"), मेरे मामले में sudo ने काम किया लेकिन सिर्फ इतना कहा कि यह DESKTOP-SLQK4CV से कनेक्ट नहीं हो सकता) और इसने मेरे लिए काम करना शुरू कर दिया।
Ave

16

मेरे पास यह मुद्दा था जब मैं एक VPS पर ubuntu का उपयोग कर रहा था। मैंने इसे संपादन / आदि / होस्ट फ़ाइल को हल किया।

यह आदेश चलाएँ:

sudo nano /etc/hosts

और फिर जोड़ें:

127.0.0.1   localhost.localdomain localhost
127.0.1.1   ubuntu

मुझे उम्मीद है कि आपका मुद्दा हल हो जाएगा :)

पुनश्च: अपने कंप्यूटर को रिबूट करने के लिए याद रखें!


1
यह भी देखें कि क्या आपका डिवाइस नाम (@ साइन के बाद टर्मिनल टाइटल बार पर छपा है) hostsफाइल की दूसरी लाइन (लुका के उदाहरण में "ubuntu" ) के नाम से मेल खाता है । पहली पंक्ति सिर्फ "लोकलहोस्ट" भी हो सकती है।
वाल्डिर लियोनसियो

2
याद है! उपयोग sudoedit(या sudo -e)। पसंदीदा संपादक को निर्दिष्ट करने के लिए, EDITORपर्यावरण चर (जैसे। export EDITOR=vim) का उपयोग करें क्योंकि यह संपादन के लिए एक ऑफ़लाइन प्रतिलिपि बनाता है और फिर संपादन के बाद सफाई से ओवरराइट करता है।
Jan

11

हालाँकि, मेरे / etc / hostname फ़ाइल और / etc / होस्ट फ़ाइल में होस्टनाम मेल होने पर भी मुझे यही समस्या हो रही थी।

मेरा होस्टनाम "staging_1" था। यह पता चला है कि आपके पास अपने होस्टनाम में एक अंडरस्कोर नहीं हो सकता है, यही वजह है कि मुझे यह त्रुटि मिल रही है। अंडरस्कोर को एक हाइफ़न में बदलने से मेरी समस्या ठीक हो गई।


11

AWS में, अपने vpc पर जाएं और "DNS Hostnames" चालू करें।


2
Askubuntu में आपका स्वागत है! क्या आप इस पर थोड़ा विस्तार कर सकते हैं? यह स्पष्ट रूप से स्पष्ट नहीं है कि आपका क्या मतलब है (कम से कम मेरे लिए) ..
एल्डर गीक

2
यह जवाब था जिसने मेरी मदद की। पिछली बार जब मैंने इसे देखा था तब से अमेज़ॅन एडब्ल्यूएस बदल गया। VPC में DNS विकल्प होते हैं, और DNS रिज़ॉल्यूशन काम करने से पहले उन्हें चालू करना होगा।
क्रिस मूर

1
DNS होस्टनाम विकल्प को सक्षम करें (उदाहरण के लिए) vpc प्रविष्टि के राइट-क्लिक मेनू में पाया जा सकता है
Matteo Scotuzzi

कोई नहीं हैDNS Hostnames
ग्रीन

7

प्रश्न में दिए गए लक्षण इस अधिक विशिष्ट समस्या के साथ दृढ़ता से सहसंबंधित हो सकते हैं:

$ hostname --fqdn
hostname: Temporary failure in name resolution

अलग-अलग तरीके हैं जो इसे हल किया जा सकता है, जिनमें से एक में अपने होस्टनाम को स्थानीयहोस्ट के रूप में जोड़ना है /etc/hosts(जैसा कि कई अन्य उत्तरों में दिखाया गया है)। यह सामान्य रूप से सही बात हो सकती है, लेकिन यह एकमात्र संभव संकल्प नहीं है।

एक "पूरी तरह से योग्य डोमेन नाम" एक बाहरी डीएनएस सर्वर या इसी तरह (यदि आपके नेटवर्क पर उपलब्ध है) द्वारा आपूर्ति की जा सकती है। इस मामले में, sudoलापता प्रविष्टि के बावजूद, शिकायत नहीं करेगा /etc/hosts


नोट: sudoयह आवश्यक नहीं है, भले ही sudoers फ़ाइल में वैकल्पिक क्षमताओं के कारण, होस्टनाम को हटाने के प्रयास हों। होस्टनाम के लिए खोज करने के लिए sudo कमांड देखें ।

जब तक विलंब बहुत लंबा नहीं होता है, तब तक यह त्रुटि संदेश आमतौर पर हानिरहित होता है।


कुछ अधिक तेज़:sudo --host=localhost
नोबार


5

मुझे इस त्रुटि संदेश का सामना करना पड़ा। मुझे लगता है कि AWS डेवलपर फ़ोरम में यह चर्चा सूत्र बेहतर समाधान है:

"वीपीसी प्रबंधन कंसोल पर जाएं, वीपीसी का चयन करें, क्रियाओं पर क्लिक करें, डीएनएस होस्टनाम का चयन करें और हां का चयन करें।"

https://forums.aws.amazon.com/thread.jspa?messageID=699718


5

कुछ टर्मिनल एमुलेटर सही होस्टनाम के साथ प्रॉम्प्ट को अपडेट नहीं करेंगे, जब तक कि आप एमुलेटर को बंद और पुनः आरंभ नहीं करते हैं (lxterminal, मैं आपसे बात कर रहा हूं)।

मैंने अपने होस्टनाम और होस्ट फ़ाइलों को संपादित करने और चलाने के बाद इस त्रुटि से लड़ने में 30 मिनट बिताए और sudo service hostname restartजब तक मैं दौड़ता रहा sudo hostnameऔर देखा कि होस्टनाम नया मूल्य था, भले ही वह संकेत पुराने मूल्य दिखा रहा हो।


1
मुद्दा टर्मिनल एमुलेटर नहीं है, यह ऐसे शेल हैं जिन्होंने मूल्य को कैश किया है।
मार्क स्टोसबर्ग

4

मेरे मामले में यह समस्या थी, मैं बदल hostnameकरने के लिए manक्योंकि मुझे पता है कि अगर वहाँ कुछ मानकों आप पर उपयोग कर सकते हैं चाहता था hostname। इसके बजाय यह मेरे hostnameलिए बदल गया manऔर मुझे हमेशा आपके जैसा ही संदेश मिला

sudo: unable to resolve host (none)

होस्टनाम बदलने के बाद 'लोकलहोस्ट' में वापस आने पर सबकुछ ठीक हो गया

hostname localhost

3

हर कोई संशोधित करने की सलाह देता है /etc/hosts। लेकिन कुछ मामलों में यह संभव नहीं हो सकता है (उदाहरण के लिए डॉकटर कंटेनर के अंदर)। इसलिए, मुझे एक बेहतर तरीका तलाशना था और मैं इसे लेकर आया:

echo "alias sudo='sudo -h 127.0.0.1'" >> ~/.bash_aliases
source ~/.bashrc

उपनाम बैश स्क्रिप्ट में काम नहीं करते हैं, लेकिन हम चर का उपयोग कर सकते हैं: sudo='sudo -h 127.0.0.1'


2

क्षमा करें, मैं आपकी बहुत मदद नहीं कर सकता, लेकिन क्योंकि यह कहता है कि "मेजबान को हल नहीं कर सकता" चल रहा है:

hostname

और देखें कि आउटपुट मशीन का होस्टनाम है या नहीं। यदि नहीं, तो समस्या मेजबान विन्यास है, सूडो नहीं।


मैंने किया है कि मेरी मशीन के hostname मिला है। मेरे पास / etc / मेजबानों में भी एंट्री है। मुझे अभी भी त्रुटि मिल रही है।
चंद्रेश

मेजबानों फ़ाइल को बदलने के बाद क्या आपने मशीन को रिबूट किया?
पशुपतिसेकिया

नहीं, हालांकि मेरी आईटी टीम ने कहा कि लॉक फाइल के साथ ही कठपुतली के साथ gpg कुंजी का भी मुद्दा था। अब, यह पुनः आरंभ करने के बिना हल हो गया ..
चंद्रेश

2

ओपी ने लिखा:

यह सभी / etc / hostname में था। हमारे दो बीमार सर्वरों पर यह इस तरह दिखता था:

ubuntu@(none):~$ cat /etc/hostname
linux-web-n ip-10-128-##-##

जबकि इस मुद्दे के बिना एक सर्वर पर हमारे पास था:

ubuntu@ip-10-128-##-###:~$ cat /etc/hostname
ip-10-128-##-###

linux-web-nभाग को हटा दिया , रिबूट किया और सब कुछ ठीक था।


2

यदि आपके होस्ट या होस्टनाम फ़ाइल में अवैध वर्ण हैं, तो आपको एक त्रुटि हो सकती है। केवल इन प्रतीकों की अनुमति है: एज़, ऐज़, 0-9


2

मुझे भी बिल्कुल यही समस्या है! मैंने ऑनलाइन एडमिन कंट्रोल पैनल के माध्यम से अपने VPS का नाम बदल दिया, जिसने मेजबानों की फाइल में मशीन का नाम नहीं बदला।

sudo nano /etc/hosts

फिर मैंने इसे इस से संपादित किया:

127.0.1.1 Megabyte Megabyte
127.0.0.1 localhost

इसके लिए:

127.0.1.1 Debian Debian
127.0.0.1 localhost

और यह मेरी गलती तय हो गई! उम्मीद है कि इस मदद की!


1

मुझे भी यही समस्या थी। मैंने इसे / etc / मेजबानों और / etc / hostname फ़ाइलों को संपादित करके ... / etc / मेजबान फ़ाइल पर हल किया, बस ऊपर दिखाए गए भाग को नीचे दिखाए अनुसार संपादित करें।

#vi /etc/hosts
    127.0.0.1   localhost
    127.0.1.1   localhost  myhostname




#vi /etc/hostname
    myhostname

127.0.1.1 localhost myhostnameया 127.0.1.1 myhostname?
मुस्तफा अहंगराह

2
आप इसके /etc/hostsबिना कैसे संपादित कर सकते हैं sudosudoकाम नहीं करता हैsudo: unable to resolve host ...
ग्रीन

1

यदि आप sudo नहीं कर सकते हैं तो आप su के माध्यम से रूट के रूप में लॉग इन कर सकते हैं। IE: र रूट (एक एक्स-टर्म में)। जब संकेत दिया जाए तो रूट पासवर्ड दें, फिर आप फ़ाइलों को नैनो के साथ संपादित कर सकते हैं। 'बिट्टू' में रूट पासवर्ड उसी तरह का होता है जैसा कि आप sudo के लिए इस्तेमाल करते हैं।


5
उबंटू में रूट पासवर्ड के लिए समान पासवर्ड नहीं है sudorootइसका अपना खाता है, जिसमें डिफ़ॉल्ट रूप से कोई पासवर्ड सेट नहीं है।
द वेंडर

1

यदि आप वैग्रंट का उपयोग कर रहे हैं, तो अतिथि में लॉगिन करें और चलाएं apt-get --no-install-recommends install virtualbox-guest-utils


0

मामले में आपकी समस्या यह है कि /etc/hostnameफ़ाइल और /etc/hosts, दोनों फ़ाइलों में आपका वांछित होस्टनाम है और फिर भी आपकी मशीन त्रुटि दिखा रही है

sudo: unable to resolve host

होस्टनाम को मजबूर करने का प्रयास करें

sudo hostname -F /etc/hostname

आपको शायद अभी भी वही त्रुटि मिलेगी, लेकिन लॉग आउट करने और वापस लॉग इन करने का प्रयास करें। यह मेरे लिए काम करता है।

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