Как исправить ошибку "unable to resolve host" после смены hostname в Linux

Что такое hostname и зачем его менять
Hostname — это текстовая метка, которую система использует, чтобы идентифицировать машину в локальной сети и в интерфейсах командной строки. Простая трактовка: hostname — это читаемое имя компьютера. Оно полезно при администрировании нескольких серверов, чтобы сразу понять, с каким устройством вы работаете.
На Ubuntu и других Debian-подобных дистрибутивах изменить hostname можно через hostnamectl.
Откройте терминал (Ctrl + Alt + T) и выполните:
sudo hostnamectl set-hostname your-new-hostnameЗатем выйдите из сессии и зайдите снова — имя в приглашении оболочки обновится.
Почему появляется ошибка “unable to resolve host: Name or service not known”
Когда вы меняете имя хоста, оно обновляется в /etc/hostname, но не всегда автоматически добавляется в /etc/hosts. Многие системные утилиты (включая sudo) пытаются разрешить локальное имя через /etc/hosts. Если соответствующей записи нет, при вызове sudo вы можете увидеть сообщение:
unable to resolve host MUOVPS: Name or service not knownОшибка не критична и обычно не мешает выполнять команды, но она указывает на неполную конфигурацию системы и может приводить к лишнему шуму в логах.
Быстрое исправление шаг за шагом
- Проверьте текущее имя хоста:
cat /etc/hostname- Просмотрите файл /etc/hosts, чтобы убедиться, что там нет новой записи:
cat /etc/hosts- Отредактируйте /etc/hosts с правами root (здесь показан nano, можно использовать vim или другую утилиту):
sudo nano /etc/hosts- Добавьте на новой строке ваш hostname рядом с локальным адресом. Пример минимальной строки:
127.0.0.1 localhost
127.0.1.1 MUOVPSили, если хотите явно назначить на конкретный IP:
192.168.1.10 MUOVPS.example.local MUOVPSСохраните (Ctrl + O) и выйдите (Ctrl + X).
- Проверьте, что сообщение об ошибке исчезло, запустив sudo любую команду, например:
sudo whoamiЕсли всё настроено верно, предупреждение больше не должно появляться.

Важно: файл /etc/hosts — критический для системы. Ошибка в синтаксисе или дублирование записей может нарушить разрешение имён. Делайте резервную копию перед правками:
sudo cp /etc/hosts /etc/hosts.bakАльтернативные подходы
- Вернуть прежний hostname: если вы помните старое имя, поместите его обратно в /etc/hostname и перезайдите в сессию.
- Использовать systemd-hostnamed API: некоторые инструменты управления конфигурацией (Ansible, cloud-init) умеют синхронизировать /etc/hostname и /etc/hosts автоматически.
- Для контейнеров: часто имя хоста управляется оркестратором (Docker, Kubernetes), и правку локального /etc/hosts нужно делать через настройки контейнера/пода.
Когда эта правка не поможет (контрпримеры)
- Если проблема в DNS: ошибка похожа, но связана с удалёнными именами и системными резолверами (например, /etc/resolv.conf или сетевой DNS). В таком случае правка /etc/hosts не решит проблему.
- Если sudo выдаёт ошибку из‑за повреждённой установки sudo или проблем с NSS (Name Service Switch), потребуется диагностика PAM/NSS.
Мини‑методика диагностики (быстро)
- cat /etc/hostname — проверить текущее имя. 2. cat /etc/hosts — проверить наличие записи. 3. ping -c1
— проверить локальное разрешение. 4. tail -n 50 /var/log/auth.log — посмотреть предупреждения sudo. 5. восстановить /etc/hosts из бэкапа при проблемах.
Чеклист для ролей
Администратор:
- Убедиться, что /etc/hostname и /etc/hosts синхронизированы.
- Сделать резервную копию /etc/hosts.
- Проверить логи sudo и системные логи после правки.
Пользователь:
- Сообщить администратору точное сообщение об ошибке и текущее содержимое /etc/hostname.
- Приложить вывод команд cat /etc/hosts и uname -n, если это разрешено.
Критерии приёмки
- При выполнении sudo предупреждение “unable to resolve host” больше не появляется.
- В /etc/hosts есть запись с новым hostname, соответствующая локальному IP (127.0.1.1 или конкретному адресу).
- Система корректно отображает новый hostname в приглашении и логах.
Однострочный глоссарий
hostname — читаемое имя компьютера; /etc/hostname — файл с именем хоста; /etc/hosts — локальный маппинг имён в IP.
Частые ошибки и их минимальные mitigations
- Забыл сделать бэкап /etc/hosts: восстановите из /etc/hosts.bak или перенесите корректную запись с другого идентичного сервера.
- Неправильный формат строки: используйте табуляцию или пробелы, не добавляйте комментарии в середине строки.
Короткое резюме
Добавление нового hostname в /etc/hosts — простая и безопасная операция, решающая распространённую нефатальную проблему после смены имени хоста. Если ошибка сохраняется, проверьте DNS, PAM/NSS и логи системы.
Часто задаваемые вопросы
Почему изменение в /etc/hostname не достаточное?
Некоторые службы (включая sudo) обращаются к локальному файлу /etc/hosts для быстрого разрешения имени; /etc/hostname только хранит имя, но не создаёт сопоставление с IP.
Можно ли безопасно удалить старые записи из /etc/hosts?
Да, если вы уверены, что больше не используете старые имена; предпочтительно сначала отключить старые записи и проверить систему, затем удалить.
Похожие материалы
Восстановление аккаунта Snapchat при забытом пароле
Восстановление и резервное копирование миров Minecraft
Значок #OpenToWork в LinkedIn — включение и отключение
Как выбирать NPU для ноутбука и смартфона
Отключение видео участников в Google Meet