Ubuntu

Cómo cambiar el hostname en Ubuntu 24.04 correctamente

Paso a paso para cambiar el hostname en Ubuntu 24.04: usar hostnamectl, actualizar /etc/hosts, tratar cloud-init en imágenes cloud/VM y verificar el resultado sin errores de sudo.

6 min aprox.
TecnoSender Guía técnica
6 min aprox. Lectura

Qué es y qué obtendrás: El hostname es el nombre del equipo que usan el kernel y servicios para identificarse en la red y en mensajes locales. En esta guía práctica aprenderás a cambiar hostname en Ubuntu 24.04 de forma correcta y persistente, actualizar /etc/hosts para evitar errores, y cómo impedir que cloud-init o el proveedor lo vuelvan a sobrescribir en reinicios o clonaciones.

Comprobaciones iniciales (qué ver antes de tocar nada)

  • Hostname actual: hostname
  • FQDN (si existe): hostname -f
  • Estado systemd: hostnamectl status (muestra static, transient y pretty).
  • Ficheros: cat /etc/hostname y head -n 5 /etc/hosts para ver entradas locales.
  • Si la máquina es cloud/VPS, comprueba si existe /etc/cloud/cloud.cfg y si cloud-init está instalado (puede gestionar hostname/hosts).

Requisitos previos

Acceso con sudo o root. En máquinas de producción o plantillas, haz snapshot o copia antes de cambios masivos. Evita editar /etc/hosts de forma automática en entornos gestionados sin probarlo primero.

Metodo recomendado (CLI): usar hostnamectl

Systemd expone hostnamectl, la forma moderna y segura para cambiar el nombre. Por defecto, sudo hostnamectl set-hostname nuevo-nombre aplicará los tres tipos (static, transient y pretty) si el formato lo permite. Recomendado para establecer un nombre persistente es cambiar el static:

sudo hostnamectl set-hostname --static mi-host

Si quieres un nombre legible para humanos (con espacios y mayúsculas) usa --pretty además:

sudo hostnamectl set-hostname --static --pretty "Mi Servidor 01" mi-host

Explicación breve de los tipos:

  • static: guardado en /etc/hostname; prioridad alta, persistente tras reinicios.
  • transient: nombre temporal en el kernel; puede venir de DHCP o cloud-init.
  • pretty: etiqueta para mostrar a humanos; no usada para resolución DNS.

Actualizar /etc/hosts para evitar errores de resolución

Tras cambiar el hostname actualiza /etc/hosts para que el nuevo nombre tenga una entrada local y evitar errores como sudo: unable to resolve host …. Un ejemplo común:

127.0.0.1   localhost
127.0.1.1   mi-host.mi-dominio mi-host

Edita con tu editor favorito o con comandos seguros:

sudo cp /etc/hosts /etc/hosts.bak
sudo sed -i "/127.0.1.1/d" /etc/hosts
printf "127.0.1.1\tmi-host.mi-dominio mi-host\n" | sudo tee -a /etc/hosts

Asegúrate de reemplazar mi-host y mi-dominio por tus valores reales. No elimines la entrada de 127.0.0.1 localhost.

Casos especiales: imágenes cloud, VPS y plantillas

En imágenes cloud (Azure/GCP/OpenStack/OVH, etc.) cloud-init normalmente puede gestionar el hostname al arranque. En algunas imágenes, si no existe /etc/hostname, cloud-init recreará o impondrá el nombre del proveedor en cada reinicio.

Si trabajas con plantillas o clones, lo adecuado es que el primer arranque reciba un hostname único vía cloud-init (user-data) o que tus scripts de provisioning lo establezcan y creen /etc/hostname para evitar que vuelva a la plantilla.

Cómo evitar que cloud-init o el proveedor reemplacen el nombre

La forma más robusta es crear un fichero de override en /etc/cloud/cloud.cfg.d/ que indique a cloud-init que preserve el hostname y/o deje de gestionar /etc/hosts. Ejemplo seguro:

# /etc/cloud/cloud.cfg.d/99-preserve-hostname.cfg
preserve_hostname: true
manage_etc_hosts: false

Con esto cloud-init no sobrescribirá /etc/hostname y no tocará /etc/hosts en futuros arranques. Alternativamente, asegúrate de que /etc/hostname existe con el nombre deseado; en sistemas systemd, crear ese fichero suele hacer que cloud-init no gestione el nombre de forma persistente.

