问题描述
我在一些服务器上的AWS上遇到了这个问题。每当我运行sudo
时,终端都会看起来一无所有,直到它终于吐出这个错误消息。我的终端如下所示:
ubuntu@(none):~$ sudo true
sudo: unable to resolve host (none)
我能做些什么来解决它?
最佳解决思路
有两件事要检查(假设你的机器叫做my-machine
,你可以根据需要改变它):
-
/etc/hostname
文件只包含机器的名称。 -
该
/etc/hosts
有一个localhost
条目。它应该有这样的东西:127.0.0.1 localhost.localdomain localhost 127.0.1.1 my-machine
如果这些文件中的任何一个不正确(因为您无法sudo),则可能必须重新启动机器进入恢复模式并进行修改,然后重新启动到通常的环境。
次佳解决思路
Edit /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-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
在上面的例子中用/etc/hostname
文件中指定的新主机名替换penguin
。
第三种解决思路
请注意,这是与此合并的this question的答案。
您的主机名(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
,保存并退出。
第四种思路
像这样将你的主机名添加到/etc/hosts
:
echo $(hostname -I | cut -d\ -f1) $(hostname) | sudo tee -a /etc/hosts
第五种思路
当我在VPS上使用Ubuntu时遇到了这个问题。我解决了它编辑/etc /hosts文件。
运行这个命令:
sudo nano /etc/hosts
然后添加:
127.0.0.1 localhost.localdomain localhost
127.0.1.1 ubuntu
我希望这会解决你的问题:)
PS:记得重启你的电脑!
第六种思路
即使我的/etc /hostname文件和/etc /hosts文件中的主机名匹配,我也遇到了同样的问题。
我的主机名是”staging_1″。事实证明,你的主机名不能有下划线,这就是我得到这个错误的原因。将下划线更改为连字符修复了我的问题。
第七种思路
在AWS中,转到您的vpc并打开”DNS Hostnames”。
第八种思路
我遇到了同样的错误信息。我认为AWS开发者论坛的这个讨论线索是一个更好的解决方案:
“转到VPC管理控制台,选择VPC,单击操作,选择编辑DNS主机名并选择是。”
https://forums.aws.amazon.com/thread.jspa?messageID=699718
第九种思路
在我的情况下,这是问题所在,我将hostname
更改为man
,因为我想知道是否有一些参数可用于hostname
。相反,它将我的hostname
更改为man
,并且我总是收到与您一样的消息
sudo: unable to resolve host (none)
在将主机名改回到`localhost之后,所有事情都再次正常工作
hostname localhost
第十种思路
一些终端仿真程序不会使用正确的主机名更新提示,直到关闭并重新启动仿真程序(lxterminal,我正在与您通话)。
在编辑我的主机名和主机文件并运行sudo service hostname restart
之后,我花了30分钟处理这个错误,直到我运行sudo hostname
并且看到主机名是新值,即使提示符显示了旧值。