[已解决] sudo: 无法解析 Ubuntu Linux 中的主机错误
本快速教程将向您展示如何修复 Ubuntu 或任何其他 Linux 发行版中的“sudo:无法解析主机主机名”错误。
为了测试 Linux 手册上的教程,我在 UpCloud 上创建了一个新服务器,UpCloud 是我最喜欢的云服务器提供商,具有极快的 SSD。我的 Ubuntu 18.04 服务器在几分钟内就准备好了。
我忘记给它一个合理的名称,所以几天后,我不得不更改主机名并给它一个更好的名称。现在它被称为测试服务器,因为这就是它的用途。
我创建了一个 sudo 用户,因为我不喜欢一直是 root 用户,特别是当我修改系统时。
当我开始使用 sudo 命令时,我在命令的输出中看到一个奇怪的错误:
sudo:无法解析主机测试服务器
该命令使用 sudo 运行没有任何问题,但无论如何都会显示此错误消息。
修复 sudo:无法解析主机
错误的根本原因实际上与主机名更改有关。让我向您展示如何修复此无法解析主机名错误。
首先,使用 hostname 命令检查系统的主机名。就我而言,主机名是 test-server。
$hostname
test-server
主机名取自 /etc/hostname 文件。
cat /etc/hostname
test-server
相同的主机名也应列在 /etc/hosts 文件中。但就我而言(我想您的情况也是如此),/etc/hosts 文件中缺少该主机名,如您在下面的输出中看到的:
127.0.0.1 localhost
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
ff02::3 ip6-allhosts
由于这里缺少它,系统无法找出主机名,因此会抛出错误“sudo:无法解析主机”。
要解决此问题,请编辑此文件并添加新行并使用主机名设置环回地址。您可以使用 Vim 在命令行中编辑文件。
127.0.0.1 <hostname>
现在,我的 /etc/hosts 文件如下所示:
127.0.0.1 localhost
127.0.0.1 test-server
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
ff02::3 ip6-allhosts
提示:如果旧主机名仍然存在于 /etc/hosts 文件中的任何位置,则应将其替换为新主机名。
添加上述行后,“sudo:无法解析主机”错误立即消失。我什至不需要重新启动我的 Ubuntu 服务器。
我希望这个快速的小技巧可以帮助您解决这个恼人的错误。请在评论部分告诉我它是否对您有用。