''/> ''/> ''/> Сообщение об ошибке 'sudo: не удается разрешить хост <USER>' | kmstudio.ru

Вопрос: Сообщение об ошибке 'sudo: не удается разрешить хост '


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

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

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


636
2017-08-31 19:09


Источник


Пожалуйста, разместите содержание /etc/hostname а также /etc/hosts, - arrange
Я рекомендую не закрывать этот вопрос, как слишком локализованный, Есть много пользователей, которые могут ошибочно полагать, что они написали одно имя в своем hosts но вместо этого указывается другое имя, тем более что во многих сетях аналогичным образом называются компьютеры. Этот вопрос (и ответ) появится, когда кто-то будет искать с этой проблемой, и ответ заставит их проверить такие расхождения, хотя точное неправильное письмо будет иным. - Eliah Kagan
убедитесь, что hostname то же самое с hosts, например имя хоста убунт-ПК и хосты убунт-ПК должно быть одинаковым. - Muhammad Sholihin
Сегодня я столкнулся с этим. Проблема заключалась в том, что то, что у меня было в hostname, не было в / etc / hosts. To wit: $ hostname => 'mybox' $ grep 'mybox' / etc / hosts => 192.168.1.2 mybox.example.com. Мне нужно было добавить «mybox» после моего имени домена в / etc / hosts => 192.168.1.2 mybox.example.com mybox - Jim
Я не могу отправить ответ, потому что этот вопрос защищен, и у меня нет достаточной репутации. В моем случае я решил проблему, перезапустив сетевой менеджер: sudo /etc/init.d/network-manager restart, Однако мне интересно, почему в первую очередь sudo тратит время на ожидание сетевых материалов. не должны sudo работать без проблем, когда сеть недоступна? - bli


Ответы:


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

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

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

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

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


870
2017-09-01 03:26



Имя хоста не изменится, пока вы не перезагрузитесь. Если вы хотите изменить его, не перезагружая компьютер, следуйте приведенным выше шагам и после этого запуска: - «sudo hostname my-machine», чтобы увидеть, работает ли это «sudo hostname». Он покажет имя хоста вашего компьютера. Этот метод может использоваться как временный метод для изменения имени хоста. после перезапуска используется значение из файла / etc / hostname. - Yashvit
Примечание: поскольку вы не можете начинать с sudo, редактировать эти файлы сложно. Мое решение состояло в том, что я как-то мог судо visudo и изменить #%admin ALL=(ALL) ALL в %admin ALL=NOPASSWD: ALL , затем перезагрузитесь и sudo su -, отредактируйте эти файлы, установите / исправьте имя хоста, перезагрузитесь снова, и все сработало. - Ian M
Я использую подсистему Linux в Windows, и я столкнулся с этой проблемой. После того, как вы ответили, он был разрешен. - amarVashishth
вам также может потребоваться добавить ::1 localhost в /etc/hosts (это версия IPv6 127.0.0.1, также называемая адресом loopback) - Woodrow Barlow
Почему ваш пример 127.0.0.1 localhost но 127.0.1.1 my-machine? - Adam


редактировать  /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 файл.


169
2018-04-07 13:39



Как он может отредактировать файл / etc / hosts, если он не может sudo? Если он не создал учетную запись с паролем (плохая идея) - Dennis
@Dennis Вы все еще можете выполнить sudo даже если это сообщение отображается. IIRC вы все равно должны вводить свой пароль при каждом вызове. Если это не сработает, вы можете перезагрузиться в консоль восстановления и применить изменения. Коренная учетная запись с паролем не рекомендуется. - Lekensteyn


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

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

40
2017-09-15 16:03



Это был блестящий ответ, который не получил достаточного кредита - Edziu Eames
Хороший! Согласился, что он не получает достаточной репутации. :-) - Peter K.
Это умно, но я не думаю, что это хорошая идея, чтобы автоматизировать что-то подобное. - mwfearnley


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

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


30
2017-08-18 11:02



Запомнить! использование sudoedit (или sudo -e). Чтобы указать предпочтительный редактор, используйте EDITOR переменная среды (например, export EDITOR=vim), поскольку он создает автономную копию для редактирования, а затем после перезаписывания автоматически перезаписывается. - Jan
И есть еще один, кто предлагает sudo когда больше нет sudo, sudo не работает, сэр. sudo: unable to resolve host ... - Green
@Green: Нет sudo? Сообщение об ошибке, о котором вы говорите, sudo команда. Возможно, вы имели в виду что-то другое? - Thor
@Green sudo работает просто отлично. Он просто не может хранить какое-либо состояние (то есть, как сказал Лекенштейн в другом месте, вы должны каждый раз вводить свой пароль). - Wlerin
Если у вас есть эта проблема на Bash W10 и пришел к этому вопросу из google, это ответ, который сработал для меня. Я изменил 127.0.0.1, чтобы выглядеть как «127.0.0.1 localhost DESKTOP-SLQK4CV» (выполнив «sudo vim / etc / hosts» (быстрый совет для новичков vim: нажмите i перед вводом, чтобы переключиться в режим вставки, нажмите esc, чтобы выйти что напишите «: wq» для сохранения и выхода или «: q!» для выхода без сохранения), в моем случае sudo работал, но просто сказал, что он не может подключиться к DESKTOP-SLQK4CV), и он начал работать для меня. - Ave


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

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

sudo nano /etc/hosts

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

127.0.0.1   localhost.localdomain localhost
127.0.1.1   ubuntu

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

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


16
2018-04-01 01:18



Кроме того, посмотрите, совпадает ли имя вашего устройства (напечатано на строке заголовка терминала после знака @) имени во второй строке hosts файл («ubuntu» в примере Лука). Первая строка также может быть просто «localhost». - Waldir Leoncio
Запомнить! использование sudoedit (или sudo -e). Чтобы указать предпочтительный редактор, используйте EDITOR переменная среды (например, export EDITOR=vim), поскольку он создает автономную копию для редактирования, а затем после перезаписывания автоматически перезаписывается. - Jan


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

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


10
2017-08-13 13:50





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


9
2018-01-15 05:15



Добро пожаловать в askubuntu! Можете ли вы немного рассказать об этом? Не совсем понятно, что вы имеете в виду (по крайней мере для меня). - Elder Geek
Возможно, это не относится к вопросу, но это очень помогло мне. Спасибо! - clayzermk1
Это был ответ, который мне помог. Amazon AWS изменилась с тех пор, как я в последний раз смотрел на нее. У VPC есть параметры DNS, и их необходимо включить, прежде чем будет разрешено разрешение DNS. - Chris Moore
параметр Enable DNS Hostnames можно найти (например) в меню правой кнопки мыши в записи vpc - Matteo Scotuzzi
Здесь нет DNS Hostnames - Green


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

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

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


5
2018-02-13 11:44





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

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


5
2018-06-19 16:29



Проблема заключается не в эмуляторах терминалов, а в оболочках, которые кэшировали значение. - Mark Stosberg


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

sudo: unable to resolve host (none)

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

hostname localhost

4
2018-01-09 22:24





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

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

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

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


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

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


3
2017-09-18 22:17