【问题标题】:AWS error - sudo: unable to resolve host ip-10-0-xx-xxAWS 错误 - sudo:无法解析主机 ip-10-0-xx-xx
【发布时间】:2016-01-31 05:26:00
【问题描述】:

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

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

我该如何纠正这个错误?

【问题讨论】:

  • 使用 IP 地址,即10.0.xx.xx(当然,您已将xxs 替换为数字)。 ip-10-0-xx-xx 不是实际的 IP 或主机名。
  • @EdCottrell,我没有对 ip 进行任何操作。我正在做一个sudo apt-get update,我仍然得到那个错误。每当我需要访问该 ip 时,我都会使用与私有 ip(ip-10-0-xx-xx) 不同的公共 ip(ip-10-0-xx-xx)
  • 啊,这是重要的信息。您应该将其添加到您的问题中;我以为您的意思是引用 ip-10-0-xx-xxsudo 命令。

标签: amazon-web-services sudo


【解决方案1】:

您应该在您的 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

【讨论】:

    【解决方案2】:

    将以下行添加到 /etc/hosts

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

    ip 是你的私有 ip 地址

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

    【讨论】:

      【解决方案3】:

      运行以下命令;

      sudo su -
      

      并以 root 身份工作。然后启动命令将起作用。

      【讨论】:

        【解决方案4】:

        要启用 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

        【讨论】:

          【解决方案5】:

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

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

          不知何故,我的domain-name 更改为us-east-1.compute.internal,导致每次运行sudo 时都会出现sudo: unable to resolve host ip-10-0-xx-xx 警告。改回上面的 DHCP 选项可以解决这个问题。

          【讨论】:

            【解决方案6】:

            两个选项:

            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】:

              可以从命令行轻松打补丁,如下:

              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 option set configured correctly。您遇到的问题是由于您的 /etc/resolv.conf 中缺少 search 行引起的;如果您正确设置了 DHCP 选项集的domain-name,它将在分配 DHCP 时放在那里。阅读链接的 AWS 文档。

                【讨论】:

                • 就我而言,问题在于我最近更改的 DHCP 选项集配置。感谢您的提示!
                • 在我的例子中,VPC 配置正确,但它与错误的 DHCP 设置相关联。我需要使用ec2.internal作为我的DHCP设置的域名,然后一切都解决了。
                【解决方案9】:

                这对我有用:

                将以下行添加到/etc/hosts

                127.0.0.1 ip-xxx-xx-x-xx
                

                ip 就是你的私有 ip 地址

                【讨论】:

                  【解决方案10】:

                  此问题是由于未在您的 VPC 配置中启用 enableDnsHostnames 引起的。

                  enableDnsHostnames

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

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

                  【讨论】:

                  • 我觉得这是一个更好的答案,因为它解决了 VPC 上所有机器的问题,而不仅仅是一次。
                  • 它不能解决我的问题。虽然enableDnsHostnamesenableDnsSupport 属性设置为True
                  • @cyrillk 你是改成这个还是已经这样设置了?如果您更改了它,您现在可能需要重新启动实例。如果不是,那么您是否在 VPC 的 DHCP DNS 设置中使用自定义名称服务器?
                  • @Michael-sqlbot VPC:{"Vpcs":[{"VpcId":"vpc-XX","InstanceTenancy":"default","Tags":[],"State":"available","DhcpOptionsId":"dopt-411ee129","CidrBlock":"172.16.0.0/16","IsDefault":false}]} VPC 属性:{"VpcId":"vpc-XX","EnableDnsHostnames":{"Value":true}}{"VpcId":"vpc-XX","EnableDnsSupport":{"Value":true}} DHCP:{"DhcpOptions":[{"Tags":[{"Value":"default_dhcp","Key":"Name"}],"DhcpConfigurations":[{"Values":[{"Value":"AmazonProvidedDNS"}],"Key":"domain-name-servers"}],"DhcpOptionsId":"dopt-411ee129"}]}
                  • 刚刚也遇到了这个问题。我使用的是默认为 DNS 主机名和 DNS 解析设置关闭的“自定义 VPC”。为了解决问题,请在 VPC 中打开 DNS 主机名和 DNS 解析,然后通过 AWS CLI 重启实例。请注意,从来宾操作系统“重新启动实例”似乎不允许 DNS 设置从虚拟机管理程序传播到来宾。
                  猜你喜欢
                  • 2015-04-06
                  • 2019-09-09
                  • 2013-03-26
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-01-27
                  • 2019-12-19
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多