gpt4 book ai didi

ssh - 有没有一种简单的方法可以使用它们的名称标签连接到 EC2 实例?

转载 作者:行者123 更新时间:2023-12-01 08:29:57 25 4
gpt4 key购买 nike

我们的团队正在 AWS 上工作,我们有很多实例,我们会不断添加和删除。每个实例都有一个逻辑名称,这有助于我们了解它的作用以及找到它。
但是,当我们想要连接到一个时,我们要么需要更新 ~/.ssh/config一直保存文件,或者转到 Web 控制台,按名称查找实例,复制其 IP,然后我们才能使用以下命令运行它:

ssh -i ~/.aws/my-pem-file.pem ubuntu@ec2-111-111-111-111.compute-1.amazonaws.com

我在徘徊是否有更简单的方法可以做到这一点,您可以在其中指定机器名称,而 EC2 会做剩下的事情吗?

就像是
ssh-aws my-machine-name

最佳答案

如果您使用弹性 IP(不会更改)配置实例/负载均衡器,则始终可以使用 SSH 配置文件。

  • http://webadvent.org/2012/ssh-tips-by-lorna-mitchell
  • http://nerderati.com/2011/03/simplify-your-life-with-an-ssh-config-file/

  • 其次,如果您有 Unified AWS CLI Tools配置后,您可以将这些功能添加到您的 Bash 配置文件中。假设您拥有的每个实例都有一个唯一的“名称”标签,这将为 SSH 请求返回该实例的 IP 地址。 (否则,它将仅使用第一个“名称”匹配。)
    function hostname_from_instance() {
    echo $(aws ec2 describe-instances --filters "{\"Name\":\"tag:Name\", \"Values\":[\"$1\"]}" --query='Reservations[0].Instances[0].PublicDnsName' | tr -d '"')
    }

    function ip_from_instance() {
    echo $(aws ec2 describe-instances --filters "{\"Name\":\"tag:Name\", \"Values\":[\"$1\"]}" --query='Reservations[0].Instances[0].PublicIpAddress' | tr -d '"')
    }

    function ssh-aws() {
    ssh -i ~/.ssh/your-keypair.pem ec2-user@$(ip_from_instance "$1")
    }

    根据您是否在 VPC 内运行实例,有时您会返回其中一个。全公共(public)(经典)EC2 应该总是返回一个主机名,有时是一个公共(public) IP。

    根据需要随意调整/调整。

    关于ssh - 有没有一种简单的方法可以使用它们的名称标签连接到 EC2 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424849/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com