Cambiar hostname en escritorios (GNOME) y con NetworkManager

En escritorios GNOME puedes cambiarlo desde Ajustes → Información; sin embargo, el CLI (hostnamectl) sigue siendo válido y recomendable para coherencia. NetworkManager o DHCP pueden modificar el transient hostname si no existe un static válido; por eso siempre establece el static si quieres persistencia.

Verificación y pruebas

  1. Comprobar estado systemd: hostnamectl status.
  2. Short name: hostname.
  3. FQDN: hostname -f (depende de /etc/hosts o DNS).
  4. Contenido persistente: cat /etc/hostname.
  5. Comprobar /etc/hosts: grep mi-host /etc/hosts.
  6. Logs: journalctl -u systemd-hostnamed --since "5 minutes ago" para ver cambios y errores.

Buenas prácticas de nombres (RFC/RFC1123)

  • Usa minúsculas, letras, números y guiones (-). Evita guiones iniciales/finales y guiones bajos.
  • Etiqueta (cada parte entre puntos) máximo 63 caracteres; FQDN total máximo 255.
  • No uses espacios ni caracteres especiales; evita mayúsculas si quieres portabilidad.

Solución de problemas comunes

  • sudo: unable to resolve host — falta la entrada en /etc/hosts. Solución: añadir 127.0.1.1 con el nuevo nombre.
  • Nombre revertido tras reiniciar — cloud-init o proveedor reescriben. Solución: crear override en /etc/cloud/cloud.cfg.d/ con preserve_hostname: true o inyectar hostname vía cloud-init user-data.
  • Clonación de VMs — si multiple equipos comparten hostname, actualízalo en el primer arranque y elimina snapshots/plantillas con nombres duplicados; usa cloud-init para personalizar cada clon.

Ejemplo práctico: pasos seguros copy-paste

  1. Comprobar estado inicial:
    hostnamectl status
    hostname
    hostname -f
    cat /etc/hostname || true
    head -n 5 /etc/hosts
  2. Establecer static hostname:
    sudo hostnamectl set-hostname --static mi-host
  3. Crear /etc/hosts entry segura:
    sudo cp /etc/hosts /etc/hosts.bak
    sudo sed -i "/127.0.1.1/d" /etc/hosts
    printf "127.0.1.1\tmi-host.mi-dominio mi-host\n" | sudo tee -a /etc/hosts
  4. Si es cloud/VPS, evitar sobrescrituras:
    sudo tee /etc/cloud/cloud.cfg.d/99-preserve-hostname.cfg <<'EOF'
    preserve_hostname: true
    manage_etc_hosts: false
    EOF
  5. Verificar:
    hostnamectl status
    hostname
    hostname -f
    cat /etc/hostname
    grep mi-host /etc/hosts

Si prefieres una guía sobre actualizaciones y snapshots previas a cambios en servidores o plantillas, consulta el artículo sobre cómo actualizar Ubuntu 24.04 desde terminal. Para entornos de virtualización local y clonación, puede ser útil leer la guía sobre clonar una máquina virtual en VirtualBox y cambiar su UUID.

Resumen y checklist final

  • Usa hostnamectl para cambiar el nombre; prefiere --static para persistencia.
  • Actualiza /etc/hosts para evitar errores de resolución local.
  • En imágenes cloud, evita sobrescrituras con preserve_hostname: true o asegurando /etc/hostname existe.
  • Comprueba con hostnamectl status, hostname y hostname -f.
  • Respaldos: copia /etc/hosts antes de modificarlo y prueba en entornos no críticos antes de aplicar en producción.

Preguntas frecuentes

  • ¿Puedo usar guiones bajos en el hostname? No se recomienda; RFC1123 no los admite en nombres DNS normales y pueden generar problemas.
  • ¿Es suficiente crear /etc/hostname manualmente? Sí, en sistemas systemd tener /etc/hostname con el nombre deseado suele hacer el cambio persistente, pero en entornos cloud cloud-init puede reescribirlo salvo que configures preserve_hostname.
  • ¿Y si quiero cambiar muchos hostnames automáticamente? Usa cloud-init user-data al desplegar instancias o herramientas de configuración (Ansible, cloud-init templates) para gestionar hostname y /etc/hosts de forma reproducible.

Si necesitas que te adapte los comandos a un ejemplo concreto (nombre, dominio o proveedor cloud), dime el caso y te doy los pasos listos para copiar y pegar.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

×