Сообщение об ошибке "sudo: не удается разрешить узел (нет)"

Когда я бегу sudo терминал зависает на несколько секунд, а затем выдает сообщение об ошибке. Мой терминал выглядит так:

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

Что я могу сделать, чтобы решить эту проблему?

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

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

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

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

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

Редактировать /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-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters

Заменять penguin в приведенном выше примере по вашему новому имени хоста, как указано в /etc/hostname файл.

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

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

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

Ваше имя хоста (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 как уже упоминалось, сохраните и выйдите.

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

выполните эту команду:

sudo nano /etc/hosts

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

127.0.0.1   localhost.localdomain localhost127.0.1.1   ubuntu

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

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

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

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

В AWS перейдите на свой vpc и включите "DNS-имена хостов".

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

$ hostname --fqdnhostname: Temporary failure in name resolution

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

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


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

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

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

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

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

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

"Перейдите в консоль управления VPC, выберите VPC, нажмите "Действия", выберите "Редактировать имена DNS-хостов" и выберите "Да"."

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

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

убедитесь, что ваше “имя хоста” совпадает с “hosts”. например, имя хоста ubuntu-pc и hosts ubuntu-pc должны быть одинаковыми.

Пожалуйста, опубликуйте содержимое файлов "/etc/hostname` и “/etc/hosts”.

Я не могу опубликовать ответ, потому что этот вопрос защищен, и у меня здесь недостаточно репутации. В моем случае я решил проблему, перезапустив network-manager: sudo /etc/init.d/network-manager restart. Однако мне интересно, почему в первую очередь “sudo” тратит время на ожидание материалов, связанных с сетью. Разве “sudo” не должен работать без проблем, когда сеть недоступна?

Я столкнулся с этим сегодня. Проблема заключалась в том, что то, что у меня было в hostname, не было в /etc/hosts. А именно: $ hostname => ‘mybox’ $ grep ‘mybox’ /etc/hosts => 192.168.1.2 mybox.example.com . Мне нужно было добавить “mybox” после моего доменного имени в /etc/hosts => 192.168.1.2 mybox.example.com моя коробка

Why does the question have <USER>- в конце? Это противоречит фактическому результату, показанному в теле вопроса как "(нет) Предложение по улучшению: удалить `

@arielf Вы можете улучшить вопросы здесь. Он был изменен другим пользователем. Я тоже не знаю. :stuck_out_tongue: