每当在Ubuntu Web服务器上运行带有SUDO的命令时,“无法parsing主机错误”

我有一个亚马逊的服务器,通常像冠军一样运行; 在这个周末增加了实例大小,然后减less到正常大小后,我每次在sudo下运行一个命令时都会出现奇怪的错误。 这是一个例子:

 sudo ps -ef sudo: unable to resolve host domU-##-##-##-##-##-## 

其中#是一个数字。 注意命令的重要性然后按预期执行 。 我以为在我的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 

虽然我不太清楚,但看起来很正常。 任何人都可以澄清这个重复的错误,以及如何去解决它?

确保您的主机名在/ etc / hostname中。 要看看现在有什么,你可以运行hostname -f或cat / etc / hostname。

当您移动EC2实例时,会丢失主机名,以便在安装Ubuntu时不再与主机名匹配。

您似乎没有使用正确的Amazon DNS。

如果您的EC2实例位于VPC 172.31.0.0 ,则您应使用的DNS是172.31.0.2 。 所以你必须在最后一个数字中加上两个数字。

只有您的VPC的DNS会回应您的本地主机名ip-XXX-XXX-XXX-XXX

从文档:

stringAmazonProvidedDNS映射到运行在VPCnetworking范围“加2”的基础上的保留IP地址上的DNS服务器。 例如,10.0.0.0/16networking上的DNS服务器位于10.0.0.2。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html#AmazonDNS

当我将设置从一个可用区域复制到另一个时,我遇到了这个问题。 我的VPC的DHCP选项集指向us-west-1,但是我的新VPC位于us-west-2。 因此,机器启动时,安装机器的EC2脚本将这个文件放到我的resolv.conf文件中

 # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 10.0.0.2 search us-west-1.compute.internal 

创build一个新的DHCP选项设置与domain = us-west-2.compute.internal并将其应用到我的VPC,一旦我重新启动我的EC2实例,resolve.conf文件看起来像这样

 # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 10.0.0.2 search us-west-2.compute.internal 

(注意在第二块美国西部2与第一块美国西部1),我不再有“无法解决主机”的错误。