Amazon EC2の公式AMI(Fedora8)利用時の注意点(SSH接続できなくなる場合有)

いやー、がっつりハマりました。

Amazon EC2でAmazonの公式AMI(Amazon Machine Image)のFedora8を使われている方、要注意です。
インスタンスを停止する場合など、イメージファイル化してAmazon S3へ転送されるかと思いますが、公式AMIのFedora8をベースとしている場合、上手くやらないとSSH接続できなくなる現象に遭遇する可能性があります。


具体的には、以下のAMI(Fedora8)を利用している場合。

ami-f51aff9c   ec2-public-images/fedora-8-i386-base-v1.06.manifest.xml
ami-2b5fba42   ec2-public-images/fedora-8-i386-base-v1.07.manifest.xml


状況としては、、、

  • Amazonの公式AMI(Fedora8)からインスタンス起動
  • インスタンス上で、自身のイメージファイル作成後、S3に保存し、インスタンス停止
  • S3に保存したイメージをロードして、インスタンス起動
  • インスタンスのイメージファイルを再度作成、再びS3に保存し、インスタンス停止
  • S3に2回目に保存したイメージをロードして、インスタンス起動
  • ↑インスタンスは起動するもSSHアクセス不可能(imkk)


# AMIの作成方法は、Amazon EC2/S3を使ってみた - 3.EC2起動後〜AMI作成が詳しいです。


SSH接続しようとするも、キーでの認証は通ってるようだが、その後プロンプトが返ってこずダンマリ状態
(異なるキーで認証しようとすると、Permission Deniedで弾かれてしまうので)

$ ssh -i rx7_server.id root@ec2-xx-xx-xx-xx.compute-1.amazonaws.com
The authenticity of host 'ec2-xx-xx-xx-xx.compute-1.amazonaws.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-xx-xx-xx-xx.compute-1.amazonaws.com,xx.xx.xx.xx' (RSA) to the list of known hosts.

・・・(ダンマリ)

↑の状態で、完全にダンマリ状態です。困った。
"ec2-describe-instances"で確認する限りは、"running"と正常に起動している模様。


色々調べてみたところ、Amazon Web Services Developer Connectionで同じ事象に遭遇している方を発見。

Server refused to allocate pty
http://developer.amazonwebservices.com/connect/message.jspa?messageID=89801


どうやら、"ec2-bundle-vol"で公式AMIのFedora8ベースのイメージファイルを作成するときに、/etc/fstabが正しくない状態で保存されてしまうという現象の模様。

/dev/sda1 / ext3 defaults 1 1
/dev/sda2 /mnt ext3 defaults 0 0
/dev/sda3 swap swap defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0

AMIのFedora8の正しい/etc/fstabは↑なのだが、、、

/dev/sda1 / ext3 defaults 1 1
/dev/sda2 /mnt ext3 defaults 0 0
/dev/sda3 swap swap defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0

"ec2-bundle-vol"のデフォルトオプションにて作成されたイメージファイルの/etc/fstabは↑のようになってしまうのが原因。

というわけで、"ec2-bundle-vol"コマンドの実行時に「--fstab /etc/fstab」オプションを付けると大丈夫でした。

ec2# ec2-bundle-vol -d /mnt --privatekey pk-xxxxx.pem --cert cert-xxxxx.pem --user xxxx-xxxx-xxxx --fstab /etc/fstab

↑のような感じでコマンドを実行すれば安心。

この現象は、AWSの中の人によると、"Amazon EC2 AMI Tools"の次のリリースでFixされるようです。

まとめ

クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)

クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)