Cambiar el nombre de un servidor Linux no se trata solo de cambiar el texto que se muestra en el indicador SSH. El nombre también se puede usar en /etc/hostsDNS, certificados, monitorización, copias de seguridad o inventario de flota.
nombre de hostectl Cambia el nombre del sistema, pero no modifica la zona DNS ni las herramientas que aún identifican la máquina con el nombre anterior. Por lo tanto, le recomiendo que tenga en cuenta estas dependencias antes del cambio y que las revise una por una.

Anote el nombre y las direcciones actuales del servidor.
Comience por mantener una sesión SSH abierta. Si el servidor es remoto, asegúrese también de tener una consola de respaldo en su proveedor de alojamiento. Cambiar el nombre de host normalmente no cierra SSH, pero un error en /etc/hostsEl DNS o la automatización pueden complicar la reconexión.
hostnamectl status
nombre de host
nombre de host -f
cat /etc/hostname
getent hosts "$(hostname)"
dirección IP-br
nombre de host muestra el nombre utilizado por el kernel. El archivo /etc/hostname Contiene el nombre estático cargado al inicio en un sistema administrado por systemd. El comando nombre de host -f Intenta recuperar el nombre completo mediante resolución local. Si falla o devuelve un resultado inesperado, no fuerce el cambio de inmediato: verifique primero. /etc/hosts y DNS.
Tenga en cuenta también la dirección real utilizada por el servidor. La guía sobre Dirección IP en Linux Esto le ayudará a distinguir la dirección de la interfaz, la ruta utilizada y cualquier dirección IP pública proporcionada por un NAT.
Antes de escribir, guarda los dos archivos que puedan necesitar corrección:
sudo cp -a /etc/hostname "/etc/hostname.bak-$(date +%F-%H%M)"
sudo cp -a /etc/hosts "/etc/hosts.bak-$(date +%F-%H%M)"
Cambie el nombre de host usando hostnamectl.
Elija un nombre corto, estable y compatible con DNS, por ejemplo srv-app-02Evite espacios, acentos, guiones bajos y nombres que describan una dirección IP que probablemente cambie. Un nombre de host estático tiene prioridad sobre un nombre transitorio recibido a través de DHCP.
sudo hostnamectl set-hostname srv-app-02
hostnamectl status
nombre de host
cat /etc/hostname
Sin opciones de segmentación, hostnamectl establecer-hostname Actualiza los nombres bonitos, estáticos y transitorios. Para un servidor, un nombre corto como srv-app-02 evita mezclar el nombre de host del sistema con su FQDN srv-app-02.example.netLa página del manual para nombre de hostectl detalla estos tres niveles.
El comando debería surtir efecto inmediatamente. Sin embargo, el indicador de su sesión SSH puede conservar el nombre anterior hasta que se abra una nueva sesión. No reinicie el servidor solo para actualizar el indicador. En su lugar, abra una segunda sesión y compare la salida de nombre de host.
Reparar /etc/hosts sin romper la resolución local
nombre de hostectl no reescribir /etc/hostsBusque el nombre anterior antes de modificar el archivo:
[:space:]grep -nE '(^|[])srv-app-01([]|$)' /etc/hosts[:space:]
sudoedit /etc/hosts
En Debian y Ubuntu, una línea en 127.0.1.1 Se utiliza a menudo para asociar localmente el FQDN y el nombre corto:
127.0.0.1 localhost
127.0.1.1 srv-app-02.example.net srv-app-02
En un servidor con una dirección privada estable, puede encontrar una asociación directa con esa dirección, por ejemplo 192.0.2.25 srv-app-02.example.net srv-app-02No copie una plantilla al azar. Corrija solo la línea que ya designa la máquina y conserve las entradas. servidor local IPv4 e IPv6.
hosts getent srv-app-02
getent hosts srv-app-02.example.net
nombre de host -f
getent consulta la resolución configurada por /etc/nsswitch.confPor lo tanto, tiene en cuenta /etc/hosts, DNS y, según su entorno, fuentes como LDAP. Esto es más representativo que simplemente leer el archivo.
Actualiza el DNS directo e inverso por separado.
El nuevo nombre local no crea ningún registro DNS. En la zona afectada, agregue o modifique el registro A, el registro AAAA (si corresponde) y, si lo administra, el PTR de la dirección. Conserve el registro anterior durante la transición si alguna aplicación aún lo utiliza y, posteriormente, elimínelo tras la verificación.
dig +short A srv-app-02.example.net
cavar +corto AAAA srv-app-02.example.net
excavar +corto -x 192.0.2.25
Realice estas pruebas desde otra máquina y, si es necesario, con varios resolvedores. El artículo sobre cavar bajo Linux Muestra cómo comparar el DNS local, un servidor público y el servidor autoritativo sin vaciar las cachés aleatoriamente.
Un DNS correcto no garantiza que todo esté listo. Verifique los certificados TLS, los archivos de configuración que contienen el FQDN antiguo y las reglas del firewall basadas en nombres. Para SSH, una conexión al nuevo nombre todavía usa la clave de host del servidor, pero crea una nueva entrada lógica en Compara la huella dactilar antes de aceptarla.
Controlar SSH, registros y monitorización después de renombrar
Abra una segunda conexión SSH con el nuevo FQDN sin cerrar la primera. Luego, compruebe si hay servicios fallidos y mensajes relacionados con el cambio:
hostnamectl status
systemctl --failed
journalctl -u systemd-hostnamed --since "-15 minutes" --no-pager
journalctl --since "-15 minutes" --no-pager | grep -iE 'hostname|srv-app-01|srv-app-02'
Es normal que aparezca el nombre anterior en las líneas escritas antes del cambio. Lo importante es el nombre que se usa en los nuevos eventos. No reinicie automáticamente todos los servicios. Primero, verifique aquellos que declaran explícitamente el nombre de host al iniciarse, como ciertos agentes de registro, copia de seguridad o monitoreo.
En su herramienta de monitorización, verifique que la máquina no aparezca como un host nuevo y vacío mientras el anterior se desconecta. Realice la misma comprobación para el inventario, las copias de seguridad y las alertas. De lo contrario, un cambio de nombre exitoso en Linux puede crear dos objetos separados en esas plataformas.
Si el nombre de host antiguo vuelve después del reinicio
Cuando el nombre vuelva a su valor anterior, compruebe si existe una capa de aprovisionamiento antes de reiniciar. nombre de hostectlUna imagen en la nube puede aplicar el nombre de host al iniciarse mediante cloud-init:
grep -R "preserve_hostname" /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.d 2>/dev/null
journalctl -b -u cloud-init --no-pager
cat /etc/hostname
hostnamectl status
También revisa el panel de control de alojamiento, Terraform, Ansible o el script de inicialización que administra la máquina virtual. Corrige la fuente de información en lugar de intentar solucionarlo cada vez que inicies el sistema. Una vez que el nombre sea estable, repite las comprobaciones. getent, excavarSSH, registros y monitorización. Así sabrás que el servidor ha sido renombrado en todos los lugares donde este cambio sea relevante.