

• Amazon Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# 配置 SSM Agent以使用 Windows Server 实例的代理


本主题中的信息适用于在 2016 年 11 月或之后创建但*不*使用 Nano 安装选项的 Windows Server 实例。请注意，如果打算使用 Session Manager，HTTPS 代理服务器不受支持。

**开始前的准备工作**  
在将 SSM Agent 配置为使用代理之前，请注意以下重要信息。

在以下过程中，您将运行命令，以将 SSM Agent 配置为使用代理。该命令包含带有 IP 地址的 `no_proxy` 设置。该 IP 地址是 Systems Manager 的实例元数据服务（IMDS）端点。如果您未指定 `no_proxy`，则对 Systems Manager 的调用将使用代理服务的身份（如果已启用 IMDSv1 回退），或者对 Systems Manager 的调用失败（如果强制执行 IMDSv2）。
+ 对于 IPv4，请指定 `no_proxy=169.254.169.254`。
+ 对于 IPv6，请指定 `no_proxy=[fd00:ec2::254]`。实例元数据服务的 IPv6 地址与 IMDSv2 命令兼容。IPv6 地址只能在基于 [Amazon Nitro System](https://docs.amazonaws.cn/ec2/latest/instancetypes/ec2-nitro-instances.html) 构建的实例上访问。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[实例元数据服务版本 2 的工作原理](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html)。

**配置 SSM Agent以使用代理**

1. 使用远程桌面或 Windows PowerShell，连接到您希望配置的实例，以使用代理。

1. 在 PowerShell 中运行以下命令块。将 *hostname* 和 *port* 替换为有关代理的信息。

   ```
   $serviceKey = "HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent"
   $keyInfo = (Get-Item -Path $serviceKey).GetValue("Environment")
   $proxyVariables = @("http_proxy=hostname:port", "https_proxy=hostname:port", "no_proxy=IP address for instance metadata services (IMDS)")
   
   if ($keyInfo -eq $null) {
       New-ItemProperty -Path $serviceKey -Name Environment -Value $proxyVariables -PropertyType MultiString -Force
   } else {
       Set-ItemProperty -Path $serviceKey -Name Environment -Value $proxyVariables
   }
   
   Restart-Service AmazonSSMAgent
   ```

运行上述命令后，您可以查看 SSM Agent 日志以确认已应用代理设置。日志中的条目类似于以下内容。有关 SSM Agent 日志的更多信息，请参阅 [查看 SSM Agent 日志](ssm-agent-logs.md)。

```
2020-02-24 15:31:54 INFO Getting IE proxy configuration for current user: The operation completed successfully.
2020-02-24 15:31:54 INFO Getting WinHTTP proxy default configuration: The operation completed successfully.
2020-02-24 15:31:54 INFO Proxy environment variables:
2020-02-24 15:31:54 INFO http_proxy: hostname:port
2020-02-24 15:31:54 INFO https_proxy: hostname:port
2020-02-24 15:31:54 INFO no_proxy: IP address for instance metadata services (IMDS)
2020-02-24 15:31:54 INFO Starting Agent: amazon-ssm-agent - v2.3.871.0
2020-02-24 15:31:54 INFO OS: windows, Arch: amd64
```

**重置 SSM Agent的代理配置**

1. 使用远程桌面或 Windows PowerShell，连接到要配置的实例。

1. 如果使用远程桌面连接，则以管理员的身份启动 PowerShell。

1. 在 PowerShell 中运行以下命令块。

   ```
   Remove-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent -Name Environment
   Restart-Service AmazonSSMAgent
   ```

## SSM Agent代理设置优先级


在 Windows Server 实例上为 SSM Agent配置代理设置时，务必了解在启动 SSM Agent 时会评估这些设置并将它们应用于代理配置。您为 Windows Server 实例配置代理设置的方式可以确定其他设置是否可以取代您的预期设置。座席使用其找到的第一个代理设置。

**重要**  
SSM Agent 使用 HTTPS 协议进行通信。因此，您必须使用下面的一个设置选项来配置 `HTTPS proxy` 参数。

SSM Agent 代理设置的评估顺序如下。

1. `AmazonSSMAgent` 注册表设置 (`HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent`)

1. `System` 环境变量（`http_proxy`、`https_proxy`、`no_proxy`）

1. `LocalSystem` 用户帐户环境变量（`http_proxy`、`https_proxy`、`no_proxy`）

1. 浏览器设置（`HTTP`、`secure`、`exceptions`）

1. `WinHTTP` 代理设置（`http=`、`https=`、`bypass-list=`）

## SSM Agent 代理设置和 Systems Manager 服务


如果已将 SSM Agent 配置为使用代理，并且正在使用 Amazon Systems Manager 工具（例如 Run Command 和Patch Manager），而这些工具在 Windows Server 实例上执行期间将使用 PowerShell 或 Windows Update 客户端，请配置其他代理设置。否则，操作可能会失败，因为 PowerShell 和 Windows Update 客户端使用的代理设置不是从 SSM Agent 代理配置继承的。

对于 Run Command，在 Windows Server 实例上配置 `WinINet` 代理设置。将按会话提供 `[System.Net.WebRequest]` 命令。要将这些配置应用于在 Run Command 中运行的后续网络命令，这些命令必须位于同一 `aws:runPowershellScript` 插件输入中其他 Powershell 命令之前。

以下 PowerShell 命令返回当前 `WinINet` 代理设置并将您的代理设置应用于 `WinINet`。

```
[System.Net.WebRequest]::DefaultWebProxy

$proxyServer = "http://hostname:port"
$proxyBypass = "169.254.169.254"
$WebProxy = New-Object System.Net.WebProxy($proxyServer,$true,$proxyBypass)

[System.Net.WebRequest]::DefaultWebProxy = $WebProxy
```

对于 Patch Manager，配置系统范围的代理设置，以便 Windows Update 客户端能够扫描和下载更新。建议您使用 Run Command 运行以下命令，因为这些命令会在系统账户上运行，并且这些设置会应用于整个系统范围。以下 `netsh` 命令返回当前代理设置，并将您的代理设置应用于本地系统。

```
netsh winhttp show proxy

netsh winhttp set proxy proxy-server="hostname:port" bypass-list="169.254.169.254"
```

有关使用 Run Command 的更多信息，请参阅[Amazon Systems Manager Run Command](run-command.md)。