Когда я работаю sudo
терминал застревает в течение нескольких секунд и затем производит сообщение об ошибке. Мой терминал похож на это:
ubuntu@(none):~$ sudo true
sudo: unable to resolve host (none)
Что я могу сделать для решения его?
Две вещи для проверки (предполагая, что ваша машина называется my-machine
, вы можете изменить это соответствующим образом):
Что файл /etc/hostname
содержит только имя машины.
Что /etc/hosts
имеет запись для localhost
. В нем должно быть что-то вроде:
127.0.0.1 localhost.localdomain localhost 127.0.1.1 моя машина
Если любой из этих файлов неправильный (так как вы не можете sudo), вам, возможно, придется перезагрузить машину в режим восстановления и внести изменения, а затем перезагрузиться в ваше обычное окружение.
Извините, я не могу вам сильно помочь, но, так как там написано "не могу разрешить хост", попробуйте запустить:
hostname
И посмотрите, не является ли выходным именем хоста машины. Если нет, то проблема в конфигурации хоста, а не в 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-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Замените penguin
в приведенном выше примере своим новым именем хоста, как указано в файле / etc / hostname
.
Обратите внимание, это ответ на данный вопрос , который был объединен с этим вопросом.
Имя вашего хоста (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 localhost
127.0.1.1 ubuntu
Я надеюсь, что это решит вашу проблему :)
PS: Не забудьте перезагрузить компьютер!
ОП писал:
Все это было в / 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
, после перезагрузки все в порядке.
В моем случае это была проблема, я изменил имя хоста на
man
, потому что хотел узнать, есть ли какие-то параметры, которые вы можете использовать на имя хоста
. Вместо этого я сменил имя хоста на
man
и после смены имени хоста обратно на `localhost все снова сработало нормально
hostname localhost
вы можете получить сообщение об ошибке, если ваши хосты или файл имени хоста содержат недопустимые символы. Разрешены только эти символы: az, AZ, 0-9
У меня была такая же проблема, хотя имя хоста в моем файле / etc / hostname и файле / etc / hosts совпало.
Мое имя хоста было "staging_1". Оказывается, в имени хоста не может быть символа подчеркивания, поэтому я получил эту ошибку. Замена подчеркивания на дефис устранила мою проблему.
В AWS перейдите на свой vpc и включите «DNS Hostnames».
Добавьте свое имя хоста в / etc / hosts
примерно так:
echo $(hostname -I | cut -d\ -f1) $(hostname) | sudo tee -a /etc/hosts
У меня была такая же проблема. Я решил это, отредактировав файлы / etc / hosts и / etc / hostname ... в файле / etc / hosts, просто отредактируйте верхнюю часть, как показано ниже.
#vi /etc/hosts
127.0.0.1 localhost
127.0.1.1 localhost myhostname
#vi /etc/hostname
myhostname
Я обнаружил то же сообщение об ошибке. Я думаю, что эта ветка обсуждения на форумах разработчиков AWS - лучшее решение:
«Откройте консоль управления VPC, выберите VPC, нажмите« Действия », выберите« Изменить имена хостов DNS »и выберите« Да ».
https: // forum .aws.amazon.com / thread.jspa? messageID = 699718
если вы не можете использовать sudo, вы МОЖЕТЕ войти в систему как root через su. IE: su root (в x-члене). затем при появлении запроса введите пароль root, после чего вы сможете редактировать файлы с помощью nano. Пароль root в 'buntu совпадает с паролем, который вы бы использовали для sudo.
У меня была такая же проблема!Я изменил имя своего 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
и это исправлено моя ошибка! Надеюсь, это помогло!
Некоторые терминальные эмуляторы не будут обновлять запрос с правильным именем хоста до тех пор, пока вы не закроете и не перезапустите эмулятор (lxterminal, я с вами разговариваю).
Я 30 минут боролся с этой ошибкой после редактирования моих файлов хостов и хостов и запуска команды перезапуска sudo service hostname
, пока не запустил sudo hostname
и не увидел, что имя хоста - это новое значение, даже если в приглашении было указано старое значение.
Если вы используете Vagrant, войдите в систему в гостевой системе и запустите
apt-get --no-install-рекомендует установить virtualbox-guest-utils
Признак, указанный в вопросе, может сильно коррелировать с этой более конкретной проблемой:
$ hostname --fqdn
hostname: Temporary failure in name resolution
Есть разные способы решения этой проблемы, один из которых - добавить ваше имя хоста как localhost в / etc / hosts
(как показано в нескольких других ответах). В целом это может быть правильным решением, но это не единственное возможное решение.
«Полное доменное имя» может быть предоставлено внешним DNS-сервером или аналогичным (если он доступен в вашей сети) . В этом случае sudo
не будет жаловаться, несмотря на отсутствие записи в / etc / hosts
.
Примечание: sudo
пытается разыменовать имя хоста, даже хотя это не обязательно из-за дополнительных возможностей в файле sudoers. См. команду sudo, пытающуюся найти имя хоста .
Пока задержка не слишком велика, это сообщение об ошибке обычно безвредно.
Все советуют изменить / etc / hosts
. Но в некоторых случаях это может быть невозможно (например, внутри контейнера докеров). Итак, мне пришлось найти способ получше, и я пришел к следующему:
echo "alias sudo='sudo -h 127.0.0.1'" >> ~/.bash_aliases
source ~/.bashrc
Псевдонимы не работают в сценариях bash, но мы можем использовать переменные: sudo = 'sudo -h 127.0.0.1'
Если ваша проблема в том, что файл / etc / hostname
и / etc / hosts
, оба файла имеют ваше желаемое имя хоста, но ваш компьютер по-прежнему показывает ошибку
sudo: не удается разрешить хост
Попробуйте принудительно указать имя хоста
sudo hostname -F /etc/hostname
. Вероятно, вы все равно получите ту же ошибку, но попробуйте выйти и снова войти в систему. работал у меня.