我可以在所有地区使用相同的密钥对文件吗?我想让 ssh 访问尽可能简单。
我为每个区域设置了一个文件。我试图在不同的区域上传相同的文件,但它没有按预期工作。
我可以在所有地区使用相同的密钥对文件吗?我想让 ssh 访问尽可能简单。
我为每个区域设置了一个文件。我试图在不同的区域上传相同的文件,但它没有按预期工作。
同时,这已通过导入您自己的密钥对启用,请参阅介绍性帖子新 Amazon EC2 功能:自带密钥对:
您现在可以导入自己的 RSA 密钥对(准确地说是公共密钥对)以用于您的Amazon EC2实例。
你为什么想做这个?这里有几个原因:
- 信任 - 通过导入您自己的密钥对,您可以确保您完全控制您的密钥。
- 安全性——您可以确信您的私钥从未通过网络传输过。
- 多个区域的管理 - 您可以跨多个 AWS 区域使用相同的公钥。 [强调我的]
这种方法确实非常有益/方便 - 我已经使用了一段时间,它大大简化了跨多个区域和帐户的 EC2 使用。
Eric Hammond 在他的文章Uploading Personal ssh Keys to Amazon EC2中提供了更多详细信息和简短教程:
亚马逊最近推出了将您自己的 ssh 公钥上传到 EC2 的功能,以便在启动时将其传递给新实例。在此之前,您必须始终使用由 Amazon 生成的 ssh 密钥对。
因此,我建议阅读他的文章,了解实现此目标所需的(少数且简单的)步骤。
如果您可以导入自己的 RSA 公钥,那么您可以跨区域共享 Amazon 生成的密钥:
如果您想在 AWS 控制台中创建 ssh 密钥对并将此密钥对上传到所有其他区域。
在控制台中创建一个新的 ssh 密钥对或使用您已经拥有的密钥对。
从 ssh 私钥生成 ssh 公钥(pem > pub)
$ ssh-keygen -y -f ~/.ssh/MySSHKeyPair.pem >> ~/.ssh/MySSHKeyPair.pub
将 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
获取所有区域中所有 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
AWS 生成的密钥可以转移到另一个区域:
使用此命令
ec2-import-keypair keypair-name --public-key-file ~/.ssh/authorized_keys --region aws-region
通过上述步骤,我将 AWS 创建的密钥从新加坡地区转移到俄勒冈地区,同样的密钥对我来说非常好用。
请同时访问此链接:
您还可以使用 将aws cli
密钥对传输到另一个区域。
aws ec2 import-key-pair --key-name my-key --public-key-material file://~/.ssh/id_rsa.pub --region my-region
有关更多信息,请参阅GitHub 上的此问题。
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)**
您也可以通过扩展来执行区域列表以动态获取区域列表...
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
将我需要复制的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