AWS の EC2 のキーペアの登録(Windows)

EC2 ではキーペア(公開鍵と秘密鍵)が必要になりますが、
Management Console から自動生成せずに
手元で生成したキーペアを AWS へ登録する方法のメモです。

実際の注意点などは

http://docs.amazonwebservices.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-ImportKeyPair.html

http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/index.html?ApiReference-query-ImportKeyPair.html

に記載されています。

 

Windows での方法の一例です。
(Putty ですが日本語パッチを当てた状態での説明となっています。)

まず PuTTY の鍵生成アプリ(puttygen.exe)を使用して鍵を生成します。

  1. 鍵を生成
    • SSH-2 RSA の形式の鍵を選択してください。
    • サポートされている鍵の長さですが
      現時点では 1024,2048,4096 のどれかを選択してください。
      (REST API を使用する場合は 1024 だけのサポートのようです。)
  2. パスフレーズを設定

厄介なのが ec2-api-tools の ec2-import-keypair で公開鍵を登録なのですが
この段階ですでにキーペアが必要になります…

ec2-api-tools は http://aws.amazon.com/developertools から
Amazon EC2 API Tools で探し出せます。
(http://aws.amazon.com/developertools/351)

EC2 自体は REST API をサポートしているのですが、
なぜかコンソールツール(ec2-api-tools)はリニューアルされていません。

PHP で REST API を使用してキーのアップロードを行うスクリプト例

<?php

require_once 'AWSSDKforPHP/sdk.class.php';

$ec2 = new AmazonEC2();
// リージョンの設定は必須です。
$ec2->set_region( AmazonEC2::REGION_APAC_NE1 );
$ec2->debug_mode = true;
$ec2->use_ssl = true;

$key_name = 'キーの名前';
$public_key_material = file_get_contents('公開鍵が含まれているファイル名');

$response = $ec2->import_key_pair( $key_name, $public_key_material );
var_dump( $response );
if ( $response->isOK() )
{
  echo "success.";
}
else
{
  echo "failed";
}

?>

 

 

REST API を使用してキーペアを登録する場合は鍵の長さが 1024 ビットでない場合は

for parameter PublicKeyMaterial is invalid. Length exceeds maximum of 1024.

こんなエラーメッセージが帰ってきます。

1024 ビットより大きい長さの鍵を使用したい場合は
ec2-api-tools でコマンドラインから登録が必要みたいです…

This entry was posted in AWS, AWSSDKforPHP, cloud, EC2, PHP. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>