AWS CLI の場合

$ aws ec2 get-password-data --instance-id  i-1234567890abcdef0 --priv-launch-key /path/to/mykey.pem

AWS SDK for Ruby の場合

SDK は復号化までしてくれないので CLI のソースを参考に自分でやる。

require "aws-sdk"
require "base64"
require "openssl"

ec2_resource = Aws::EC2::Resource.new
instance = ec2_resource.instance "i-1234567890abcdef0"
password_encrypted = instance.password_data.password_data
private_key = OpenSSL::PKey::RSA.new(File.read(File.expand_path("/path/to/mykey.pem")))

p private_key.private_decrypt(Base64.decode64(password_encrypted))

ec2ctl の場合

拙作のツールです。

$ ec2ctl --attributes instance_id,tag:Name,password --private-key-file "/path/to/mykey.pem"
{
  "time": "2017-01-17 12:18:07 +0900",
  "severity": "INFO",
  "ec2_instances_summary": [
    {
      "instance_id": "i-1234567890abcdef1",
      "tag:Name": "test_win1",
      "password": "5z(bo%%o5w$eiR2L!$=H6(jB=5VqUGrV"
    },
    {
      "instance_id": "i-1234567890abcdef2",
      "tag:Name": "test_win2",
      "password": "*HQTw2brpMGXO)dh9%rlXWTvGh@=b&GQ"
    }
  ]
}

元記事はこちら

EC2 Windows インスタンスの Administrator パスワードを取得する