913 votes

Message d'erreur "sudo : unable to resolve host (none)".

Quand je cours sudo le terminal est bloqué pendant quelques secondes puis émet un message d'erreur. Mon terminal ressemble à ceci :

ubuntu@(none):~$ sudo true
sudo: unable to resolve host (none)

Que puis-je faire pour le résoudre ?

10 votes

Veuillez afficher le contenu de /etc/hostname y /etc/hosts .

60 votes

Je recommande de ne pas clore cette question en disant trop localisé . De nombreux utilisateurs peuvent penser à tort qu'ils ont mis un nom dans leurs hosts mais mettre un nom différent à la place, d'autant plus que sur de nombreux réseaux, les ordinateurs sont nommés de la même manière. Cette question (et sa réponse) apparaîtrait lorsque quelqu'un effectue une recherche sur ce problème, et la réponse l'inciterait à vérifier de telles divergences, même si l'orthographe exacte est différente.

12 votes

Assurez-vous que votre hostname même avec hosts . par exemple, le nom d'hôte est ubuntu-pc et les hôtes est ubuntu-pc doivent être identiques.

1227voto

tags2k Points 11036

Deux choses à vérifier (en supposant que votre machine s'appelle my-machine vous pouvez le modifier si nécessaire) :

  1. Que le /etc/hostname ne contient que le nom de la machine.

  2. Ce /etc/hosts a une entrée pour localhost . Il devrait avoir quelque chose comme :

     127.0.0.1    localhost.localdomain localhost
     127.0.1.1    my-machine

Si l'un ou l'autre de ces fichiers n'est pas correct (puisque vous ne pouvez pas faire de sudo), vous devrez peut-être redémarrer la machine en mode récupération et effectuer les modifications, puis redémarrer dans votre environnement habituel.

42 votes

Le nom d'hôte ne changera pas tant que vous n'aurez pas redémarré. Si vous souhaitez le modifier sans redémarrer la machine, suivez les étapes ci-dessus et exécutez ensuite:- "sudo hostname my-machine" pour voir si cela a fonctionné, exécutez "sudo hostname" Cela affichera le nom d'hôte de votre machine. Cette méthode peut être utilisée comme méthode temporaire pour changer le nom d'hôte. Après un redémarrage, la valeur du fichier /etc/hostname est utilisée.

2 votes

Note : comme vous ne pouvez pas faire de sudo au départ, il est difficile d'éditer ces fichiers. Ma solution a été d'arriver à faire sudo visudo et de changer #%admin ALL=(ALL) ALL a %admin ALL=NOPASSWD: ALL puis redémarrer, et sudo su -, éditer ces fichiers, définir/corriger le nom d'hôte, redémarrer à nouveau, et tout a fonctionné.

4 votes

J'utilise le sous-système Linux dans Windows et j'ai rencontré ce problème. Après avoir suivi votre réponse, il a été résolu.

230voto

Lekensteyn Points 162346

Editar /etc/hosts et ajoutez votre nouveau nom d'hôte à la ligne 127.0.0.1 (ou créez une nouvelle ligne si vous préférez).

Le mien ressemble :

127.0.0.1       localhost localhost.localdomain penguin

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Remplacer penguin dans l'exemple ci-dessus par votre nouveau nom d'hôte tel qu'il est indiqué dans le fichier /etc/hostname fichier.

4 votes

Comment peut-il éditer le fichier /etc/hosts s'il ne peut pas sudo ? A moins qu'il n'ait créé un compte rood avec un mot de passe (mauvaise idée).

12 votes

@Dennis Vous pouvez toujours exécuter sudo même si ce message est affiché. Cependant, vous devez toujours saisir votre mot de passe à chaque invocation. Si cela ne fonctionne pas, vous pouvez redémarrer dans la console de récupération et appliquer les changements. Il est déconseillé d'utiliser un compte root avec mot de passe.

0 votes

Réponse utile.

83voto

Collin Anderson Points 3000

Ajoutez votre nom d'hôte à /etc/hosts comme ça :

echo $(hostname -I | cut -d\  -f1) $(hostname) | sudo tee -a /etc/hosts

8 votes

C'est astucieux, mais je ne pense pas que ce soit une bonne idée d'automatiser quelque chose comme ça.

1 votes

Cette opération consiste à ajouter le nom d'hôte au fichier hosts. On suppose qu'il n'y a rien entre l'ip loopback, la correspondance avec localhost et la fin du fichier, mais il y a maintenant des éléments IPv6 entre cette ligne et la fin du fichier, auquel cas cette solution ne donne pas vraiment ce que l'on voudrait. Un commentaire connexe : L'édition de ce fichier ou d'autres fichiers nécessite l'utilisation de sudo et c'est sudo que nous essayons de corriger. Nous devons toujours être en mesure d'exécuter sudo. Dans ce cas, sudo -h hostname peut être utilisé pour changer les permissions sur les fichiers ou obtenir l'autorisation de les éditer.

3 votes

Cela échoue parce que je ne peux pas "sudo tee " mais cela a fait l'affaire : echo $(hostname -I | cut -d\ -f1) $(hostname) | sudo -h 127.0.0.1 tee -a /etc/hosts

19voto

Luca D'Amico Points 544

J'ai eu ce problème lorsque j'utilisais ubuntu sur un VPS. Je l'ai résolu en éditant le fichier /etc/hosts.

exécutez cette commande :

sudo nano /etc/hosts

et ensuite ajouter :

127.0.0.1   localhost.localdomain localhost
127.0.1.1   ubuntu

J'espère que cela résoudra votre problème :)

PS : N'oubliez pas de redémarrer votre ordinateur !

2 votes

Vérifiez également si le nom de votre appareil (imprimé sur la barre de titre du terminal après le signe @) correspond au nom figurant sur la deuxième ligne de l'écran d'accueil. hosts ("ubuntu" dans l'exemple de Luca). La première ligne peut également être simplement "localhost".

2 votes

N'oubliez pas ! Utiliser sudoedit (ou sudo -e ). Pour spécifier l'éditeur préféré, utilisez l'option EDITOR variable d'environnement (ex. export EDITOR=vim ), car il crée une copie hors ligne pour l'édition et l'écrase proprement après l'édition.

0 votes

Cette réponse n'est-elle pas essentiellement la même que celle-ci ? plus ancien ?

14voto

Chris.B Points 241

J'avais le même problème même si le nom d'hôte dans mon fichier /etc/hostname et /etc/hosts correspondait.

Mon nom d'hôte était "staging_1". Il s'avère que vous ne pouvez pas avoir de trait de soulignement dans votre nom d'hôte, c'est pourquoi j'ai eu cette erreur. En remplaçant le trait de soulignement par un trait d'union, j'ai résolu mon problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X