Сообщение об ошибке “sudo: не мог разрешить хост (ни один)”

Когда я работаю sudo терминал застревает в течение нескольких секунд и затем производит сообщение об ошибке. Мой терминал похож на это:

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

Что я могу сделать для решения его?

882
задан 16 December 2018 в 01:47

20 ответов

Две вещи для проверки (предполагая, что ваша машина называется my-machine, вы можете изменить это соответствующим образом):

  1. Что файл /etc/hostname содержит только имя машины.

  2. Что /etc/hosts имеет запись для localhost. В нем должно быть что-то вроде:

     127.0.0.1 localhost.localdomain localhost
     127.0.1.1 моя машина
    

Если любой из этих файлов неправильный (так как вы не можете sudo), вам, возможно, придется перезагрузить машину в режим восстановления и внести изменения, а затем перезагрузиться в ваше обычное окружение.

1146
ответ дан 22 November 2019 в 22:31

Извините, я не могу вам сильно помочь, но, так как там написано "не могу разрешить хост", попробуйте запустить:

hostname

И посмотрите, не является ли выходным именем хоста машины. Если нет, то проблема в конфигурации хоста, а не в sudo.

2
ответ дан 22 November 2019 в 22:31

Отредактируйте / 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 .

216
ответ дан 22 November 2019 в 22:31

Обратите внимание, это ответ на данный вопрос , который был объединен с этим вопросом.

Имя вашего хоста (dave00-G31M-ES2L). не представлена в /etc/hosts. Добавьте L к этой строке:

127.0.1.1   dave00-G31M-ES2

Так получится:

127.0.1.1   dave00-G31M-ES2L

Для этого откройте консоль (нажмите Ctrl+Alt+T) и введите:

sudo gedit /etc/hosts

Добавьте букву L, как уже упоминалось, сохраните и выйдите.

32
ответ дан 22 November 2019 в 22:31

У меня возникла эта проблема, когда я использовал ubuntu на VPS. Я решил это редактированием файла / etc / hosts.

запустите эту команду:

sudo nano /etc/hosts

и затем добавьте:

127.0.0.1   localhost.localdomain localhost
127.0.1.1   ubuntu

Я надеюсь, что это решит вашу проблему :)

PS: Не забудьте перезагрузить компьютер!

18
ответ дан 22 November 2019 в 22:31

ОП писал:

Все это было в / etc / hostname. На двух наших больных серверах это выглядело как это:

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

На сервере без этой проблемы у нас было:

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

Удалена часть linux-web-n , после перезагрузки все в порядке.

2
ответ дан 22 November 2019 в 22:31

В моем случае это была проблема, я изменил имя хоста на man, потому что хотел узнать, есть ли какие-то параметры, которые вы можете использовать на имя хоста. Вместо этого я сменил имя хоста на man и после смены имени хоста обратно на `localhost все снова сработало нормально

hostname localhost
5
ответ дан 22 November 2019 в 22:31

вы можете получить сообщение об ошибке, если ваши хосты или файл имени хоста содержат недопустимые символы. Разрешены только эти символы: az, AZ, 0-9

2
ответ дан 22 November 2019 в 22:31

У меня была такая же проблема, хотя имя хоста в моем файле / etc / hostname и файле / etc / hosts совпало.

Мое имя хоста было "staging_1". Оказывается, в имени хоста не может быть символа подчеркивания, поэтому я получил эту ошибку. Замена подчеркивания на дефис устранила мою проблему.

13
ответ дан 22 November 2019 в 22:31

В AWS перейдите на свой vpc и включите «DNS Hostnames».

11
ответ дан 22 November 2019 в 22:31

Добавьте свое имя хоста в / etc / hosts примерно так:

echo $(hostname -I | cut -d\  -f1) $(hostname) | sudo tee -a /etc/hosts
75
ответ дан 22 November 2019 в 22:31

У меня была такая же проблема. Я решил это, отредактировав файлы / etc / hosts и / etc / hostname ... в файле / etc / hosts, просто отредактируйте верхнюю часть, как показано ниже.

#vi /etc/hosts
    127.0.0.1   localhost
    127.0.1.1   localhost  myhostname




#vi /etc/hostname
    myhostname
1
ответ дан 22 November 2019 в 22:31

Я обнаружил то же сообщение об ошибке. Я думаю, что эта ветка обсуждения на форумах разработчиков AWS - лучшее решение:

«Откройте консоль управления VPC, выберите VPC, нажмите« Действия », выберите« Изменить имена хостов DNS »и выберите« Да ».

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

6
ответ дан 22 November 2019 в 22:31

если вы не можете использовать sudo, вы МОЖЕТЕ войти в систему как root через su. IE: su root (в x-члене). затем при появлении запроса введите пароль root, после чего вы сможете редактировать файлы с помощью nano. Пароль root в 'buntu совпадает с паролем, который вы бы использовали для sudo.

1
ответ дан 22 November 2019 в 22:31

У меня была такая же проблема!Я изменил имя своего VPS через онлайн-панель управления администратора, которая не изменила имя машины в файле hosts. Все, что я сделал, было запущено:

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

и это исправлено моя ошибка! Надеюсь, это помогло!

2
ответ дан 22 November 2019 в 22:31

Некоторые терминальные эмуляторы не будут обновлять запрос с правильным именем хоста до тех пор, пока вы не закроете и не перезапустите эмулятор (lxterminal, я с вами разговариваю).

Я 30 минут боролся с этой ошибкой после редактирования моих файлов хостов и хостов и запуска команды перезапуска sudo service hostname , пока не запустил sudo hostname и не увидел, что имя хоста - это новое значение, даже если в приглашении было указано старое значение.

6
ответ дан 22 November 2019 в 22:31

Если вы используете Vagrant, войдите в систему в гостевой системе и запустите apt-get --no-install-рекомендует установить virtualbox-guest-utils

1
ответ дан 22 November 2019 в 22:31

Признак, указанный в вопросе, может сильно коррелировать с этой более конкретной проблемой:

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

Есть разные способы решения этой проблемы, один из которых - добавить ваше имя хоста как localhost в / etc / hosts (как показано в нескольких других ответах). В целом это может быть правильным решением, но это не единственное возможное решение.

«Полное доменное имя» может быть предоставлено внешним DNS-сервером или аналогичным (если он доступен в вашей сети) . В этом случае sudo не будет жаловаться, несмотря на отсутствие записи в / etc / hosts .


Примечание: sudo пытается разыменовать имя хоста, даже хотя это не обязательно из-за дополнительных возможностей в файле sudoers. См. команду sudo, пытающуюся найти имя хоста .

Пока задержка не слишком велика, это сообщение об ошибке обычно безвредно.

10
ответ дан 22 November 2019 в 22:31

Все советуют изменить / etc / hosts . Но в некоторых случаях это может быть невозможно (например, внутри контейнера докеров). Итак, мне пришлось найти способ получше, и я пришел к следующему:

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

Псевдонимы не работают в сценариях bash, но мы можем использовать переменные: sudo = 'sudo -h 127.0.0.1'

6
ответ дан 22 November 2019 в 22:31

Если ваша проблема в том, что файл / etc / hostname и / etc / hosts , оба файла имеют ваше желаемое имя хоста, но ваш компьютер по-прежнему показывает ошибку

sudo: не удается разрешить хост

Попробуйте принудительно указать имя хоста

sudo hostname -F /etc/hostname

. Вероятно, вы все равно получите ту же ошибку, но попробуйте выйти и снова войти в систему. работал у меня.

1
ответ дан 22 November 2019 в 22:31

Другие вопросы по тегам:

Похожие вопросы: