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

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

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

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

628 голосов | спросил Kit Sunde 31 PM000000110000004331 2011, 23:09:43

19 ответов


861

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

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

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

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

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

ответил Jeremy Kerr 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2011 07:26:26 +0400 2011, 07:26:26
168

Изменить /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 7 PMpSat, 07 Apr 2012 17:39:42 +040039Saturday 2012, 17:39:42
39

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

echo $(hostname -I | cut -d\  -f1) $(hostname) | sudo tee -a /etc/hosts
ответил Collin Anderson 15 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 15 Sep 2014 20:03:45 +0400 2014, 20:03:45
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 PM00000030000001431 2012, 15:02:14
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 1 AMpMon, 01 Apr 2013 05:18:12 +040018Monday 2013, 05:18:12
10

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

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

ответил Chris.B 13 PM00000050000004031 2014, 17:50:40
9

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

ответил Erick 15 Jam1000000amThu, 15 Jan 2015 08:15:44 +030015 2015, 08:15:44
5

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

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

https://forums.aws.amazon.com/thread.jspa? Код = 699718

ответил user93581 13 FebruaryEurope/MoscowbSat, 13 Feb 2016 14:44:09 +0300000000pmSat, 13 Feb 2016 14:44:09 +030016 2016, 14:44:09
5

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

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

ответил dagbel 19 J0000006Europe/Moscow 2016, 19:29:27
4

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

sudo: unable to resolve host (none)

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

hostname localhost
ответил XandruCea 10 Jam1000000amFri, 10 Jan 2014 02:24:16 +040014 2014, 02:24:16
3

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

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

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

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


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

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

ответил nobar 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 19 Sep 2017 01:17:38 +0300 2017, 01:17:38
2

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

hostname

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

ответил animaletdesequia 31 PM000000110000000931 2011, 23:16:09
2

OP писал (а):

  

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

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

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

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

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

ответил animaletdesequia 31 PM000000110000000931 2011, 23:16:09
2

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

ответил Marcello 18 Jam1000000amSun, 18 Jan 2015 06:26:47 +030015 2015, 06:26:47
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 Jam1000000amTue, 10 Jan 2017 05:18:04 +030017 2017, 05:18:04
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 MarpmSat, 26 Mar 2016 20:53:48 +03002016-03-26T20:53:48+03:0008 2016, 20:53:48
1

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

ответил ken scharf 24 PM00000060000005431 2016, 18:07:54
1

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

ответил tanmoy 13 J000000Thursday17 2017, 10:27:38
0

Все советуют изменять /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 J000000Saturday18 2018, 20:24:48

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132