无法获取从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

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

This instance was launched from a custom AMI!

当您使用CUSTOM AMI时,请通读:http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/troubleshooting-windows-instances.html

提供的帐户和密码基于用于启动实例的AMI。您可以为管理员帐户检索自动生成的密码,也可以使用在创建AMI的原始实例中使用的帐户和密码

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

这是正确的行为。想象一下,你定制了整个AWS EC2,你不希望任何人轻易覆盖对EC2实例的RDP访问。

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

Get Windows Password功能应仅用于对Windows EC2实例的初始访问

将为管理员帐户生成一个随机密码。然后使用用于启动实例的密钥对的公共部分对密码进行加密。然后通过系统日志将加密的密码提供回EC2。(您经常可以使用管理控制台中的GetSystemLog命令来查看它。)

要访问服务器,需要使用密钥对的私有一半对密码进行解密。这可以通过获取Windows密码操作在控制台中完成。

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

鉴于您收到的错误消息,实例似乎没有通过系统日志发送加密密码。因此,EC2无法解密它。这可能是因为AMI不是根据AWS提供的映像创建的(该映像使用EC2Config创建加密密码并通过系统日志报告),或者实例上的配置在某种程度上发生了更改,无法运行该实用程序。

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

如果您丢失了Windows管理员密码,并且正在使用Windows Server 2016之前的Windows AMI,则可以使用EC2Config服务生成新密码->使用EC2Config 重置Windows管理员通行证

如果您丢失了Windows管理员密码,并且正在使用Windows Server 2016或更高版本的AMI,则可以使用EC2Regue工具,该工具使用EC2Launch服务生成新密码->使用EC2Launch重置Windows管理员通行证

如果您已经从自定义窗口实例创建了AMI然后在创建图像之前:

  • 使用pem文件获取密码
  • 将密码保存在某个位置
  • 现在创建图像并使用您保存的密码

从WIN实例创建AMI后,您以后将不会获得密码。