无法获取从 AMI 创建的实例的密码

Unable to get password for the instance created from AMI

以下代码成功创建实例。

try {
        $ec2 = new Ec2Client($options);
        $result = $ec2->runInstances([
             'ImageId' => 'ami-xxxxxxxx', // REQUIRED
             'InstanceInitiatedShutdownBehavior' => 'stop',
             'InstanceType' => 't1.micro',
             'MaxCount' => 1, // REQUIRED
             'MinCount' => 1, // REQUIRED,
             'EbsOptimized' => false, // SEE COMMENT
             'KeyName' => 'TestCloud',
             'Monitoring' => [
                'Enabled' => true // REQUIRED
              ]
        ]);
    }catch(Exception $exc) {
        var_dump($exc);
    }

但是当我尝试从 aws console 检索密码以连接 (RDP) 到该实例时,我收到以下错误:

Password is not available.
This instance was launched from a custom AMI, or the default password has changed. 
A password cannot be retrieved for this instance. If you have forgotten your password, 
you can reset it using the Amazon EC2 configuration service. For
more information, see Passwords for a Windows Server Instance.

之前我直接从 运行 EC2 实例创建了 AMI

这可能是什么原因?遗漏了什么?

Get Windows Password 工具只能用于 对 Windows EC2 实例的初始访问

为管理员帐户生成一个随机密码。然后使用用于启动实例的密钥对的 public 一半加密密码。然后通过 系统日志 将加密密码提供回 EC2。 (在管理控制台中使用获取系统日志命令经常可以看到。)

要访问服务器,密码需要用密钥对的私有部分解密。这可以通过 Get Windows Password 操作在控制台中完成。

非常重要:访问服务器后,更改密码!或者,更好的是,将实例添加到 Active目录域。加密密码旨在提供对实例的 初始 访问。它不应用作持续的安全机制。

鉴于您收到的错误消息,该实例似乎未通过系统日志发送加密密码。因此,EC2 无法对其进行解密。这可能是因为 AMI 不是从 AWS 提供的图像创建的(它使用 EC2Config 创建加密密码并通过系统日志报告),或者实例上的配置已以某种方式更改为不运行 该实用程序。

This instance was launched from a custom AMI!

使用CUSTOM AMI时请仔细阅读: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/troubleshooting-windows-instances.html

The accounts and passwords provided are based on the AMI that you used to launch the instance. You can either retrieve the auto-generated password for the Administrator account, or use the account and password that were in use in the original instance from which the AMI was created.

您不需要生成新密码,AWS 也不允许。您只需使用在前一个实例上设置的相同 RDP 密码连接到新实例,即可生成当前 AMI。

这是正确的行为。假设您自定义整个 AWS EC2,您不希望任何人轻易覆盖对 EC2 实例的 RDP 访问。

这也意味着,在您自定义实例并弄乱密码后,您将无法从中创建快照,希望 AWS 会在服务器内部重置密码。

如果您从自定义 AMI(即快照)启动实例,则此功能不再可用。您将需要重置密码。

如果您丢失了 Windows 管理员密码并且正在使用 Windows Server 2016 之前的 Windows AMI,您可以使用 EC2Config 服务生成新密码 -> Resetting windows Admin Pass with EC2Config

如果您丢失了 Windows 管理员密码并且正在使用 Windows Server 2016 或更高版本的 AMI,您可以使用 EC2Rescue 工具,它使用 EC2Launch 服务生成新密码 - > Resetting windows Admin Pass with EC2Launch