Renomear um servidor Linux não se resume apenas a alterar o texto exibido no prompt SSH. O nome também pode ser usado em /etc/hostsDNS, certificados, monitoramento, backups ou inventário de frota.
hostnamectl Isso altera o nome do sistema, mas não modifica sua zona DNS nem as ferramentas que ainda identificam a máquina com o nome antigo. Portanto, recomendo que você anote essas dependências antes da alteração e, em seguida, verifique-as uma a uma.

Anote o nome e o endereço atuais do servidor.
Comece mantendo uma sessão SSH aberta. Se o servidor for remoto, certifique-se também de ter um console de backup no seu provedor de hospedagem. Alterar o nome do host normalmente não encerra o SSH, mas um erro em /etc/hostsO DNS ou a automação podem complicar a reconexão.
status do hostnamectl
nome do host
nome do host -f
cat /etc/hostname
getent hosts "$(hostname)"
endereço ip -br
nome do host Exibe o nome usado pelo kernel. O arquivo /etc/hostname Contém o nome estático carregado na inicialização de um sistema gerenciado pelo systemd. O comando nome do host -f Tentativas de recuperar o nome totalmente qualificado por meio de resolução local. Se falhar ou retornar um resultado inesperado, não force a alteração imediatamente: verifique primeiro. /etc/hosts e DNS.
Observe também o endereço real usado pelo servidor. O guia sobre Endereço IP no Linux ajudará você a distinguir o endereço da interface, a rota utilizada e qualquer endereço IP público fornecido por um NAT.
Antes de escrever, salve os dois arquivos que podem precisar de correção:
sudo cp -a /etc/hostname "/etc/hostname.bak-$(date +%F-%H%M)"
sudo cp -a /etc/hosts "/etc/hosts.bak-$(date +%F-%H%M)"
Alterar o nome do host usando o hostnamectl
Escolha um nome curto, estável e compatível com DNS, por exemplo srv-app-02Evite espaços, acentos, sublinhados e nomes que descrevam um endereço IP que provavelmente mudará. Um nome de host estático tem precedência sobre um nome temporário recebido via DHCP.
sudo hostnamectl set-hostname srv-app-02
status do hostnamectl
nome do host
cat /etc/hostname
Sem opções de segmentação, hostnamectl definir-nome-do-host Atualiza os nomes amigáveis, estáticos e transitórios. Para um servidor, um nome curto como srv-app-02 evita misturar o nome do host do sistema com seu FQDN (Nome de Domínio Totalmente Qualificado). srv-app-02.example.netA página de manual para hostnamectl detalha esses três níveis.
O comando deve entrar em vigor imediatamente. No entanto, o prompt da sua sessão SSH pode manter o nome antigo até que um novo shell seja aberto. Não reinicie o servidor apenas para atualizar o prompt. Em vez disso, abra uma segunda sessão e compare a saída de nome do host.
Corrigindo o arquivo /etc/hosts sem quebrar a resolução local.
hostnamectl não reescreva /etc/hostsProcure o nome antigo antes de modificar o arquivo:
[:space:]grep -nE '(^|[])srv-app-01([]|$)' /etc/hosts[:space:]
sudoedit /etc/hosts
No Debian e no Ubuntu, uma linha em 127.0.1.1 É frequentemente usado para associar localmente o FQDN e o nome abreviado:
127.0.0.1 localhost
127.0.1.1 srv-app-02.example.net srv-app-02
Em um servidor com um endereço privado estável, você pode encontrar uma associação direta com esse endereço, por exemplo. 192.0.2.25 srv-app-02.example.net srv-app-02Não copie um modelo aleatoriamente. Corrija apenas a linha que já designa a máquina e mantenha as entradas. host local IPv4 e IPv6.
getent hosts srv-app-02
getent hosts srv-app-02.example.net
nome do host -f
getent consulta a resolução configurada por /etc/nsswitch.confPortanto, leva em consideração /etc/hostsDNS e, dependendo do seu ambiente, fontes como LDAP. Isso é mais representativo do que simplesmente ler o arquivo.
Atualize o DNS direto e reverso separadamente.
O novo nome local não cria nenhum registro DNS. Na zona afetada, adicione ou modifique o registro A, o registro AAAA (se aplicável) e, se você o gerencia, o registro PTR para o endereço. Mantenha o registro antigo durante a transição, caso algum aplicativo ainda o esteja utilizando, e remova-o após a verificação.
dig +short A srv-app-02.example.net
cavar +curto AAAA srv-app-02.example.net
dig +short -x 192.0.2.25
Realize esses testes a partir de outra máquina e, se necessário, com vários resolvedores. O artigo sobre cavar no Linux Mostra como comparar o DNS local, um servidor público e o servidor autoritativo sem limpar os caches aleatoriamente.
Um DNS correto não garante que tudo esteja pronto. Verifique os certificados TLS, os arquivos de configuração que contêm o FQDN antigo e as regras de firewall baseadas em nomes. Para SSH, uma conexão com o novo nome ainda usa a chave do host do servidor, mas cria uma nova entrada lógica em hosts_conhecidosCompare a impressão digital antes de aceitá-la.
Controle SSH, logs e monitoramento após a renomeação.
Abra uma segunda conexão SSH com o novo FQDN sem fechar a primeira. Em seguida, verifique se há serviços com falha e mensagens relacionadas à alteração:
status do hostnamectl
systemctl --falhou
journalctl -u systemd-hostnamed --since "-15 minutos" --no-pager
journalctl --since "-15 minutos" --no-pager | grep -iE 'hostname|srv-app-01|srv-app-02'
A presença do nome antigo nas linhas escritas antes da alteração é normal. O que importa é o nome usado nos novos eventos. Não reinicie todos os serviços automaticamente. Primeiro, verifique aqueles que declaram explicitamente o nome do host na inicialização, como alguns agentes de registro, backup ou monitoramento.
Na sua ferramenta de monitoramento, verifique se a máquina não aparece como um novo host vazio enquanto o antigo fica offline. Realize a mesma verificação para inventário, backups e alertas. Caso contrário, uma renomeação bem-sucedida no lado Linux pode criar dois objetos separados nessas plataformas.
Se o nome de host antigo retornar após a reinicialização
Quando o nome voltar ao seu valor anterior, verifique se há uma camada de provisionamento antes de reiniciar. hostnamectlUma imagem de nuvem pode aplicar o nome do host na inicialização usando o 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
status do hostnamectl
Verifique também o painel de controle da hospedagem, o Terraform, o Ansible ou o script de inicialização que gerencia a máquina virtual. Corrija a origem do problema em vez de tentar corrigi-lo a cada inicialização. Depois que o nome estiver estável, repita as verificações. getent, escavaçãoSSH, logs e monitoramento. Assim, você saberá que o servidor foi renomeado em todos os lugares onde essa alteração é realmente importante.