配置 SSM Agent以使用 Windows Server 实例的代理
本主题中的信息适用于在 2016 年 11 月或之后创建但不使用 Nano 安装选项的 Windows Server 实例。请注意,如果打算使用 Session Manager,HTTPS 代理服务器不受支持。
注意
从 2020 年 1 月 14 日开始,Microsoft 不再为 Windows Server 2008 的功能或安全性更新提供支持。原有 Amazon Machine Images (AMIs) for Windows Server 2008 和 2008 R2 仍包含预安装的 SSM Agent 2 版,但 Systems Manager 不再正式支持 2008 版,并且不再针对更新这些 Windows Server 版本更新代理。此外,SSM Agent 版本 3 可能不兼容 Windows Server 2008 和 2008 R2 上的所有操作。适用于 Windows Server 2008 版的最后正式支持的 SSM Agent 版本为 2.3.1644.0。
开始前的准备工作
在将 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 地址只能在基于 AWS Nitro System 构建的实例上访问。有关更多信息,请参阅《Amazon EC2 用户指南》中的实例元数据服务版本 2 的工作原理。
配置 SSM Agent以使用代理
-
使用远程桌面或 Windows PowerShell,连接到您希望配置的实例,以使用代理。
-
在 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 日志。
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的代理配置
-
使用远程桌面或 Windows PowerShell,连接到要配置的实例。
-
如果使用远程桌面连接,则以管理员的身份启动 PowerShell。
-
在 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 代理设置的评估顺序如下。
-
AmazonSSMAgent
注册表设置 (HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent
) -
System
环境变量(http_proxy
、https_proxy
、no_proxy
) -
LocalSystem
用户帐户环境变量(http_proxy
、https_proxy
、no_proxy
) -
浏览器设置(
HTTP
、secure
、exceptions
) -
WinHTTP
代理设置(http=
、https=
、bypass-list=
)
SSM Agent 代理设置和 Systems Manager 服务
如果您将 SSM Agent 配置为使用代理,并且正在使用 AWS 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 的更多信息,请参阅AWS Systems Manager Run Command。