Hata mesajı “sudo: host (hiçbiri) çözülemiyor”


737

Çalıştırdığımda sudoterminal birkaç saniye sıkışmış ve daha sonra bir hata mesajı veriyor. Terminalim şuna benziyor:

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

Bunu çözmek için ne yapabilirim?


2
İçeriğini sonrası /etc/hostnameve /etc/hosts.
düzenleme

48
Bu sorunun çok yerelleştirilmiş olarak kapatılmasını öneriyorum . Bir hostsdosyaya yanlışlıkla bir isim koyduklarını ancak farklı bir isim koyduklarını düşünebilecek birçok kullanıcı var , özellikle de birçok ağda bilgisayarlar aynı şekilde adlandırıldığından. Bu soru (ve cevap), birileri bu sorunla aradığında ortaya çıkar ve cevap, tam olarak yanlış yazım farklı olsa bile, bu gibi tutarsızlıkları kontrol etmelerini ister.
Eliah Kagan

9
hostnameile aynı olduğundan emin olun hosts. örn. ana bilgisayar adı ubuntu-pc ve ana bilgisayarların ubuntu-pc aynı olması gerekir.
Muhammad Sholihin

1
Bugün bununla karşılaştım. Sorun, hostname'de sahip olduğum şeyin / etc / hosts dosyasında olmamasıydı. Görmek için: $ hostname => 'mybox' $ grep 'mybox' / etc / hosts => 192.168.1.2 mybox.example.com. Alan adımdan sonra / etc / hosts => 192.168.1.2 mybox.example.com mybox
Ray

3
Bir cevap gönderemiyorum çünkü bu soru korunuyor ve burada yeterince ünüm yok. Benim durumumda, ben ağ yöneticisi yeniden başlatarak sorunu çözdü: sudo /etc/init.d/network-manager restart. Ancak, neden ilk başta sudoağ ile ilgili işleri beklerken zaman harcıyorsun diye merak ediyorum . sudoAğ mevcut olmadığında sorunsuz çalışmamalı mıyım ?
bli

Yanıtlar:


999

Kontrol edilecek iki şey (makinenizin çağrıldığını varsayarsak my-machine, bunu uygun şekilde değiştirebilirsiniz):

  1. Bu /etc/hostnamedosya makinesinin sadece adını içerir.

  2. Bunun /etc/hostsiçin bir girişi var localhost. Gibi bir şey olmalı:

     127.0.0.1 Instagram Hesabındaki Resim ve Videoları localhost.localdomain
     127.0.1.1 makinem
    

Bu dosyalardan herhangi biri doğru değilse (sudo yapamadığınızdan beri), makineyi kurtarma moduna geçirmeniz ve değişiklikleri yapmanız gerekebilir, ardından normal ortamınıza yeniden başlamanız gerekebilir.


31
Ana bilgisayar adı siz yeniden başlatılıncaya kadar değişmez. Makineyi yeniden başlatmadan değiştirmek isterseniz, yukarıdaki adımları uygulayın ve çalıştırdıktan sonra: - "sudo ana bilgisayar adı my-machine" (sudo ana bilgisayar adı) çalıştırıp çalışmadığını görmek için "sudo ana bilgisayar adı" komutunu verin. Bu yöntem belki de ana bilgisayar adını değiştirmek için geçici bir yöntem olarak kullanılabilir. Yeniden başlattıktan sonra, / etc / hostname dosyasındaki değer kullanılır.
Yashvit

2
Not: başlamak için başlayamadığınız için, bu dosyaları düzenlemek zordur. Benim çözüm değiştirmek nasılsa sudo visudo başardı ve oldu #%admin ALL=(ALL) ALLiçin %admin ALL=NOPASSWD: ALLdaha sonra yeniden başlatın ve sudo su, - yine / doğru sistem adı set, bu dosyaları düzenlemek, yeniden ve her şey çalıştı.
Ian M,

4
Windows'ta Linux Subsystem kullanıyorum ve bu problemle karşılaştım. Cevabınızı takip ettikten sonra, çözüldü.
amarVashish

2
Ayrıca eklemek gerekebilir ::1 localhostiçin /etc/hosts(bu döngü adresine aka 127.0.0.1 IPv6 versiyonu)
Woodrow Barlow

11
Neden örnek var 127.0.0.1 localhostama 127.0.1.1 my-machine?
Adam

193

