Comment changer rapidement le nom d’hôte (hostname) sous Ubuntu ou Debian, sans casse ni redémarrage inutile ? Ce guide vous montrera la méthode recommandée avec hostnamectl, les alternatives sans systemd, ainsi que les bonnes pratiques (mise à jour de /etc/hosts, FQDN, services).
Note : Ce guide a été testé sur Ubuntu 24.04 LTS et reste valable pour la plupart des versions récentes d’Ubuntu/Debian.
1) Vérifier le hostname actuel
hostnamectl status
Sortie typique (extrait) :
Static hostname: web01
Transient hostname: web01
Icon name: computer-vm
Chassis: vm
Machine ID: ...
Boot ID: ...
Operating System: Ubuntu 24.04.3 LTS
Kernel: Linux 6.8.0-...
Architecture: x86-64
Commandes alternatives :
hostname # affiche le nom d’hôte actuel
uname -n # affiche le nodename du noyau
cat /etc/hostname
Note :
hostnamectl
est fourni par systemd. Il est disponible sur Ubuntu/Debian modernes. Si vous n’avez pashostnamectl
, voir la section “Sans systemd” plus bas.
2) Changer le hostname avec hostnamectl (méthode recommandée)
Pour définir un nom d’hôte persistant (“static hostname”) :
sudo hostnamectl set-hostname mon-serveur
Vérifiez :
hostnamectl status
hostname
Note : Le changement est immédiat pour les nouveaux shells. Un shell déjà ouvert peut garder l’ancien prompt jusqu’à l’ouverture d’une nouvelle session (ou rechargement de l’invite).
2.1) Définir un “pretty hostname”
Le pretty hostname permet un nom d’affichage avec espaces/majuscule :
sudo hostnamectl set-hostname "Mon Serveur de Paris" --pretty
Note : Le “pretty” n’est pas utilisé par la résolution DNS. Pour les usages réseau/scripts, utilisez le hostname statique sans espaces.
2.2) Définir un transient hostname
Le transient hostname est fourni par DHCP/NM et n’est pas persistant. Pour le définir manuellement (rarement nécessaire) :
sudo hostnamectl set-hostname mon-serveur-temp --transient
Note : Le transient est réinitialisé au redémarrage ou par le client réseau. Préférez le “static” pour un nom stable.
3) Mettre à jour /etc/hosts (recommandé)
Il est souvent utile d’ajouter une entrée pour que le hostname se résolve en local, notamment pour certains services qui s’y attendent.
Éditez /etc/hosts
:
sudo nano /etc/hosts
Assurez-vous d’avoir une ligne ressemblant à :
127.0.1.1 mon-serveur
Sur certaines distributions, on préfère mettre le FQDN puis l’alias court :
127.0.1.1 mon-serveur.exemple.local mon-serveur
Note : Ne remplacez pas la ligne
127.0.0.1 localhost
. Ajoutez une entrée séparée pour votre hostname (souvent127.0.1.1
sur Debian/Ubuntu).
4) Méthode classique (sans hostnamectl)
Si vous n’avez pas systemd ou préférez la méthode “fichiers” :
1) Écrire le nouveau nom dans /etc/hostname
:
echo "mon-serveur" | sudo tee /etc/hostname
2) Mettre à jour /etc/hosts
comme vu plus haut.
3) Appliquer le changement immédiatement (sans reboot) :
sudo hostname mon-serveur
Note : La commande
hostname
modifie le nom courant jusqu’au prochain reboot. Le fichier/etc/hostname
garantit la persistance au redémarrage.
5) FQDN ou short name ?
- Short name :
mon-serveur
(simple, recommandé en local). - FQDN :
mon-serveur.exemple.local
(utile si vous avez un DNS interne, Kerberos, certificats, etc.).
Avec hostnamectl
, on peut définir un FQDN directement en static hostname :
sudo hostnamectl set-hostname mon-serveur.exemple.local
6) Faut-il redémarrer ?
La plupart du temps, non. hostnamectl
applique immédiatement le nouveau nom. Certains services lisent le hostname au démarrage ; au besoin, redémarrez le service concerné ou le bus hostnamed :
sudo systemctl restart systemd-hostnamed
Note : Des sessions SSH en cours peuvent continuer d’afficher l’ancien hostname dans le prompt. Ouvrez une nouvelle session pour voir le changement.
7) Points d’attention
- Cloud-init (VM/cloud) : certains environnements réécrivent le hostname au boot.
- Désactiver la gestion du hostname par cloud-init si vous voulez le contrôler :
sudo sed -i 's/^preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg
- Désactiver la gestion du hostname par cloud-init si vous voulez le contrôler :
- NetworkManager/DHCP : un serveur DHCP peut imposer un transient hostname.
- Conteneurs (Docker/LXC) : le hostname vient souvent du runtime. Dans un conteneur Docker, utilisez
--hostname
audocker run
. - SSH known_hosts : si vous changez le hostname d’un serveur SSH que vous contactez par nom (et/ou son IP), vous pourriez avoir un avertissement
REMOTE HOST IDENTIFICATION HAS CHANGED!
. Mettez à jour~/.ssh/known_hosts
. - Droits sudo : la plupart des commandes nécessitent
sudo
.
Récapitulatif
- Méthode recommandée :
sudo hostnamectl set-hostname <nouveau_nom>
puis modifier/etc/hosts
. - Vérifier :
hostnamectl status
,hostname
. - Pas de reboot nécessaire, sauf cas particuliers.
- Attention à cloud-init, DHCP, conteneurs et FQDN.