所有地区的单一密钥对

时间:2012-04-18 10:21:30

标签: amazon-ec2 amazon-web-services

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

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

8 个答案:

答案 0 :(得分:22)

同时通过导入您自己的密钥对来启用此功能,请参阅介绍性帖子New Amazon EC2 Feature: Bring Your Own Keypair

  

您现在可以导入您自己的RSA密钥对(或公共的一半)   (准确)用于Amazon EC2个实例。

     

你为什么要这样做?以下是几个原因:

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

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

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

  

亚马逊最近推出了上传自己的ssh公钥的功能   到EC2,以便它们可以传递给新的实例   推出。在此之前,你总是必须使用ssh密钥对   由亚马逊生成。

因此,我建议遵循他关于实现这一目标所需的(少数和简单)步骤的文章。

答案 1 :(得分:12)

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

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

答案 2 :(得分:6)

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

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

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

    $ 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

答案 3 :(得分:5)

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

答案 4 :(得分:2)

您还可以使用aws cli将密钥对转移到其他区域。

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

有关详情,请参阅GitHub上的this issue

答案 5 :(得分: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)**

答案 6 :(得分: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

答案 7 :(得分: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