繁体   English   中英

仅使用实例 ID SSH 到 Amazon EC2

[英]SSH to Amazon EC2 using instance ID only

我想打开/关闭我的一些 Amazon EC2 实例,但这会导致 IP 和所有 DNS 名称发生更改。 因此,当我再次启动我的机器时,我所有的 SSH 配置都丢失了,因为我使用以前的 DNS 名称进行连接。

是否有一种简单的方法来解析目标机器的 dns(没有或尽可能低的成本)仅使用其实例 ID(或任何其他不会因关机重启而改变的参数)? 我必须使用 AWS-CLI 吗? 如果我想向没有 AWS 凭证的人提供对 EC2 机器的访问权限,该怎么办?

不确定像“服务发现”、“经纪人”或“代理”这样的标签在这里是否真的有意义,但为了参考起见,我将它们添加到我的帖子中。

我不想为弹性 IP 付费。

已经有 Utils 可以做到这一点,无需自己动手: ec2ssh是一个 Python 脚本来执行此操作,但是ec2ssh的 google 将提供ec2ssh许多类似工具来完成这项工作。

就个人而言,我设置了一个带有 EIP 的堡垒,然后从那里跳转到所有其他主机。 这样,您就无需仅为管理员访问权限而提供您的实例公共 IP。 如果您不传输大文件,您可以使用 t2.nano 作为堡垒实例,如果预订,您需要花费一个月的费用。

Ec2ssh 具有堡垒支持,因此配置开销最小。

根据@jarmod 的评论构建,如果您知道实例 ID,那么您可以使用 awscli 获取 IP,如下所示:

aws ec2 describe-addresses --filters Name=instance-id,Values=i-xxxxxxxxxxxxxxxxx | grep PublicIp | awk -F\\" '{print $4}'

话虽如此,我不确定您为什么认为弹性 IP 很昂贵。 根据定价页面,弹性 IP 在与正在运行的实例相关联时免费,如果与实例无关,则为 0.005 美元/小时。

EC2 弹性 IP 正是您想要的。 实例将在重新启动和启动/停止周期期间保留其弹性 IP(和关联的 DNS 名称)。 https://aws.amazon.com/ec2/pricing/on-demand/#Elastic_IP_Addresses

请记住:它仅适用于 VPC EC2 实例。 旧的“经典”实例将失去其弹性 IP,您将不得不再次手动关联它。

这个工具应该做你所要求的: https : //github.com/wagoodman/bridgy

bridgy ssh <some-instance-id>

如果您像使用 aws-cli 一样定义了~/.aws creds/config 以及~/.bridgy/config.yml的以下~/.bridgy/config.yml

inventory:
    source: aws
    update_at_start: true
ssh:
    user: <your ssh user>
...

那么它应该工作!

披露:我是作者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM