我想使用相同的 SSH 金鑰對來存取我在所有 AWS 區域中的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。我該怎麼做?
簡短說明
若要在所有 AWS 區域使用單一 SSH 金鑰對,請先從 SSH 私有金鑰產生 SSH 公有金鑰。然後,將金鑰匯入到每個 AWS 區域。
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確保您使用的是最新的 AWS CLI 版本。
解決方法
如果您還沒有,請建立 SSH 金鑰對。
Linux
1. 從 SSH 私有金鑰 (.pem) 檔案產生 SSH 公有金鑰 (.pub) 檔案:
$ ssh-keygen -y -f MyKeyPair.pem > $HOME/.ssh/id_rsa_MyKeyPair.pub
**注意:**請使用您私有 .pem 檔案的名稱取代 MyKeyPair.pem。請確保您使用的是 bash Shell,並且使用具有有效存取權限的使用者身分設定 AWS CLI。
2. 執行下列命令以設定 AWS_REGIONS:
$ AWS_REGIONS="$(aws ec2 describe-regions --query 'Regions[].RegionName' --output text)"
**注意:**如果您使用的是 ZSH Shell,請啟用字詞分割,以便 for loop 命令會正確重複每個區域名稱。請使用下列命令來啟用字詞分割:
$ 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。
選擇載入以載入您的私有金鑰檔案。
選擇儲存公有金鑰。
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}
**注意:**請使用您的公有 SSH 檔案名稱取代 MyKeyPair.pub。
相關資訊
AWS CLI 命令參考 – import-key-pair
AWS 服務端點
Import-EC2KeyPair Cmdlet