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.