Справочник

Как изменить имя сервера (hostname) в Ubuntu

Имя сервера видно в строке приглашения терминала, в журналах и в письмах, которые сервер отправляет. Провайдер может поставить имя из случайных букв и цифр. Ниже — как сменить его на понятное, чтобы не путать серверы.

Обновлено 11.10.2026≈ 4 мин чтения
Содержание 8

Что сделать прямо сейчас

  1. Подключитесь к серверу — инструкция.
  2. Посмотрите текущее имя: hostname.
  3. Поставьте новое имя: sudo hostnamectl hostname myserver. Вместо myserver — ваше имя латиницей.
  4. Откройте /etc/hosts: sudo nano /etc/hosts. В строке, которая начинается с 127.0.1.1, замените старое имя на новое. Если такой строки нет, добавьте её: 127.0.1.1 myserver. Сохраните — Ctrl+O и Enter, выйдите — Ctrl+X.
  5. Проверьте: hostname выведет новое имя.
  6. Отключитесь и подключитесь заново: приглашение станет ivan@myserver:~$.

Перезагружать сервер не нужно: hostnamectl меняет имя сразу и записывает его в /etc/hostname, оттуда система возьмёт его при следующей загрузке. Старое имя в приглашении остаётся до переподключения: терминал запоминает имя при запуске.

Какое имя выбрать

МожноНельзя
латинские буквы и цифры: web1, myserverрусские буквы
дефис внутри имени: shop-dbпробел, подчёркивание и другие знаки
до 64 символовдефис в начале или в конце

Лучше короткое слово без точек: web1, shop-db, backup. Если ввести имя с пробелом или подчёркиванием, hostnamectl уберёт эти знаки сам: из my_server получится myserver. Русские буквы он тоже удалит, поэтому имя из одних русских букв не получится.

Три имени в hostnamectl

Команда hostnamectl без слов после неё покажет имена и сведения о системе:

СтрокаЧто значит
Static hostnameимя из /etc/hostname — его вы и меняете
Transient hostnameвременное имя от сети; показывается, если отличается от static
Pretty hostnameимя для людей с любыми знаками; показывается, если задано и отличается от static

sudo hostnamectl hostname меняет все три сразу, поэтому другие ключи не нужны. Старая запись sudo hostnamectl set-hostname myserver тоже работает.

Зачем править /etc/hosts

Программы, которым нужен адрес своего сервера, ищут его имя в /etc/hosts. Если имени там нет, sudo после каждой команды пишет предупреждение unable to resolve host. Строка 127.0.1.1 myserver связывает имя с адресом самого сервера. Подробный разбор — в статье sudo: unable to resolve host.

Проверить, что имя находится: getent hosts myserver. Ответ со строкой 127.0.1.1 значит, что всё в порядке.

Если имя вернулось после перезагрузки

На серверах провайдеров первую настройку делает cloud-init. Он может ставить имя из настроек провайдера при каждой загрузке. По документации cloud-init, имя, изменённое вручную, он не трогает. Если старое имя всё же вернулось, запретите ему менять имя:

echo 'preserve_hostname: true' | sudo tee /etc/cloud/cloud.cfg.d/99-hostname.cfg

Затем снова sudo hostnamectl hostname myserver и проверка после перезагрузки. Если после перезагрузки пропала строка в /etc/hosts — что делать, написано в статье unable to resolve host.

Папки /etc/cloud нет — значит, cloud-init на сервере не установлен, этот шаг пропустите.

Ошибки и как их исправить

ОтветЧто значитЧто сделать
sudo: unable to resolve host myserverнового имени нет в /etc/hostsдобавьте строку 127.0.1.1 myserver — разбор
без sudo — запрос пароля или Could not set … hostnameсмена имени меняет системузапустите с sudo
hostname выводит не то имя, что вы ввелиhostnamectl убрал недопустимые знакивыберите имя из латиницы, цифр и дефиса
в приглашении старое имятерминал запомнил его при входепереподключитесь к серверу

Источники

Сверено 11 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 11.10.2026