aws ec2:如何从 ubuntu 实例内部知道 public ip

aws ec2: how to know public ip from inside ubuntu instance

我创建了一个 amazon-web-services 实例并使用了 Ubuntu 14.04 amazon 机器映像。

现在我可以通过 ssh 进入那台机器并使用 shell 到 运行 不同的命令。

我现在的问题是,如何从该 ssh 会话中找到该机器的 public IP?

我试过使用

netstat

ifconfig

但找不到我通过 ssh 锁定的 public IP。

有没有人可以告诉我如何找出我用来ssh进入机器的ip?

提前致谢!

您的 ssh 命令的格式类似于

ssh -i "xxx.pem" ubuntu@ec2-54-252-113-980.ap-souheast-1.compute.amazonaws.com

比你实例的publicIP是54.252.113.980ubuntu@ec2.

后面的数字

在 ubuntu 上获取 public IP 的其他命令行选项是:

  1. curl ipecho.net/plain ; echo
  2. wget http://ipinfo.io/ip -qO -

你不能真的只从标准 linux 命令

中获取 Public IP

您可以检查 Web 控制台(但显然这不是您想要的)或使用 aws CLI

[xxx@IP-xxxx ~]# aws ec2 describe-addresses
{
    "Addresses": [
        {
            "Domain": "vpc",
            "InstanceId": "xxxx",
            "NetworkInterfaceId": "eni-xxxx",
            "AssociationId": "eipassoc-xxxx",
            "NetworkInterfaceOwnerId": "xxxx",
            "PublicIp": "THE PUBLIC IP",
            "AllocationId": "eipalloc-xxxx",
            "PrivateIpAddress": "THE INTERNAL IP the instance knows"
        }
    ]
}

这个问题已经被问过很多次了。你需要的是Instance Metadata and User Data

只需执行此操作并参考提到的文档,即可获得 public IP 地址:

curl http://169.254.169.254/latest/meta-data/public-ipv4