[英]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.