AWS 错误 - sudo:无法解析主机 ip-10-0-xx-xx

问题描述 投票:0回答:13

我启动了一个新的

aws
实例。根据亚马逊控制台,我的私人 IP 是
ip-10-0-xx-xx
。每次执行 sudo 命令时,都会出现以下错误

sudo: unable to resolve host ip-10-0-xx-xx

如何纠正此错误?

amazon-web-services sudo
13个回答
86
投票

此问题是由于您的 VPC 配置中未启用

enableDnsHostnames
导致的。

enableDnsHostnames

指示VPC中启动的实例是否获取DNS主机名。如果此属性为 true,则 VPC 中的实例将获取 DNS 主机名;否则,他们就不会。如果您希望实例获取 DNS 主机名,还必须将

enableDnsSupport
属性设置为 true。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html#vpc-dns-updating


55
投票

您应该在 VPC 上启用 DNS 主机名http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html#vpc-dns-updating

如果由于某种原因,您无法启用它,您仍然可以使用

/etc/hosts
来解决,但这绝对不是推荐的解决方案

10.0.xx.xx ip-10-0-xx-xx

23
投票

这对我有用:

将以下行添加到

/etc/hosts

127.0.0.1 ip-xxx-xx-x-xx

ip是你的私人IP地址


17
投票

可以从命令行轻松修补,如下所示:

sudo sed -i /etc/hosts -e "s/^127.0.0.1 localhost$/127.0.0.1 localhost $(hostname)/"

并检查重新启动或停止然后启动 aws 实例是否会保留它。 万一丢失,可以在启动时轻松重新应用,并且可以添加到新虚拟机的任何配置中。

示例

之前:

ubuntu@ip-177-11-22-333:~$ sudo id
sudo: unable to resolve host ip-177-11-22-333
uid=0(root) gid=0(root) groups=0(root)

修复:

ubuntu@ip-177-11-22-333:~$ sudo sed -i /etc/hosts -e "s/^127.0.0.1 localhost$/127.0.0.1 localhost $(hostname)/"
sudo: unable to resolve host ip-177-11-22-333

之后:

ubuntu@ip-177-11-22-333:~$ sudo id
uid=0(root) gid=0(root) groups=0(root)
ubuntu@ip-177-11-22-333:~$

8
投票
迈克尔评论中描述的

enableDnsHostnames
是一个先决条件。另一个是正确配置 VPC 的 DHCP 选项集。您遇到的问题是由于您的
search
中缺少
/etc/resolv.conf
行引起的;如果您正确设置 DHCP 选项设置的
domain-name
,它将在 DHCP 分配时放入其中。阅读链接的 AWS 文档。


8
投票

两个选项:

  1. 为您的 VPC 启用 DNS 主机名,因此 VPC 内启动的所有实例都将解析主机

  2. 编辑 /etc/hosts 并添加以下行

    127.0.0.1 localhost    
    123.0.0.1 ip-10-0-1-18 ## (Replace with the private ip)
    

您需要为 VPC 中启动的每个实例执行此操作。


7
投票

即使在 VPC 中启用了 DSN,我最近也遇到了同样的问题。

我检查了 EC2 实例,发现我的存储使用率为 99%。所以我截断了日志文件并清理了。

之后,我重新启动它,一切正常。


3
投票

将以下行添加到 /etc/hosts

127.0.0.1 localhost
127.0.0.1 ip-xxx-xx-x-xx

ip是你的私人IP地址

也请不要忘记在编辑这些内容后重新启动实例


1
投票

我的问题是由无效的 DHCP 选项集(在 VPC 控制台中)引起的。您通常想要的默认值如下所示:

domain-name = ec2.internal
domain-name-servers = AmazonProvidedDNS

不知何故,我的

domain-name
变成了
us-east-1.compute.internal
,这导致我每次运行
sudo: unable to resolve host ip-10-0-xx-xx
时都会出现
sudo
警告。改回上面的 DHCP 选项修复了它。


1
投票

运行以下命令;

sudo su -

并以 root 身份工作。然后启动命令就可以工作了。


1
投票

我也遇到过与@bhavesh-odedra 类似的案例。我的存储使用率为 100%,我将其扩展到 5Gb 以上,使用

sudo reboot
重新启动实例,之后我开始收到此错误。

我用

sudo df -h
检查了磁盘使用情况,发现我的Ubuntu系统不支持扩展存储。再次重新启动没有帮助。

我检查了此页面上的答案。 AWS VPC 配置中的

DNS hostname
Enabled
。然后我将私有IP添加到
/etc/hosts
- 它也没有帮助。

一段时间后,我决定使用 AWS 控制台(不是

sudo reboot
)重新启动实例。我不知道 AWS 控制台是否通知我的系统新存储已可供使用,或者发生了其他情况,但通过
sudo df -h
,我确信我的新存储空间正在使用中。之后错误就消失了。


0
投票

要启用 DnsSupport 属性,只需在终端中使用此命令

aws ec2 describe-vpc-attribute --vpc-id vpc-****** --attribute enableDnsSupport

确保将 * 替换为您的 VPC Id 了解更多信息 https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-attribute.html


0
投票

就我而言,我的 EC2 卷完全已满。修改卷并向磁盘添加一些空间后,我的实例可能出现某种损坏。

阅读上面的选项后,我注意到enableDnsSupport对于我的VPC来说已经是正确的。所以我认为更改配置 /etc/hosts 听起来并不正确。

所以我中断了EC2并重新开始。无需任何配置即可运行。

请注意,中断与重置不同。行为不同。因此,如果您有一个停止服务器的窗口或者您的服务已经停止,那么您应该尝试一下。

© www.soinside.com 2019 - 2024. All rights reserved.