![如何使用不同的.pem 文件从 ubuntu 管理大量 EC2 实例的 SSH 连接信息](https://linux22.com/image/987967/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84.pem%20%E6%96%87%E4%BB%B6%E4%BB%8E%20ubuntu%20%E7%AE%A1%E7%90%86%E5%A4%A7%E9%87%8F%20EC2%20%E5%AE%9E%E4%BE%8B%E7%9A%84%20SSH%20%E8%BF%9E%E6%8E%A5%E4%BF%A1%E6%81%AF.png)
我必须定期从本地计算机访问许多 AWS EC2 实例。它们的 IP 地址未映射到任何域,因此我需要使用以下命令登录它们:
ssh -i keyfile.pem ec2-user@<ip address of the instance>
有超过 10 个 EC2 实例,有些实例具有相同的密钥文件,有些则不同。问题是我不记得它们的 IP 地址,每次我都必须在 AWS 控制台上查找它们,然后复制粘贴它们的 IP 地址。有什么方法可以加快这个过程,方法是在本地存储这些实例的一些别名并使用一些 GUI 工具访问它们?我不想使用 PUTTY,因为我喜欢 Ubuntu shell。
答案1
您可以通过指定主机名、用户名、端口和私钥来尝试使用快捷方式。请参阅官方文档。
Host MyInstance1
Host example.com or ipaddress
User ubuntu
IdentityFile /path/to/privatekey/MyInstance1.pem
允许:
chmod 600 ~/.ssh/config
然后尝试通过
ssh MyInstance1
您也可以尝试使用别名:
文件:
vi vim ~/.bash_aliases
然后
alias MyInstance1='ssh [email protected] -i /path/to/private-key/MyInstance1.pem'
答案2
SSH 配置非常适合这种情况,但是,在重新部署新实例时,IP 将发生变化,您的 ssh 配置将变得陈旧。我编写了一个工具,可以从 AWS 中提取最新的 EC2 清单,并将其 ssh 到与您的搜索相匹配的系统中:https://github.com/wagoodman/bridgy
bridgy ssh <some-instance-id>
或者,如果您向每个实例添加一个名为的标签Name
,那么您也可以使用它:
bridgy ssh <some-name-tag-value>
如果您已~/.aws
定义 creds/config,则可以使用aws-cli
以下定义~/.bridgy/config.yml
:
inventory:
source: aws
update_at_start: true
ssh:
user: <your ssh user>
...
那它就应该可以工作了!
最后一件事:如果您将所有 SSH 密钥添加到,ssh-agent
那么这将解决有关多个密钥文件的问题(所有密钥都针对您尝试登录的主机进行尝试)。