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

最終更新日: 2020 年 6 月 16 日

同じ SSH キーペアを使用して、すべての AWS リージョンの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにアクセスしたいです。どうすればよいですか?

簡単な説明

すべての AWS リージョンで 1 つの 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 シェルで作業していること、および 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 を開きます。

読み込むを選択して、プライベートキーファイルを読み込みます。

パブリックキーを保存を選択します。

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