Düzenleyin /etc/hosts ve 127.0.0.1 hattına yeni sunucu adını ekler (veya İsterseniz yeni bir satır oluşturun).

Maden şuna benziyor:

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

penguinYukarıdaki örnekte, /etc/hostnamedosyada belirtildiği gibi yeni ana bilgisayar adınızla değiştirin .


2
Sudo yapamıyorsa / etc / hosts dosyasını nasıl düzenleyebilir? Şifreli bir rood hesabı oluşturmadıysa (kötü fikir)
Dennis,

9
@Dennis Bu sudomesaj görüntüleniyor olsa bile hala yürütebilirsiniz . IIRC, yine de her çağrıya şifrenizi girmeniz gerekir. Bu işe yaramazsa, kurtarma konsoluna yeniden başlatabilir ve değişiklikleri uygulayabilirsiniz. Şifreli bir kök hesap önerilmemektedir.
Lekensteyn

68

Beğenmek için ana bilgisayar adınızı ekleyin /etc/hosts:

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

2
Zekice, ancak böyle bir şeyi otomatikleştirmenin iyi bir fikir olduğunu düşünmüyorum.
mwfearnley

1
Bu, ana makine adının ana makine dosyasına eklenmesini sağlar. Döngü ipi arasında mapping localhost ile dosyanın sonu arasında hiçbir şey bulunmadığına dair içsel bir varsayım var, ancak şimdi bu satır ile dosyanın sonu arasında bir miktar IPv6 olayı yok, bu durumda bu çözüm size gerçekten bitmiyor ne istersin. İlgili bir yorum: Bu veya diğer dosyaları düzenlemek için sudo kullanımı gerekiyor ve düzeltmeye çalıştığımız sudo. Hala sudo koşabilmemiz gerekiyor. Bu durumda sudo -h hostname, dosyalar üzerindeki izinleri değiştirmek veya bunları düzenlemek için yükseklik kazanmak için kullanılabilir.
Shivesh Suman

1
Bu başarısız çünkü "sudo tee .." yapamıyorum ama bu püf echo $(hostname -I | cut -d\ -f1) $(hostname) | sudo -h 127.0.0.1 tee -a /etc/hosts
noktası

31

Not, bu, bununla birleştirilen bu sorunun bir cevabıdır .

Ana bilgisayar adınız ( dave00-G31M-ES2L), içinde temsil edilmiyor /etc/hosts. LBu satıra bir ekle :

127.0.1.1   dave00-G31M-ES2

Böylece olur:

127.0.1.1   dave00-G31M-ES2L

Bunu başarmak için bir konsol açın ( Ctrl+ Alt+ tuşlarına basın T) ve şunu yazın:

sudo gedit /etc/hosts

Mektubu Lbelirtildiği gibi ekleyin , kaydedin ve çıkın.


10
Hatırlamak! Kullan sudoedit(veya sudo -e). Tercih edilen düzenleyiciyi belirlemek için, EDITORortam değişkenini (örn. export EDITOR=vim) Düzenleme için çevrimdışı bir kopya oluştururken kullanın ve ardından düzenlemeden sonra temiz bir şekilde üzerine yazın.
Jan

2
Ve sudoartık yokken bunu öneren bir tane daha var sudo. sudoçalışmıyor efendim. sudo: unable to resolve host ...
Yeşil

@ Yeşil: Hayır sudo? Bahsettiğiniz hata mesajı sudokomuttan geliyor . Belki de farklı bir şey demek istedin?
Thor,

@ Yeşil sudosadece iyi çalışıyor. Sadece herhangi bir devleti depolayamıyor (yani, Lekensteyn'in başka bir yerde söylediği gibi, her seferinde şifrenizi girmeniz gerekir).
Wlerin

4
W10’un Bash’inde bu sorunu yaşıyorsanız ve bu soruyu google’dan aldıysanız, bu benim için işe yaradı. 127.0.0.1'i "127.0.0.1 localhost DESKTOP-SLQK4CV" ("sudo vim / etc / hosts" ("sudo vim / etc / hosts") yaparak görünmek üzere değiştirdim (vim newbies için hızlı ipucu: ekleme moduna geçmek için yazmadan önce i tuşuna basın, çıkmak için esc tuşuna basın. Bu, kaydetmek ve çıkmak için ": wq" yazın veya kaydetmeden çıkmak için ": q!" yazın), benim durumumda sudo çalıştı ancak sadece DESKTOP-SLQK4CV'ye bağlanamadığını söyledi) ve benim için çalıştı.
Ave

