30

我可以在所有地区使用相同的密钥对文件吗?我想让 ssh 访问尽可能简单。

我为每个区域设置了一个文件。我试图在不同的区域上传相同的文件,但它没有按预期工作。

4

8 回答 8

24

同时,这已通过导入您自己的密钥对启用,请参阅介绍性帖子新 Amazon EC2 功能:自带密钥对

您现在可以导入自己的 RSA 密钥对(准确地说是公共密钥对)以用于您的Amazon EC2实例。

你为什么想做这个?这里有几个原因:

  1. 信任 - 通过导入您自己的密钥对,您可以确保您完全控制您的密钥。
  2. 安全性——您可以确信您的私钥从未通过网络传输过。
  3. 多个区域的管理 - 您可以跨多个 AWS 区域使用相同的公钥。 [强调我的]

这种方法确实非常有益/方便 - 我已经使用了一段时间,它大大简化了跨多个区域和帐户的 EC2 使用。

Eric Hammond 在他的文章Uploading Personal ssh Keys to Amazon EC2中提供了更多详细信息和简短教程:

亚马逊最近推出了将您自己的 ssh 公钥上传到 EC2 的功能,以便在启动时将其传递给新实例。在此之前,您必须始终使用由 Amazon 生成的 ssh 密钥对。

因此,我建议阅读他的文章,了解实现此目标所需的(少数且简单的)步骤。

于 2012-04-18T10:51:37.683 回答
12

如果您可以导入自己的 RSA 公钥,那么您可以跨区域共享 Amazon 生成的密钥:

  1. 使用您要共享的密钥,登录到生成它的区域中的实例。
  2. 打开 ~/.ssh/authorized_keys
  3. 找到您要共享的密钥所在的行(行尾应显示您在生成密钥时指定的密钥对名称)
  4. 将所有行复制到密钥对名称的第一个字符。应该是 382 个字符。
  5. 将复制的数据保存到本地文件(例如,保存到您启动 SSH 会话FROM的机器)。
  6. 登录 EC2 控制台并切换到您要与之共享密钥的区域。
  7. 选择“密钥对”管理
  8. 单击“导入密钥对”并将其指向在步骤 5 中创建的文件。您可能希望为密钥对提供与您在将其导入表单的区域中相同的名称。
  9. 使用此密钥对启动实例。您应该能够使用与生成它的区域相同的私钥登录到新区域中的实例。
于 2014-01-03T22:53:34.553 回答
10

如果您想在 AWS 控制台中创建 ssh 密钥对并将此密钥对上传到所有其他区域。

  1. 在控制台中创建一个新的 ssh 密钥对或使用您已经拥有的密钥对。

  2. 从 ssh 私钥生成 ssh 公钥(pem > pub)

    $ ssh-keygen -y -f ~/.ssh/MySSHKeyPair.pem >> ~/.ssh/MySSHKeyPair.pub

  3. 将 ssh 公钥上传到所有区域。(从列表中删除已经拥有 ssh 密钥的区域)

    $ for region in us-east-1 us-east-2 us-west-1 us-west-2 ap-south-1 ap-northeast-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 eu-central-1 eu-west-1 eu-west-2 ; do aws ec2 import-key-pair --key-name MySSHKeyPair --public-key-material file://~/.ssh/MySSHKeyPair.pub --region $region ; done

  4. 获取所有区域中所有 ssh 密钥对的列表。

    $ for region in us-east-1 us-east-2 us-west-1 us-west-2 ap-south-1 ap-northeast-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 eu-central-1 eu-west-1 eu-west-2 ; do aws ec2 describe-key-pairs --region $region ; done

于 2017-04-19T04:52:57.410 回答
6

AWS 生成的密钥可以转移到另一个区域:

  • 登录到使用您要传输的密钥创建的实例。
  • 如果不存在,请安装 ec2-api-tools (sudo apt-get install ec2-api-tools)

使用此命令

ec2-import-keypair keypair-name --public-key-file ~/.ssh/authorized_keys --region aws-region

通过上述步骤,我将 AWS 创建的密钥从新加坡地区转移到俄勒冈地区,同样的密钥对我来说非常好用。

请同时访问此链接:

https://forums.aws.amazon.com/thread.jspa?threadID=52654

于 2016-05-31T12:37:16.503 回答
2

您还可以使用 将aws cli密钥对传输到另一个区域。

aws ec2 import-key-pair --key-name my-key --public-key-material file://~/.ssh/id_rsa.pub --region my-region

有关更多信息,请参阅GitHub 上的此问题

于 2017-03-07T21:26:08.210 回答
1
  1. 在控制台中创建一个新的 ssh 密钥对或使用您已经拥有的密钥对。
  2. 从 ssh 私钥生成 ssh 公钥 (pem > pub) $ ssh-keygen -y -f ~/.ssh/rainman_key.pem >> ~/.ssh/rainman_public.pub
  3. 将 ssh 公钥上传到除了它存在的区域之外的所有区域。然后使用 python 导出它。下面是代码:
import os

regions=["us-east-1","us-east-2","us-west-1","us-west-2","ap-east-1","ap-south-1","ap-northeast-2","ap-southeast-1","ap-southeast-2","ap-northeast-1","ca-central-1" ,"eu-central-1","eu-west-1","eu-west-2","eu-west-3","eu-north-1","sa-east-1"]

for region in regions:
    os.system("aws ec2 import-key-pair --key-name rainman_key --public-key-material file://rainman_public.pub --region "+region)**
于 2019-04-26T11:19:55.367 回答
0

您也可以通过扩展来执行区域列表以动态获取区域列表...

for region in $(aws ec2 describe-regions --all-regions --query "Regions[].{Name:RegionName}" --output text | tr '\n' ' '); do
aws ec2 import-key-pair --key-name MYKEYNAME --public-key-material file://~/.ssh/MY_PUB_KEY.pub --region $region; done
于 2019-11-14T23:16:41.963 回答
0

将我需要复制的pem文件上传到其他区域然后...

# chmod 400 /home/ec2-user/mydec15a.pem

# ssh-keygen -y -f /home/ec2-user/mydec15a.pem >> ~/.ssh/MySSHKeyPair.pub

#  aws ec2 import-key-pair --key-name mydec15a --public-key-material file://~/.ssh/MySSHKeyPair.pub --region us-west-2
于 2018-11-28T13:36:13.857 回答