Сообщение об ошибке 'sudo: невозможно решить host USER'

651

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

[email protected](none):~$ sudo true
sudo: unable to resolve host (none)

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

    
задан Kit Sunde 31.08.2011 в 21:09
источник

19 ответов

888

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

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

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

     127.0.0.1    localhost.localdomain localhost
     127.0.1.1    my-machine
    

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

    
ответ дан Jeremy Kerr 01.09.2011 в 05:26
источник
176

Изменить /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 .

    
ответ дан Lekensteyn 07.04.2012 в 15:39
49

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

echo $(hostname -I | cut -d\  -f1) $(hostname) | sudo tee -a /etc/hosts
    
ответ дан Collin Anderson 15.09.2014 в 18:03
30

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

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

    
ответ дан Thor 18.08.2012 в 13:02
16

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

выполните следующую команду:

sudo nano /etc/hosts

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

127.0.0.1   localhost.localdomain localhost
127.0.1.1   ubuntu

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

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

    
ответ дан Luca D'Amico 01.04.2013 в 03:18
10

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

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

    
ответ дан Chris.B 13.08.2014 в 15:50
9

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

    
ответ дан Erick 15.01.2015 в 06:15
5

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

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

Ссылка

    
ответ дан user93581 13.02.2016 в 12:44
5

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

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

    
ответ дан dagbel 19.06.2016 в 18:29
4

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

sudo: unable to resolve host (none)

после изменения имени хоста на «localhost» все снова работало нормально

hostname localhost
    
ответ дан XandruCea 09.01.2014 в 23:24
3

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

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

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

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

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

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

    
ответ дан nobar 19.09.2017 в 00:17
2

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

hostname

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

    
ответ дан animaletdesequia 31.08.2011 в 21:16
2

OP писал (а):

It was all in /etc/hostname. On two of our sick servers it looked like this:

[email protected](none):~$ cat /etc/hostname
linux-web-n ip-10-128-##-##

While on a server without this issue we had:

[email protected]##-###:~$ cat /etc/hostname
ip-10-128-##-###

Removed the linux-web-n portion, rebooted and everything was fine.

    
ответ дан Radu Rădeanu 13.04.2014 в 07:19
2

У меня была такая же проблема! Я изменил имя своего 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

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

ответ дан Synth 10.01.2017 в 03:18
2

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

    
ответ дан Marcello 18.01.2015 в 04:26
2

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

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

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

    
ответ дан dashohoxha 28.07.2018 в 19:24
1

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

#vi /etc/hosts
    127.0.0.1   localhost
    127.0.1.1   localhost  myhostname




#vi /etc/hostname
    myhostname
    
ответ дан Centy 26.03.2016 в 18:53
1

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

    
ответ дан ken scharf 24.08.2016 в 17:07
1

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

    
ответ дан tanmoy 13.07.2017 в 09:27