同じ SSH キーペアを使用して、すべての AWS リージョンの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにアクセスしたいです。どうすればよいですか?
簡単な説明
すべての AWS リージョンで 1 つの 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 シェルで作業していること、および AWS CLI に有効なアクセス権を持つユーザーが設定されていることを確認します。
2. 次のコマンドを実行して AWS_REGIONS を設定します。
$ AWS_REGIONS="$(aws ec2 describe-regions --query 'Regions[].RegionName' --output text)"
注: ZSH シェルを使用している場合は、単語分割オプションを有効にして、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 を開きます。
[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 ファイル名に置き換えます。
関連情報
AWS CLI コマンドリファレンス - import-key-pair
AWS サービスエンドポイント
Import-EC2KeyPair コマンドレット