16

Bir VPS üzerinde ubuntu kullanırken bu sorunu yaşadım. / Etc / hosts dosyasını düzenleyerek çözdüm.

bu komutu çalıştır:

sudo nano /etc/hosts

ve sonra ekle:

127.0.0.1   localhost.localdomain localhost
127.0.1.1   ubuntu

Umarım bu sorununuzu çözecektir :)

Not: Bilgisayarınızı yeniden başlatmayı unutmayın!


1
Ayrıca, aygıt adınızın (@ işaretinden sonra Terminal başlık çubuğuna basılmış) hostsdosyanın ikinci satırındaki adla eşleşip eşleşmediğini (Luca'nın örneğinde "ubuntu") bakın. İlk satır aynı zamanda sadece "localhost" olabilir.
Waldir Leoncio

2
Hatırlamak! Kullan sudoedit(veya sudo -e). Tercih edilen düzenleyiciyi belirlemek için, EDITORortam değişkenini (örn. export EDITOR=vim) Düzenleme için çevrimdışı bir kopya oluştururken kullanın ve ardından düzenlemeden sonra temiz bir şekilde üzerine yazın.
Jan

11

/ Etc / hostname dosyamdaki ana bilgisayar adı ve / etc / hosts dosyası eşleşse de aynı sorunu yaşıyordum.

Ana bilgisayar adım "staging_1" idi. Görünen o ki, ana bilgisayar adında bir alt çizgi olamaz, bu yüzden bu hatayı alıyorum. Alt çizgiyi tire ile değiştirmek sorunumu çözdü.


11

AWS'de vpc'nize gidin ve "DNS Ana Bilgisayar Adları" nı açın.


2
Askubuntu'ya hoş geldiniz! Bu konuda biraz genişletebilir misiniz? Ne demek istediğin çok net değil (en azından benim için) ..
Elder Geek

2
Bana yardımcı olan cevap buydu. Amazon AWS son baktığımdan beri değişti. VPC’lerin DNS seçenekleri vardır ve herhangi bir DNS çözümü işe yaramadan açılmaları gerekir.
Chris Moore

1
DNS Ana Bilgisayar Adlarını Etkinleştir seçeneği, örneğin vpc girişinin sağ tıklama menüsünde bulunur
Matteo Scotuzzi,

YokDNS Hostnames
Yeşil

7

Soruda verilen semptom, bu daha spesifik problemle güçlü bir şekilde ilişkili olabilir:

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

Bunlardan birisinin ana bilgisayar adınızı localhost olarak eklemesini /etc/hosts(başka birkaç cevapta gösterildiği gibi) eklemenin farklı yolları vardır . Genel olarak yapılacak doğru şey bu olabilir, ancak tek olası çözüm bu değil.

Bir "tam nitelikli etki alanı adı" harici bir DNS sunucusu veya benzeri tarafından sağlanabilir (eğer ağınızda mevcutsa). Bu durumda, sudogiriş eksik olmasına rağmen şikayet etmeyecek /etc/hosts.


Not: sudosudoers dosyasındaki isteğe bağlı özellikler nedeniyle, zorunlu olmasa da, ana bilgisayar adını kaldırmaya çalışır. Ana bilgisayar adını aramaya çalışırken sudo komutuna bakın .

Gecikme çok uzun olmadığı sürece, bu hata mesajı genellikle zararsızdır.


Biraz daha hızlı:sudo --host=localhost
nobar



5

Bazı terminal emülatörleri siz emülatörü kapatıp yeniden başlatana kadar istemi doğru hostname ile güncellemeyecektir (lxterminal, seninle konuşuyorum).

Benim düzenledikten sonra bu hata ile 30 dakika savaşarak geçirdim hostname ve ana dosya ve çalışan sudo service hostname restartkoştum kadar sudo hostnameistemi eski değerini showning olsa bile, ve alan adının yeni değer olduğunu gördü.


1
Sorun terminal emülatörleri değil, değeri önbelleğe alan kabuklar.
Mark Stosberg

4

Benim durumumda ben değiştirdi, sorun hostnameiçin manben üzerinde kullanabileceğiniz bazı parametreler vardır olmadığını bilmek istedim çünkü hostname. Bunun yerine benim hostnameiçin değişti manve hep senin gibi aynı mesajı aldım

sudo: unable to resolve host (none)

hostname `localhost 'olarak değiştirildikten sonra her şey tekrar işe yaradı

hostname localhost

3

Herkes değişiklik yapmasını önerir /etc/hosts. Ancak bazı durumlarda bu mümkün olmayabilir (örneğin liman işçisi konteyneri içinde). Böylece daha iyi bir yol bulmalıydım ve şunu buldum:

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

Diğer adlar bash komut dosyalarında çalışmaz, ancak değişkenleri kullanabiliriz: sudo='sudo -h 127.0.0.1'


2

Üzgünüm, size çok yardımcı olamam ama "ana bilgisayarı çözemiyor" yazdığından çalıştırmayı deneyin:

hostname

Ve çıktının makinenin ana bilgisayar adı olup olmadığına bakın. Değilse, sorun ana bilgisayar yapılandırmasıdır, sudo değil.


Makinemin ana bilgisayar adını aldım. Ayrıca / etc / hosts dizinine de girdim. Hala hatayı alıyorum.
chandresh

Ana bilgisayar dosyasını değiştirdikten sonra makineyi yeniden başlattınız mı?
animaletdesequia

Hayır. BT ekibim kilit dosyasıyla ilgili bir sorun olduğunu ve kuklalarla birlikte gpg anahtarının olduğunu söyledi. Şimdi, yeniden başlatmadan çözüldü ..
chandresh

2

OP şunu yazdı:

Hepsi / etc / hostname dizinindeydi. Hasta sunucularımızdan ikisinde şöyle görünüyordu:

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

Bu sorunu olmayan bir sunucudayken:

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

linux-web-nPorsiyon kaldırıldı , yeniden başlatıldı ve her şey iyiydi.


2

ana bilgisayarlarınız veya ana bilgisayar adı dosyanız geçersiz karakterler içeriyorsa, bir hatayla karşılaşıyor olabilirsiniz. Sadece bu sembollere izin verilir: az, AZ, 0-9


2

Ben de aynı sorunu yaşadım! VPS'imin adını, hosts dosyasındaki makine adını değiştirmeyen çevrimiçi yönetici kontrol panelinden değiştirdim.

sudo nano /etc/hosts

Sonra şunu düzenledim:

127.0.1.1 Megabyte Megabyte
127.0.0.1 localhost

Buna:

127.0.1.1 Debian Debian
127.0.0.1 localhost

ve bu benim hatamı düzeltti! Umarım bu yardımcı oldu!


1

Ben de aynı problemi yaşadım. / Etc / hosts dosyasında / etc / hosts ve / etc / hostname dosyalarını ... düzenleyerek çözdüm, sadece üst kısmı aşağıdaki gibi düzenleyin.

#vi /etc/hosts
    127.0.0.1   localhost
    127.0.1.1   localhost  myhostname




#vi /etc/hostname
    myhostname

127.0.1.1 localhost myhostnameya 127.0.1.1 myhostname?
Mostafa Ahangarha

2
/etc/hostsOlmadan nasıl düzenleyebilirsiniz sudo. sudoçalışmıyorsudo: unable to resolve host ...
Yeşil

1

Sudo yapamıyorsanız su ile root olarak giriş yapabilirsiniz. IE: su kökü (x teriminde). istendiğinde kök şifresini verin, ardından nano ile dosyaları düzenleyebilirsiniz. 'Buntu'daki kök şifre, sudo için kullanacağınız şifre ile aynıdır.


5
Ubuntu’daki root şifresi aynı şifre değildir sudo. rootVarsayılan olarak ayarlanmış bir şifresi olmayan kendi hesabıdır.
Wanderer,

1

Vagrant kullanıyorsanız konuğa giriş yapın ve apt-get --no-install-recommends install virtualbox-guest-utils


0

Sorununuz bu /etc/hostnamedosyaysa ve /etc/hostsher iki dosya da istediğiniz ana bilgisayar adına sahipse ve hala makineniz hatayı gösteriyorsa

sudo: unable to resolve host

Ana bilgisayar adını zorlayarak deneyin

sudo hostname -F /etc/hostname

Muhtemelen hala aynı hatayı alacaksınız, ancak çıkış yapıp tekrar giriş yapmayı deneyin. Bu benim için çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.