すべての AWS リージョンで 1 つの SSH キーペアを使用する方法を教えてください。

最終更新日: 2021 年 1 月 4 日

同じ 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 ファイル名に置き換えます。