如何为我的所有 AWS 区域使用同一个 SSH 密钥对?

上次更新时间:2020 年 6 月 16 日

我想使用相同的 SSH 密钥对访问我在所有 AWS 区域中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。该如何操作?

简短描述

要为所有 AWS 区域使用同一个 SSH 密钥对,请首先通过 SSH 私钥生成一个 SSH 公钥。然后,将密钥导入到每个 AWS 区域中。

解决方法

如果您还没有,则创建 SSH 密钥对

Linux

1.    通过 SSH 私钥 (.pem) 文件生成 SSH 公钥 (.pub) 文件:

$ ssh-keygen -y -f MyKeyPair.pem > $HOME/.ssh/id_rsa_MyKeyPair.pub

注意:请将 MyKeyPair.pem 替换为您的私有 .pem 文件的名称。确保您使用的是 bash shell,并且您使用具有有效访问权限的用户配置了 AWS CLI。

2.    运行以下命令以设置 AWS_REGIONS

$ AWS_REGIONS="$(aws ec2 describe-regions --query 'Regions[].RegionName' --output text)"

3.    运行以下命令来将 SSH 公钥导入区域:

$ for each_region in ${AWS_REGIONS} ; do aws ec2 import-key-pair --key-name MyKeyPair --public-key-material fileb://$HOME/.ssh/id_rsa_MyKeyPair.pub --region $each_region ; done

Windows

1.    通过 SSH 私钥 (.pem) 文件生成 SSH 公钥 (.pub) 文件:

打开 PuTTYgen。

选择 Load 加载您的私钥文件。

选择 Save public key

2.    通过运行以下命令,将 SSH 公钥导入所需的 AWS 区域:

$PubFile = Get-Content .\MyKeyPair.pub -raw
$Key = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($PubFile))
foreach ($Region in (Get-AWSRegion).Region) {Import-EC2KeyPair -KeyName MyKeyPair -PublicKeyMaterial $Key -Region $Region}

注意:请将 MyKeyPair.pub 替换为您的公共 SSH 文件名。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?