从AMI启动的AWS EC2 Windows实例原有登录失效,启动需指定密钥对原因咨询
自定义EC2 Windows AMI登录问题的原因分析
核心原因拆解
- 源AMI配置变更
若近期重新制作过该AMI,可能在源实例上修改了EC2Launch/EC2Config服务的设置,比如开启了强制密钥对关联选项,或是调整了Windows密码策略。这类配置会被AMI继承,导致新实例启动时必须绑定密钥对,且不再继承源实例的登录密码。 - AWS后台服务更新
AWS对Windows实例初始化服务(EC2Launch v2或旧版EC2Config)的逻辑可能有更新,现在部分场景下,即使是自定义AMI,也强制要求通过密钥对来生成或管理登录密码,原有的密码继承机制被覆盖。 - 账户级安全策略限制
你的AWS账户可能新增了IAM策略或组织SCP,强制所有EC2实例启动时必须指定密钥对。这种情况下,启动AMI的按钮会被禁用直到选择密钥对,同时原密码继承逻辑失效,导致旧密码无法登录。 - AMI权限或共享问题
如果该AMI是从其他账户共享而来,或是修改过AMI的权限设置,AWS的安全校验会触发强制密钥对绑定,且跨账户的AMI无法继承源实例的密码信息。
验证与修复步骤
- 检查源实例的初始化配置:登录源Windows实例,查看
C:\ProgramData\Amazon\EC2Launch\config\LaunchConfig.json(EC2Launch v2)或EC2Config服务的设置,确认是否开启了SetPassword或强制密钥对的相关选项。 - 排查账户策略:在IAM控制台检查针对
ec2:RunInstances的策略,是否限制了必须传入KeyName参数;同时查看组织SCP是否有相关强制规则。 - 重新制作测试AMI:用当前可正常登录的Windows实例制作新AMI,启动新实例后观察是否仍需强制密钥对,以及密码是否能正常继承,以此排除旧AMI的配置问题。
- 重置实例密码:若已启动实例,可通过EC2控制台的「获取Windows密码」功能,使用指定的密钥对解密生成新密码,尝试登录。
内容的提问来源于stack exchange,提问作者Leigh Wardle
相关产品推荐
相关产品推荐

