如何为我的所有 AWS 区域使用同一个 SSH 密钥对?
上次更新时间:2021 年 1 月 4 日
我想使用相同的 SSH 密钥对访问我在所有 AWS 区域中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。该怎么做?
简短描述
要为所有 AWS 区域使用同一个 SSH 密钥对,请首先通过 SSH 私钥生成一个 SSH 公钥。然后,将密钥导入到每个 AWS 区域中。
注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请确保您使用的是最新版的 AWS CLI。
解决方法
如果您还没有,则创建 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)"
注意:如果您使用的是 ZSH shell,请启用单词拆分,以便 for 循环命令能够正确迭代每个区域名称。使用以下命令启用单词拆分:
$ setopt shwordsplit
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 文件名。