將 SSM Agent 設定為使用 Windows Server 執行個體的代理 - AWS Systems Manager

將 SSM Agent 設定為使用 Windows Server 執行個體的代理

本主題中的資訊適用於在 2016 年 11 月或之後建立的使用 Nano 安裝選項的 Windows Server 執行個體。如果您打算使用 Session Manager,請注意不支援 HTTPS 代理伺服器。

注意

從 2020 年 1 月 14 日起,Microsoft 不再支援 Windows Server 2008 的功能或安全性更新。Windows Server 2008 和 2008 R2 的舊版 Amazon Machine Images (AMIs) 仍包含預先安裝的 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 系統的執行個體上進行存取。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的 How Instance Metadata Service Version 2 works

若要設定 SSM Agent 以使用代理
  1. 使用遠端桌面或 Windows PowerShell 連接到您要設定為使用代理的執行個體。

  2. 在 PowerShell 中執行下列命令區塊。使用與您的代理有關的資訊取代主機名稱連接埠

    $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 記錄檔以確認已套用 Proxy 設定。記錄檔中的項目看起來如下所示。如需 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 代理組態
  1. 使用遠端桌面或 Windows PowerShell 連接到您要設定的執行個體。

  2. 如果您使用遠端桌面連接,請將 PowerShell 啟動為系統管理員。

  3. 在 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)

  2. System 環境變數 (http_proxyhttps_proxyno_proxy)

  3. LocalSystem 使用者帳戶環境變數 (http_proxyhttps_proxyno_proxy)

  4. 瀏覽器設定 (HTTPsecureexceptions)

  5. WinHTTP 代理設定 (http=https=bypass-list=)

SSM Agent 代理設定和 Systems Manager 服務

如果您將 SSM Agent 設定為使用代理,而且您在 Windows Server 執行個體上使用的 AWS Systems Manager 功能 (例如 Run Command 和 Patch Manager) 在執行期間會使用 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