簡體   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