错误消息"sudo:unable to resolve host(none)"

当我跑 sudo 终端卡住几秒钟,然后输出错误消息。 我的终端看起来像这样:

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

我能做些什么来解决它?

两件事要检查(假设你的机器被调用 my-machine,您可以根据需要更改此):

  1. 那就是 /etc/hostname 文件只包含机器的名称。

  2. 那个 /etc/hosts 有一个条目 localhost. 它应该有类似的东西:

     127.0.0.1本地主机.本地主机127.0.1.1我的机器

如果这些文件中的任何一个不正确(因为您无法sudo),则可能必须将计算机重新启动到恢复模式并进行修改,然后重新启动到您的常规环境。

编辑 /etc/hosts 并将您的新主机名附加到127.0.0.1行(或者创建一个新行,如果您愿意)。

我的看起来像:

127.0.0.1       localhost localhost.localdomain penguin# The following lines are desirable for IPv6 capable hosts::1     ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters

更换/更换 penguin 在上面的例子中,你的新主机名称如 /etc/hostname 档案。

将主机名添加到 /etc/hosts 像这样:

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

注意,这是一个答案 这个问题 它已经和这个合并了。

您的主机名(dave00-G31M-ES2L)中没有表示 /etc/hosts. 添加一个 L 到这条线:

127.0.1.1   dave00-G31M-ES2

所以它变成了:

127.0.1.1   dave00-G31M-ES2L

为了完成此,请打开控制台(按 Ctrl+Alt+T)和类型:

sudo gedit /etc/hosts

加上信 L 如前所述,保存并退出。

当我在VPS上使用ubuntu时,我遇到了这个问题。 我解决了它编辑/etc/hosts文件。

运行此命令:

sudo nano /etc/hosts

然后添加:

127.0.0.1   localhost.localdomain localhost127.0.1.1   ubuntu

我希望这将解决您的问题:)

PS:记得重启电脑!

即使我的/etc/hostname文件和/etc/hosts文件中的主机名匹配,我也遇到了同样的问题。

我的主机名是"staging_1"。 事实证明,你的主机名不能有下划线,这就是为什么我得到这个错误。 将下划线更改为连字符修复了我的问题。

在AWS中,转到您的vpc并打开"DNS主机名"。

问题中给出的症状可能与此更具体的问题密切相关:

$ hostname --fqdnhostname: Temporary failure in name resolution

有不同的方法可以解决这个问题,其中之一是将您的主机名添加为localhost /etc/hosts (如其他几个答案所示)。 一般来说,这可能是正确的做法,但这不是唯一可能的解决方案。

"完全限定域名"可能由外部DNS服务器或类似服务器提供(如果您的网络上可用)。 在这种情况下, sudo 不会抱怨,尽管在缺少条目 /etc/hosts.


注意事项: sudo 由于sudoers文件中的可选功能,尝试取消引用主机名,即使它不一定是必需的。 见 sudo命令试图搜索主机名.

只要延迟不太长,此错误消息通常是无害的。

大家建议修改 /etc/hosts. 但在某些情况下,这可能是不可能的(例如在docker容器内)。 所以,我必须找到一个更好的方法,我想出了这个:

echo "alias sudo='sudo -h 127.0.0.1'" >> ~/.bash_aliasessource ~/.bashrc

别名在bash脚本中不起作用,但我们可以使用变量: sudo='sudo -h 127.0.0.1'

我遇到了同样的错误消息。 我认为AWS开发人员论坛上的这个讨论线程是一个更好的解决方案:

"转到VPC管理控制台,选择VPC,单击操作,选择编辑DNS主机名并选择是。"

https://forums.aws.amazon.com/thread.jspa?messageID=699718

我建议不要关闭这个问题太本地化。 有许多用户可能会错误地认为他们在他们的"主机"文件中放了一个名字,但却放了一个不同的名字,特别是因为在许多网络上,计算机的名字是相似的。 当有人搜索这个问题时,这个问题(和答案)会出现,答案会提示他们检查这些差异,即使确切的拼写错误会有所不同。

确保您的"主机名"与"hosts"相同。 例如:主机名是ubuntu-pc,主机是ubuntu-pc必须相同。

请发布"/etc/hostname"和"/etc/hosts"的内容。

我无法发布答案,因为这个问题受到保护,我在这里没有足够的声誉。 在我的情况下,我通过重新启动network-manager:sudo/etc/init来解决问题。d/网络管理器重新启动'。 但是,我想知道为什么首先sudo浪费时间等待与网络相关的东西。 当网络不可用时,sudo`不应该毫无问题地工作吗?

我今天遇到了这个。 问题是我在主机名中的内容不在/etc/hosts中。 也就是说:host hostname=>‘mybox’gre grep’mybox’/etc/hosts=>192.168.1.2mybox.example.com.我需要在/etc/hosts=>192.168.1.2的域名后面添加’mybox’mybox.example.com 我的盒子

Why does the question have `"“最后? 这与问题正文中显示的”(无)"改进建议:删除"的实际输出相矛盾

你可以在这里改进问题。 它被另一个用户更改了。 我也不知道。 :P