Как изменить имя сервера (Hostname) в Ubuntu Linux без перезагрузки
Зачем менять Hostname сервера?
По умолчанию многие облачные провайдеры создают серверы со стандартными именами вроде ubuntu-2gb-nbg1-1 или localhost. Когда у вас в работе находится несколько серверов, в них легко запутаться и случайно выполнить команду не на тестовом, а на боевом сервере. Красивое понятное имя (например, web-prod-01 или db-master) сразу видно в приглашении командной строки.
Смена имени хоста за 3 шага
- Посмотрите текущее имя сервера:
hostnamectl - Установите новое имя с помощью hostnamectl:
sudo hostnamectl set-hostname web-prod-01 - Отредактируйте файл соответствия /etc/hosts:
sudo nano /etc/hostsНайдите строку с адресом
127.0.0.1 localhostи добавьте ваше новое имя рядом:127.0.0.1 localhost web-prod-01 127.0.1.1 web-prod-01Сохраните файл (Ctrl + O, Enter, Ctrl + X).
- Примените отображение в текущем терминале:
exec bashПриглашение командной строки мгновенно изменится на
user@web-prod-01:~$без необходимости перезагружать сервер!
Правила именования: В Hostname разрешено использовать только строчные латинские буквы (a-z), цифры (0-9) и знак дефиса. Использование пробелов и подчеркиваний запрещено сетевыми стандартами RFC.
Частые вопросы (FAQ)
Почему после перезагрузки на облачном VPS имя хоста сбрасывается?
В облачных образах с пакетом Cloud-Init нужно отключить перезапись хостнейма: откройте `sudo nano /etc/cloud/cloud.cfg` и установите параметр `preserve_hostname: true`.
Зачем обязательно прописывать новое имя в /etc/hosts?
Если не добавить имя в `/etc/hosts`, утилиты вроде `sudo` будут при каждом вызове долго подвисать на 5–10 секунд с предупреждением `sudo: unable to resolve host`.
В чем разница между Static, Transient и Pretty hostname?
`Static` — стандартное постоянное имя в `/etc/hostname`. `Transient` — временное имя, полученное от сетевого DHCP. `Pretty` — произвольное описание сервера на русском/юникоде для графических интерфейсов.
Как быстро узнать только имя хоста одной командой?
Выполните короткую команду: `hostname`.