Comment changer le nom d'hôte sans redémarrage?

497

Je souhaite modifier le nom d'hôte du système d'exploitation, mais je ne souhaite pas redémarrer.

J'ai édité /etc/hostnamemais cela nécessite un redémarrage pour être implémenté. Comment éviter cela?

Deepak Rajput
la source
3
Attention: ne fonctionnera pas avec Ubuntu 18+ qui exécute cloud-init par défaut, qui contrôle le nom d'hôte au démarrage.
nslntmnx
@nslntmnx, merci!
MiB

Réponses:

642

C'est facile. Cliquez simplement sur l'icône Gear (située dans le coin supérieur droit de l'écran), ouvrez l'écran "À propos de cet ordinateur" (situé sur l'icône Gear) et modifiez le "Nom du périphérique".

Ou, dans un terminal, utilisez la commande suivante:

sudo hostname your-new-name

Cela définira le nom d’hôte sur votre-nouveau-nom jusqu’à ce que vous redémarriez. Voir man hostnameet Comment changer le nom de l'ordinateur? pour plus d'informations. Ne pas utiliser _en votre nom.

Remarque

Après un redémarrage, vos modifications /etc/hostnameseront utilisées, donc (comme vous l'avez dit dans la question), vous devriez toujours utiliser

sudo -H gedit /etc/hostname

(ou un autre éditeur) pour que ce fichier contienne le nom d'hôte.

Pour vérifier que le fichier est correctement configuré, exécutez:

sudo service hostname start

Vous devriez également éditer /etc/hostset changer la ligne qui se lit comme suit:

127.0.1.1     your-old-hostname

afin qu'il contienne maintenant votre nouveau nom d'hôte. (Ceci est nécessaire sinon de nombreuses commandes cesseront de fonctionner.)

jasperado
la source
4
Je ne veux pas redémarrer
Deepak Rajput
23
Je connais. c'est pourquoi vous devriez utiliser la commande 'hostname'. Je voulais juste préciser que la commande 'hostname' ne change le nom d’hôte que jusqu’à ce que vous redémarriez / crash / etc. Ensuite, il lira à nouveau le nom du fichier.
jasperado
5
Dépend. Si vous avez entré la commande, vous n'avez pas besoin de redémarrer. Le nom d'hôte est déjà changé. Mais seulement jusqu'à votre prochain redémarrage.
jasperado
19
Notez que vous devez également changer le /etc/hosts(voir autres réponses)
JB.
9
En bref, bien hostnameque le nouveau nom prenne effet immédiatement, il n’est pas "permanent" à moins que vous ne changiez également /etc/hostnameet /etc/hosts, puisque ce sont les fichiers qui seront lus après un redémarrage ou un blocage, vous ne pouvez bien sûr pas être connecté. attendre à l'avance.
Tim Parenti
280

Ubuntu à partir de 13.04

La hostnamectlcommande fait partie de l'installation par défaut sur les éditions Desktop et Server.

Il combine la définition du nom d'hôte via la hostnamecommande et l'édition /etc/hostname. En plus de définir le nom d'hôte statique, il peut définir le "joli" nom d'hôte, qui n'est pas utilisé dans Ubuntu. Malheureusement, la modification /etc/hostsdoit encore être effectuée séparément.

hostnamectl set-hostname new-hostname

Cette commande fait partie du systemd-servicespaquetage (qui, à partir d’Ubuntu 14.04, inclut également les commandes timedatectlet localectl). Ubuntu migrant vers systemd, cet outil est l'avenir.

muru
la source
1
Notez que ce n'est pas disponible partout. Je viens de regarder sur mon installation Ubuntu 14.04 LTS ARM-7 et hostnamectlça n'existe pas. Je suppose que certaines versions d’Ubuntu n’utilisent pas encore systemd.
Stéphane
1
@ Stéphane, les commandes font partie de la suite systemd, mais elles sont disponibles indépendamment. Dans ce cas, 13.04-14.10 n'utilisez pas systemd comme init, car la commande est disponible.
Muru
1
@ H2ONaCl la variable shell est définie au démarrage, ouvrez simplement un autre shell et la variable hostname devrait convenir. Pour ce qui est de sudo, l’erreur concernant la résolution du nom d’hôte ne m’a jamais empêchée de faire quoi que ce soit.
muru
1
@ H2ONaCl ah, mais la variable HOSTNAME n'est pas standard - IIRC dash et ksh ne l'ont pas, zsh utilise HOST, aussi loin que les variables de shell disparaissent, c'est le fond du tas.
Muru
3
Fonctionne toujours sous Ubuntu 18.04 LTS.
LucaM
63

Sans redémarrage

Changer le nom d'hôte ou le nom de l'ordinateur dans Ubuntu sans redémarrer

Éditez / etc / hostname et passez à la nouvelle valeur,

nano /etc/hostname 

Modifiez / etc / hosts et remplacez l'ancienne ligne 127.0.1.1 par votre nouveau nom d'hôte.

127.0.0.1   localhost
127.0.1.1   ubuntu.local    ubuntu   # change to your new hostname/fqdn

Remarque : je l'ai lu sur un forum> Modifiez / etc / hosts et changez l'ancienne ligne 127.0.1.1 en votre nouveau nom d'hôte (si vous ne le faites pas, vous ne pourrez plus utiliser sudo. Si vous l'avez déjà fait , appuyez sur la touche Echap du menu de menu, choisissez Récupération et modifiez votre fichier hôte avec les paramètres appropriés.

Maintenant, après un redémarrage, votre nom d'hôte sera le nouveau que vous avez choisi

Sans redémarrage

Pour changer sans redémarrer , vous pouvez simplement utiliser hostname.sh après avoir édité / etc / hostname. Vous devez conserver vos deux noms d'hôte dans / etc / hosts (newhost oldhost 127.0.0.1) jusqu'à l'exécution de la commande ci-dessous:

sudo service hostname start

Remarque : Commande ci-dessus pour rendre la modification active. Le nom d'hôte enregistré dans ce fichier (/ etc / hostname) sera conservé lors du redémarrage du système (et sera défini à l'aide du même service).

Un zéro
la source
Sur Ubuntu 12.10, la dernière partie ne fonctionne pas avec le message d'erreur suivant sudo: unable to resolve host old-hostname. Pour cette partie, la solution @jesperado fonctionne bien.
Frédéric Grosshans
3
Si vous ne mettez pas à jour /etc/hosts, les choses commencent à échouer sur 12.04.2 LTS, y compris la wcommande, Apache, /sbin/rebootet bien plus encore. Assurez-vous de mettre à jour/etc/hosts
Josh
Vous faites référence à la fois 127.0.0.1pour localhostet 127.0.1.1pour un nom d’hôte personnalisé. Droite? Puis, vers la fin de votre réponse, pour une action sans rebot , vous référencez /etc/hostset 127.0.0.1 newhost oldhost. Donc, il n'y a pas besoin d'une 127.0.1.1adresse?
Nikos Alexandris
1
n'a pas fonctionné pour moi. Je devais utiliser sudo nano /etc/hostspour que le changement prenne effet; sans sudo, nano /etc/hosts
ça
2
Quelle est la différence entre redémarrer et redémarrer?
tempête
43

Le nom par défaut a été défini lors de l'installation d'Ubuntu. Vous pouvez facilement le changer en tout ce que vous voulez dans Desktop & Server en modifiant les fichiers hosts et hostname. Voici comment:

  1. Appuyez CtrlAlttsur le clavier pour ouvrir le terminal. Lorsqu'il s'ouvre, exécutez la commande ci-dessous:sudo hostname NEW_NAME_HERE

Cela changera le nom d'hôte jusqu'au prochain redémarrage. La modification ne sera pas visible immédiatement dans votre terminal actuel. Démarrez un nouveau terminal pour voir le nouveau nom d'hôte.

  1. Pour changer le nom de façon permanente, exécutez la commande pour éditer les fichiers de l'hôte:

    sudo -H gedit /etc/hostname et sudo -H gedit /etc/hosts

Pour un serveur Ubuntu sans interface graphique, exécutez sudo vi /etc/hostname-les sudo vi /etc/hostset modifiez-les un à un. Dans les deux fichiers, modifiez le nom de votre choix et enregistrez-le.

Enfin, redémarrez votre ordinateur pour appliquer les modifications.

Mohsen Gh.
la source
16

Voici un script qui modifie le nom d'hôte de la manière prescrite. Cela garantit que non seulement sudoles applications X11 mais également celles-ci continuent de fonctionner sans redémarrage requis.

Usage: sudo ./change_hostname.sh new-hostname

#!/usr/bin/env bash
NEW_HOSTNAME=$1
echo $NEW_HOSTNAME > /proc/sys/kernel/hostname
sed -i 's/127.0.1.1.*/127.0.1.1\t'"$NEW_HOSTNAME"'/g' /etc/hosts
echo $NEW_HOSTNAME > /etc/hostname
service hostname start
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"
Lucas
la source
Que fait la dernière ligne du script su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"? Juste curieux.
Fr0zenFyr
4
@ Fr0zenFyr: il prend un jeton d'authentification X11 valide ( xauth list) et remplace l'ancien nom d'hôte par le nouveau nom d'hôte ( sed). awkMet ensuite des guillemets autour du premier argument xauth addcar xauthles formats d’entrée et de sortie ne sont pas symétriques.
Lucas
Merci pour l'explication. J'ai toujours redémarré pour que les modifications prennent effet. +1
Fr0zenFyr
@trakz: En réalité, 127.abc, quel que soit le nombre, est localhost conformément au RFC de l'IETF. (la plupart des gens ne le savent tout simplement pas, mais comme la plupart ne le savent pas, les modifications sont approuvées)
Fabby
14

Sans redémarrage:

  1. changer le nom d'hôte dans /etc/hostname
  2. mettre à jour en /etc/hostsconséquence
  3. sudo sysctl kernel.hostname=mynew.local.host

Vérifiez votre nom d'hôte actuel avec hostname -f

Tombart
la source
Avec 16,04, sysctl sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system. Peut-être parce que c'est un CT dans Proxmox.
Pablo Un
14

Persistance du nom d'hôte Cloud-init (Ubuntu 18+)

Alors que les approches ci - dessus ( hostnamectl, etc/hostname, etc.) travaillent pour le changement de nom d'hôte immédiat, avec l'avènement du cloud-init - qui peut contrôler réglage du nom d' hôte - amoungst beaucoup d' autres choses. Donc, cela ne collera pas après un redémarrage si cloud-init est installé. Si vous souhaitez que les modifications restent après un redémarrage, vous devez éditer les fichiers de configuration de cloud-init , désactivez le module set / update du nom d' hôte de cloud-init :

sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg

ou désactiver cloud-init entièrement:

sudo touch /etc/cloud/cloud-init.disabled
Pierz
la source
1
S'il vous plaît upvote cette réponse. Cela a bien fonctionné pour moi. D'autres réponses ne fonctionnent pas avec l'adoption de cloud-init.
nslntmnx
@nslntmnx est-il installé par défaut sur le bureau 18.04, uniquement sur le serveur? Bureau n'a pas /etc/cloud/cloud.cfg. Quel est le nom du paquet? Juste cloud-init?
Ciro Santilli a annoncé le
1
En outre, y a-t-il un moyen de changer le nom d'hôte avec cloud-init au lieu de simplement désactiver son remplacement?
Ciro Santilli a annoncé le
1
Oui, vous pouvez modifier de nombreux paramètres à l'aide de cloud-init - voir le lien "docs" dans ma réponse - voici un lien pour définir le nom d'hôte: cloudinit.readthedocs.io/en/latest/topics/…
Pierz
7

Pour obtenir votre nom d'hôte actuel:

cat /etc/hostname

Cela peut être changé dans n’importe quel éditeur de texte. Vous devrez également mettre à jour une entrée autre que localhost avec 127.0.0.1 dans / etc / hosts.

tagMacher
la source
1
Ou exécutez simplement la commande "nom d'hôte" à partir de la ligne de commande.
Elomage
4
  1. Remplacez le contenu de /etc/hostnamepar le nom d'hôte souhaité (vous pouvez l'éditer avec sudo nano /etc/hostname)
  2. Dans /etc/hosts, remplacez l'entrée à côté de 127.0. 1 .1 avec le nom d’hôte désiré (vous pouvez éditer avec sudo nano /etc/hosts)
  3. Exécuter sudo service hostname restart; sudo service networking restart
George
la source
Attention: ne fonctionnera pas avec Ubuntu 18+ qui exécute cloud-init par défaut, qui contrôle le nom d'hôte au démarrage.
nslntmnx
@nslntmnx êtes-vous sûr de cela? Je vois dans le fichier cloud-config.txt que # if you do nothing you'll end up with: # * /etc/hostname (and 'hostname') managed via: 'preserve_hostame: false' # if you do not change /etc/hostname, it will be updated with the cloud # provided hostname on each boot. If you make a change, then manual # maintenance takes over, and cloud-init will not modify it.je n'ai pas Ubuntu 18, je ne peux donc pas le tester avant le week-end.
George
4

Ubuntu 16.04

Ceci est sans redémarrage et sans utilisation de terminal.

  • Allez dans Paramètres système -> Détails .
  • Le voilà. À côté du nom de l'appareil , il y a une zone de texte.
  • Modifier la zone de texte et fermer la fenêtre.

Terminal ouvert. Voyez vous-même.

(Pour les versions plus anciennes, la zone de texte n'est pas modifiable.)

shonku
la source
4

La réponse classique à la question de l'affiche originale est que, une fois que vous l'avez modifiée /etc/hostname, vous la faites appliquer sans redémarrer en exécutant hostname (1) avec l' option -F( --file) en tant que root:

sudo hostname -F /etc/hostname

Le nom d' hôte (5) AGILITY avec /etc/hostnameet ledit programme a été le même dans Debian et ses dérivés depuis plus de vingt ans, et le paquet fournissant a été marqué essentielle et nécessaire , et IIRC les scripts d'initialisation ont littéralement utilisé la même chose pour décennies (le /etc/init/hostname.confcontient toujours), je dois donc dire que je suis vraiment perplexe que personne ne l’ait déjà mentionné :)

Josip Rodin
la source
Attention: ne fonctionnera pas avec Ubuntu 18+ qui exécute cloud-init par défaut, qui contrôle le nom d'hôte au démarrage.
nslntmnx
@nslntmnx erm, quoi? Quelle nouvelle dépendance Ubuntu 18 a-t-elle introduite pour intégrer cloud-init par défaut? Vous pensez peut-être à des images personnalisées en nuage, auquel cas il ne devrait pas être surprenant qu'elles utilisent des outils de provisioning de nuage personnalisés.
Josip Rodin
3
sudo hostname your-new-name
sudo /etc/init.d/networking restart

Cela devrait faire le travail je pense

OmarQunsul
la source
5
Je ne pense pas que cela survivra à un redémarrage
Collin Anderson
Attention: ne fonctionnera pas avec Ubuntu 18+ qui exécute cloud-init par défaut, qui contrôle le nom d'hôte au démarrage.
nslntmnx
3

J'ai lu les réponses, mais je pense que vous recherchez probablement ceci:

Il suffit d’exécuter ces deux commandes après l’édition du /etc/hostnamefichier.

$ sudo service hostname restart
$ exec bash

C'est tout. Pas besoin de redémarrer. Assurez-vous également de modifier le nom du /etc/hostsfichier.

Raman
la source
Contrairement à beaucoup d'autres réponses, cela ne met pas à jour /etc/hosts(j'ai confirmé sur 14.04).
IsaacS
Attention: ne fonctionnera pas avec Ubuntu 18+ qui exécute cloud-init par défaut, qui contrôle le nom d'hôte au démarrage.
nslntmnx
2

Ubuntu 16.04

Solution basée sur la réponse de DigitalOcean Comunity.

Editer le fichier hosts .

$ sudo nano /etc/hosts

Remplacez oldname par new one.

127.0.0.1 localhost newname

Configurez le nouveau nom d'hôte.

$ sudo hostnamectl set-hostname newname

Jekis
la source
Attention: ne fonctionnera pas avec Ubuntu 18+ qui exécute cloud-init par défaut, qui contrôle le nom d'hôte au démarrage.
nslntmnx