如何解决我的 Amazon EC2 Windows 实例上的 Windows 激活失败消息?

2 分钟阅读
0

我在 Amazon Elastic Compute Cloud(Amazon EC2)Windows 实例上收到了 Windows 激活失败消息。

简短描述

Windows 实例使用 AWS 上的 Microsoft 密钥管理服务(Microsoft KMS)进行激活。如果您的实例无法访问 Microsoft KMS 服务器,则您可能会收到一条 Windows 激活错误消息。要解决此错误消息,请使用下面的其中一种方法:

  • 使用 AWS Systems Manager Automation 文档激活 Windows
  • 手动激活 Windows

此外,如果您的 Windows 实例是从 Amazon Elastic Block Store(Amazon EBS)快照启动的,则该实例可能无法激活。Linux 实例支持 Amazon EBS 快照。因此,平台详细信息显示您的 Windows 实例的 Linux,并且由于账单代码不正确,KMS 路由被阻止。要解决此问题,请使用 Windows AMI 启动具有类似配置的 Amazon EC2 实例。然后,交换根卷。此操作更正了账单代码和平台详细信息,并成功完成 KMS 激活。

解决方法

使用 Systems Manager Automation 文档激活 Windows

AWSSupport-ActivateWindowsWithAmazonLicense Automation 文档会使用 Amazon 提供的许可证激活 Amazon EC2 Windows 实例。该自动化会检查实例的当前 Windows 状态,如果状态为非活动状态,则会激活 Windows。

注意: 此解决方法不适用于自带许可(BYOL)Windows 实例。要使用您自己的许可证,请参阅 AWS 上的 Microsoft 许可

要使用 Systems Manager Automation 文档激活 Windows,请完成下面的步骤:

  1. 登录到 Systems Manager 控制台。确保选择与需要激活的 Amazon EC2 Windows 实例相同的 AWS 区域。
  2. 从导航窗格中选择自动化,然后选择执行自动化
  3. 在搜索字段中,输入 ActivateWindowsWithAmazonLicense。选择 AWSSupport-ActivateWindowsWithAmazonLicense Automation 文档,然后选择下一步
  4. 对于执行自动化文档,选择简单执行
  5. 对于输入参数,打开显示交互式实例选取器
  6. 选择您的 EC2 实例。如果列表中没有显示您的实例,则表示未在 Systems Manager 中激活该实例。要解决此问题,请参阅为 Amazon EC2 实例设置 Systems Manager。如果不想激活 Systems Manager,或者输入参数中没有该实例,请关闭显示交互式实例选取器。对于 InstanceID,请输入受损 Amazon EC2 实例的 ID。对于 AllowOffline,请选择 True。如果将 AllowOffline 设置为 True,则 Amazon EC2 实例会停止并重启,并且实例存储卷中的数据会丢失。此外,如果不使用弹性 IP 地址,则公有 IP 地址会发生变化。
  7. 选择执行
  8. 要监控进度,请登录 Systems Manger 控制台,然后从导航窗格中选择自动化。选择正在运行的自动化,然后查看已执行步骤。要查看自动化输出,请展开输出

手动激活 Windows

要手动激活 Windows,请完成下面的步骤:

1.确认已安装最新版本的 EC2Config,然后执行下面的步骤:

对于 Windows Server 2012 R2 及更早版本,请运行下面的命令:

net stop ec2config
net start ec2config

对于 Windows Server 2016 及更高版本,请运行此命令来设置通往 Microsoft KMS 服务器的正确路由:

PS C:>Import-Module "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1"
PS C:>Add-Routes
PS C:>Set-ActivationSettings
PS C:>slmgr /ato

**注意:**如果在更新 EC2Config 并运行前面的命令后仍未激活 Windows,请继续执行后续步骤。

2.添加例外情况,以允许 Microsoft KMS 流量通过控制实例出站连接的所有防火墙或安全软件。Microsoft KMS 作为 TCP 流量在端口 1688 上运行。

3.设置 Windows KMS 设置密钥。为此,根据操作系统(OS)版本确定正确的 Microsoft KMS 客户端设置密钥。有关详细信息,请参阅 Microsoft 网站上的密钥管理服务(KMS)客户端激活和产品密钥。然后,以管理员身份运行下列命令:

slmgr.vbs /ipk <KMSSetupKey>

4.以管理员身份运行此命令来设置 Windows KMS 计算机 IP 地址:

**注意:**源自虚拟机导入的实例或较早的 Amazon EC2 Classic 实例可能没有 Microsoft KMS 服务器的正确 IP 地址。

slmgr.vbs /skms 169.254.169.250:1688

5.以管理员身份运行此命令来激活 Windows:

slmgr /ato

6.如果按照前面的步骤激活失败,请检查从实例到 Microsoft KMS 服务器的网络通信。从实例对 Microsoft KMS 服务器执行 telnet,然后打开 PowerShell 并输入以下命令:

Test-netconnection 169.254.169.250 -Port 1688
Test-netconnection 169.254.169.251 -Port 1688

**注意:**对于前面的命令,确认连接状态输出为 TcpTestSuccessed=True。如果连接状态输出为 False,则继续执行下一步。

7.确认这些注册表项具有正确的 Microsoft KMS 值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\SoftwareProtectionPlatform
KeyManagementServiceName - 169.254.169.250 or 169.254.169.251
KeyManagementServicePort - 1688

8.重复步骤 6。如果连接状态输出仍为 False,请检查 Amazon EC2 实例上的 Time Sync。有关详细信息,请参阅为 Windows 实例设置时间

相关信息

EC2Config 设置文件

了解 KMS(参见 Microsoft 网站)

在 Windows 实例上升级半虚拟化驱动程序

如何排查 EC2 Windows 实例的时间问题?

AWS 官方
AWS 官方已更新 6 个月前