Este artículo fue publicado originalmente en go2linux.org el 20 de marzo de 2009. El dominio ya no me pertenece, pero soy el autor original. Lo republico aquí en garron.me con correcciones y mejoras.
Introducción
El hostname es el nombre que identifica tu máquina en una red. En sistemas Linux modernos (Ubuntu 16.04+, Debian 8+, Fedora, CentOS 7+), la herramienta correcta para cambiarlo es hostnamectl, parte de systemd.
La forma moderna: hostnamectl
Ver el hostname actual:
hostnamectl
Salida:
Static hostname: nombreantiguo
Icon name: computer-server
Chassis: server
Machine ID: ...
Boot ID: ...
Operating System: Ubuntu 24.04 LTS
Kernel: Linux 6.8.0
Architecture: x86-64
Establecer un nuevo hostname estático:
sudo hostnamectl set-hostname nuevonombre
El cambio tiene efecto inmediatamente — no hace falta reiniciar.
Tipos de hostname
hostnamectl gestiona tres tipos:
| Tipo | Descripción | Comando |
|---|---|---|
| static | Guardado en /etc/hostname, persiste tras reinicios | hostnamectl set-hostname nombre |
| transient | Temporal, asignado por DHCP o mDNS, se pierde al reiniciar | hostnamectl set-hostname nombre --transient |
| pretty | Legible por humanos, puede incluir espacios y caracteres especiales | hostnamectl set-hostname "Mi Servidor" --pretty |
Para la mayoría de los casos solo necesitas cambiar el hostname estático.
Actualizar /etc/hosts
Tras cambiar el hostname, actualiza /etc/hosts para que el sistema pueda resolver su propio nombre:
sudo nano /etc/hosts
Busca la línea con el hostname antiguo y reemplázala:
127.0.1.1 nuevonombre
Sin este paso, algunas aplicaciones (como sudo) pueden mostrar un aviso indicando que no puede resolver el hostname.
Verificar el cambio
hostname
hostnamectl status
El método tradicional (sistemas sin systemd)
En sistemas más antiguos sin systemd, el hostname se configura en dos sitios:
1. Editar /etc/hostname:
sudo nano /etc/hostname
Reemplaza el contenido con el nuevo nombre (solo el hostname, sin dominio):
nuevonombre
2. Aplicar sin reiniciar:
sudo hostname nuevonombre
O en sistemas basados en Debian:
sudo /etc/init.d/hostname.sh start
El cambio será permanente tras el siguiente reinicio incluso sin ese último paso, ya que /etc/hostname se lee en el arranque.