- Ошибка sudo unable to resolve host
- Что значит sudo unable to resolve host
- Как исправить ошибку
- 1. Решение проблемы в /etc/hosts
- Fixing ‘sudo: unable to resolve host’ Error in Linux
- Fix sudo: unable to resolve host
- Ошибка sudo unable to resolve host
- Что значит sudo unable to resolve host
- Как исправить ошибку
- 1. Решение проблемы в /etc/hosts
- 2. Решение с помощью systemd
- Выводы
- Исправление ошибки sudo: unable to resolve host
- Исправление sudo: unable to resolve host
- Сообщение об ошибке «sudo: невозможно разрешить хост (нет)»
Ошибка sudo unable to resolve host
Некоторые пользователи сталкиваются с ошибкой «sudo unable to resolve host». Обычно, эта ошибка появляется после смены имени компьютера. Это простая проблема, которую можно быстро решить.
В этой статье мы рассмотрим, почему возникает эта ошибка, что она означает, а также как её решить на примере Ubuntu.
Что значит sudo unable to resolve host
Сообщение «unable to resolve host имя_хоста» означает, что утилита не может определить IP-адрес хоста «имя_хоста». Казалось бы, sudo — это локальная команда для повышения привилегий в системе, и ей незачем определять IP хостов. Но это не совсем так: sudo может использоваться и удалёнными пользователями, например, подключёнными по SSH, а в самом конфигурационном файле /etc/sudoers уровни доступа различных пользователей настраиваются такой строчкой:
пользователь хост=(другой_пользователь:группа) команды
Подробнее про строку настройки читайте в статье настройка sudo в linux. А сейчас нам интересно, что для каждого запроса утилите нужно определить, какой хост используется на данном компьютере.
Если кратко, то основная идея разработчиков состоит в том, что один универсальный файл /etc/sudoers будет использоваться на множестве компьютеров и на каждом из них нужно определить, какие правила предназначены для него. Таким образом, переменная host в sudoers влияет только на локальные правила.
А теперь вернёмся к нашей ошибке. Как я уже сказал, она означает, что утилита не может определить IP-адрес «имени хоста». Для домена сайта это означало бы, что такой записи нет в DNS. Но поскольку это имя нашего локального компьютера, то вполне естественно, что его нет в глобальной сети.
Как исправить ошибку
1. Решение проблемы в /etc/hosts
Чтобы исправить ошибку, мы можем добавить такую DNS-запись локально в файл /etc/hosts. Поскольку sudo у вас не работает, а этот файл можно редактировать только от суперпользователя, то эта простая задача становится сложнее. Сначала смотрим наше текущее имя хоста:
Дальше, если у вас установлен пароль root, вы можете авторизоваться от его имени с помощью su:
А затем добавить такую строчку в /etc/hosts:
Источник
Fixing ‘sudo: unable to resolve host’ Error in Linux
To test the tutorials on Linux Handbook, I created a new server on UpCloud, my favorite cloud server provider with blazing fast SSD. My Ubuntu 18.04 server was ready within minutes.
I forgot to give it a reasonable name so a few days later, I had to change the hostname and gave it a better name. Now it’s called test-server because that’s what it is used for.
I created a sudo user because I prefer not to be root all the time, specially when I am tinkering with my system.
When I started using commands with sudo, I saw a strange error in the output of the commands:
sudo: unable to resolve host test-server
The command ran with sudo without any problem but this error message was displayed anyway.
Fix sudo: unable to resolve host
The root cause of the error was actually related to the hostname changing. Let me show you how to fix this unable to resolve hostname error.
First, check the hostname of your system with hostname command. In my case, the hostname is test-server.
The hostname is taken from /etc/hostname file.
The same hostname should be listed in the /etc/hosts file as well. But in my case (and I guess in your case as well) this hostname was missing from the /etc/hosts file as you can see in the output below:
Since it is missing from here, the system is not able to figure out the hostname and thus it throws the error ‘sudo: unable to resolve host’.
To fix this, edit this file and add a new line and set the loopback address with the hostname. You can use Vim to edit files in command line.
So now, my /etc/hosts file looks like this:
Tip: If the old hostname is still present anywhere in your /etc/hosts file, you should replace them with the new hostname.
Immediately after adding the above mentioned line, ‘sudo: unable to resolve host’ error disappeared.
I hope this quick little tip helped you to fix this irritating error. Let me know if it worked for you or not in the comment section.
Источник
Ошибка sudo unable to resolve host
Некоторые пользователи сталкиваются с ошибкой «sudo unable to resolve host». Обычно, эта ошибка появляется после смены имени компьютера. Это простая проблема, которую можно быстро решить.
В этой статье мы рассмотрим, почему возникает эта ошибка, что она означает, а также как её решить на примере Ubuntu.
Что значит sudo unable to resolve host
Сообщение «unable to resolve host имя_хоста» означает, что утилита не может определить IP-адрес хоста «имя_хоста«. Казалось бы, sudo — это локальная команда для повышения привилегий в системе, и ей незачем определять IP хостов. Но это не совсем так: sudo может использоваться и удалёнными пользователями, например, подключёнными по SSH, а в самом конфигурационном файле /etc/sudoers уровни доступа различных пользователей настраиваются такой строчкой:
пользователь хост = ( другой_пользователь : группа ) команды
Подробнее про строку настройки читайте в статье настройка sudo в linux. А сейчас нам интересно, что для каждого запроса утилите нужно определить, какой хост используется на данном компьютере.
Если кратко, то основная идея разработчиков состоит в том, что один универсальный файл /etc/sudoers будет использоваться на множестве компьютеров и на каждом из них нужно определить, какие правила предназначены для него. Таким образом, переменная host в sudoers влияет только на локальные правила.
А теперь вернёмся к нашей ошибке. Как я уже сказал, она означает, что утилита не может определить IP-адрес «имени хоста». Для домена сайта это означало бы, что такой записи нет в DNS. Но поскольку это имя нашего локального компьютера, то вполне естественно, что его нет в глобальной сети.
Как исправить ошибку
1. Решение проблемы в /etc/hosts
Чтобы исправить ошибку, мы можем добавить такую DNS-запись локально в файл /etc/hosts. Поскольку sudo у вас не работает, а этот файл можно редактировать только от суперпользователя, то эта простая задача становится сложнее. Сначала смотрим наше текущее имя хоста:
Дальше, если у вас установлен пароль root, вы можете авторизоваться от его имени с помощью su:
А затем добавить такую строчку в /etc/hosts:
Слова «имя_хоста» надо заменить на то имя хоста, которое вы получили с помощью команды hostname. После этого надо перезапустить компьютер или просто перезапустить сеть:
sudo systemctl restart networking
Ещё желательно убедиться, что в системной службе разрешения доменных имён включено использование файла /hosts. Откройте /etc/nsswitch.conf и найдите в строке hosts слово «files». Оно должно быть на первом месте. Если нет, перенесите его на первое место.
Если же у вас пароль для root не установлен, вам нужно загрузиться с LiveCD, примонтировать корневую файловую систему в /mnt/ и исправлять ошибку уже там.
2. Решение с помощью systemd
Есть ещё один путь. В попытках воспроизвести эту проблему в своей Ubuntu 18.04 я обнаружил, что разрешением доменных имён для локальных приложений занимается служба systemd-resolved. Если она запущена, то даже если в файле /etc/hosts нет имени вашего компьютера, всё будет работать. Поэтому, если вы случайно отключили эту службу, верните её на место и всё заработает:
sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved
Выводы
В этой статье мы разобрали, как справиться с ошибкой «sudo cannot to resolve host». Как видите, всё достаточно логично и просто. Если у вас остались вопросы, спрашивайте в комментариях!
Источник
Исправление ошибки sudo: unable to resolve host
Главное меню » Операционная система Linux » Исправление ошибки sudo: unable to resolve host
Мы забыли дать ему разумное имя, поэтому через несколько дней мне пришлось изменить имя хоста и дать ему лучшее имя. Теперь он называется test-server, потому что для этого он и используется.
Мы создали пользователя sudo, потому что мы не рекомендуем все время быть пользователем root, особенно когда работаете со своей системой.
Когда мы начали использовать команды с sudo, то увидели странную ошибку в выводе команд:
Команда без проблем запускалась с sudo, но это сообщение об ошибке все равно отображалось.
Исправление sudo: unable to resolve host
Основная причина ошибки была связана с изменением имени хоста. Позвольте нам показать вам, как исправить эту проблему, чтобы устранить ошибку имени хоста.
Сначала проверьте имя хоста вашей системы с помощью команды hostname. В нашем случае имя хоста – тест-сервер.
Имя хоста берется из файла /etc/hostname.
То же имя хоста должно быть указано в файле /etc/hosts. Но в нашем случае (и мы думаем, что и в вашем случае) это имя хоста отсутствовало в файле /etc/hosts, как вы можете видеть в выходных данных ниже:
127.0.0.1 localhost
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
ff02::3 ip6-allhosts
Поскольку он здесь отсутствует, система не может определить имя хоста и, таким образом, выдает ошибку ‘sudo: unable to resolve host’.
Чтобы исправить это, отредактируйте этот файл и добавьте новую строку и установите адрес обратной связи с именем хоста. Вы можете использовать редактор Vim для редактирования файлов в командной строке.
Итак, теперь наш файл /etc/hosts выглядит так:
127.0.0.1 localhost
127.0.0.1 test-server
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
ff02::3 ip6-allhosts
Сразу после добавления вышеупомянутой строки ошибка ‘sudo: unable to resolve host’ исчезла.
Мы надеемся, что этот быстрый маленький совет помог вам исправить эту раздражающую ошибку. Дайте нам знать, работает это у вас или нет в разделе комментариев.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Сообщение об ошибке «sudo: невозможно разрешить хост (нет)»
При запуске sudo терминал зависает на несколько секунд, а затем выдает сообщение об ошибке. Мой терминал выглядит так:
Что я могу сделать, чтобы решить это?
Необходимо проверить две вещи (при условии, что ваша машина называется my-machine , вы можете изменить это при необходимости):
Этот /etc/hostname файл содержит только название машины.
Это /etc/hosts имеет запись для localhost . Это должно иметь что-то вроде:
Если какой-либо из этих файлов неправильный (поскольку вы не можете использовать sudo), вам, возможно, придется перезагрузить компьютер в режиме восстановления и внести изменения, а затем перезагрузить компьютер в обычной среде.
Отредактируйте /etc/hosts и добавьте ваше новое имя хоста в строку 127.0.0.1 (или создайте новую строку, если хотите).
Моя выглядит так:
penguin В приведенном выше примере замените его новым именем хоста, как указано в /etc/hostname файле.
Добавьте ваше имя хоста /etc/hosts так:
Обратите внимание, что это ответ на этот вопрос, который был объединен с этим.
Ваше имя хоста ( dave00-G31M-ES2L ) не представлено в /etc/hosts . Добавьте L к этой строке:
Так и становится:
Для этого откройте консоль (нажмите Ctrl + Alt + T ) и введите:
Добавьте письмо, L как указано, сохраните и выйдите.
У меня была эта проблема, когда я использовал Ubuntu на VPS. Я решил это, отредактировав файл / etc / hosts.
запустите эту команду:
и затем добавьте:
Я надеюсь, что это решит вашу проблему 🙂
PS: не забудьте перезагрузить компьютер!
У меня возникла та же проблема, хотя имя хоста в моем файле / etc / hostname и / etc / hosts совпадали.
Мое имя хоста было «staging_1». Оказывается, в имени вашего хоста не может быть подчеркивания, поэтому я и получил эту ошибку. Смена знака подчеркивания на дефис исправила мою проблему.
В AWS перейдите на свой vpc и включите «DNS-имена хостов».
Симптом, приведенный в вопросе, может сильно коррелировать с этой более конкретной проблемой:
Есть разные способы решения этой проблемы, один из которых заключается в добавлении имени вашего хоста в качестве локального хоста /etc/hosts (как показано в нескольких других ответах). В общем, это может быть правильным решением, но это не единственно возможное решение.
«Полное доменное имя» может быть предоставлено внешним DNS-сервером или аналогичным (если таковое имеется в вашей сети). В этом случае sudo не будем жаловаться, несмотря на пропущенную запись в /etc/hosts .
Примечание: sudo попытки разыменовать имя хоста, даже если это не обязательно, из-за дополнительных возможностей в файле sudoers. Смотрите команду sudo, пытающуюся найти имя хоста .
Пока задержка не слишком велика, это сообщение об ошибке, как правило, безвредно.
Я столкнулся с тем же сообщением об ошибке. Я думаю, что эта дискуссионная ветка на форумах разработчиков AWS — лучшее решение:
«Перейдите в консоль управления VPC, выберите VPC, нажмите« Действия », выберите« Изменить имена хостов DNS »и выберите« Да ».»
Некоторые эмуляторы терминала не будут обновлять приглашение с правильным именем хоста, пока вы не закроете и не перезапустите эмулятор (lxterminal, я говорю с вами).
Я потратил 30 минут на борьбу с этой ошибкой после того, как отредактировал свое имя хоста и файлы хостов и работал sudo service hostname restart до тех пор, пока не запустился sudo hostname и не увидел, что имя хоста было новым значением, даже если в приглашении было показано старое значение.
В моем случае это была проблема, я изменил hostname к , man потому что я хотел бы знать , если есть некоторые параметры , которые можно использовать на hostname . Вместо этого он изменил мою hostname To man и я всегда получал такое же сообщение , как вы
после изменения имени хоста обратно на `localhost все снова заработало нормально
Все советуют модифицировать /etc/hosts . Но в некоторых случаях это может быть невозможно (например, внутри контейнера докера). Итак, я должен был найти лучший способ, и я придумал это:
Псевдонимы не работают в скриптах bash, но мы можем использовать переменные: sudo=’sudo -h 127.0.0.1′
Извините, я не могу вам чем-то помочь, но, так как он говорит: «Не удается разрешить хост», попробуйте запустить:
И посмотрите, является ли вывод именем хоста машины. Если нет, то проблема в конфигурации хоста, а не в sudo.
Все было в / etc / hostname. На двух наших больных серверах это выглядело так:
Находясь на сервере без этой проблемы, мы имели:
Убрал linux-web-n порцию, перезагрузил и все было нормально.
Возможно, вы получаете сообщение об ошибке, если ваш хост или файл имени хоста содержат недопустимые символы. Разрешены только эти символы: az, AZ, 0-9
У меня была такая же проблема! Я изменил имя своего VPS через онлайн панель управления администратора, которая не изменила имя машины в файле hosts. Все, что я сделал, было запущено:
Затем я отредактировал это от этого:
и это исправило мою ошибку! Надеюсь, это помогло!
Источник