

• 2026 年 4 月 30 日之後， AWS Systems Manager CloudWatch Dashboard 將不再可用。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板，就像現在一樣。如需詳細資訊，請參閱 [Amazon CloudWatch Dashboard 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS Systems Manager Session Manager
<a name="session-manager"></a>

Session Manager 是全受管 AWS Systems Manager 工具。透過 Session Manager，您可以管理 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體、邊緣裝置、內部部署伺服器和虛擬機器。您可以使用互動式一鍵式瀏覽器型 shell 或 AWS Command Line Interface (AWS CLI)。 Session Manager提供安全的節點管理，而不需要開啟傳入連接埠、維護堡壘主機或管理 SSH 金鑰。 Session Manager也可讓您遵守公司政策，這些政策需要受管節點的控制存取、嚴格的安全實務，以及具有節點存取詳細資訊的日誌，同時為最終使用者提供受管節點的簡單一鍵式跨平台存取。若要開始使用 Session Manager，請開啟 [Systems Manager 主控台](https://console.aws.amazon.com/systems-manager/session-manager)。在導覽窗格中，選擇 **Session Manager**。

## Session Manager 如何為我的組織帶來益處？
<a name="session-manager-benefits"></a>

Session Manager 提供這些好處：
+  **使用 IAM 政策集中存取對受管節點的控制權。**

  管理員有一個單一位置授權和撤銷對受管節點的存取權。使用 only AWS Identity and Access Management (IAM) 政策，您可以控制組織中哪些個別使用者或群組可以使用，Session Manager以及他們可以存取哪些受管節點。
+  **不需要開啟傳入連接埠和不需要管理堡壘主機或 SSH 金鑰** 

  開啟傳入 SSH 連接埠和遠端 PowerShell 連接埠讓您的受管節點上大幅增加未經授權實體或惡意命令在受管節點上執行的風險。Session Manager 可藉由關閉這些傳入連接埠協助您改善您的安全狀態，讓您免於管理 SSH 金鑰和憑證，堡壘主機以及跳接方塊。
+  **從主控台和 CLI 使用一鍵式受管節點存取** 

  您可以使用 AWS Systems Manager 主控台或 Amazon EC2 主控台，按一下即可啟動工作階段。您也可以使用 AWS CLI啟動執行單一命令或一系列命令的工作階段。由於受管節點的許可是透過 IAM 政策提供而不是 SSH 金鑰或其他機制，因此連線時間可大幅降低。
+  **連線到[混合多雲端](operating-systems-and-machine-types.md#supported-machine-types)環境中的 Amazon EC2 執行個體和非 EC2 節點** 

  您可以連線到[混合多雲端](operating-systems-and-machine-types.md#supported-machine-types)環境中的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體和非 EC2 節點。

  若要使用 Session Manager 連線到非 EC2 節點，您必須先啟用進階執行個體層。**使用進階執行個體層會產生費用。**但是，使用 Session Manager 連線到 EC2 執行個體無需額外收費。如需相關資訊，請參閱[設定執行個體方案](fleet-manager-configure-instance-tiers.md)。
+  **網路埠轉遞** 

  將受管節點內的任何連接埠重新引導至用戶端上的本機連接埠。之後，連線到本機連接埠並存取正在節點內執行的伺服器應用程式。
+  **對 Windows、Linux 和 macOS 的跨平台支援** 

  Session Manager 透過單一工具提供對 Windows、Linux 和 macOS 的支援。例如，您不需要在 Linux 和 macOS 受管節點上使用 SSH 用戶端或在 Windows Server 受管節點上使用 RDP 連線。
+  **記錄工作階段活動** 

  為了滿足組織中的操作或安全需求，您可能需要提供與您的受管節點做連結的記錄和在受管節點上執行的指令記錄。當組織中的使用者開始或結束工作階段時，您也會接收到通知。

  記錄功能透過與以下 AWS 服務的整合所提供：
  + **AWS CloudTrail** – AWS CloudTrail 擷取 中 Session Manager API 呼叫的相關資訊， AWS 帳戶 並將其寫入您指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中存放的日誌檔案。一個儲存貯體可用於您帳戶中所有 CloudTrail 日誌。如需詳細資訊，請參閱[使用 記錄 AWS Systems Manager API 呼叫 AWS CloudTrail](monitoring-cloudtrail-logs.md)。
  + **Amazon Simple Storage Service** - 您可以選擇將工作階段日誌資料存放在所選的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中，用於偵錯和疑難排解。透過使用 AWS KMS key，日誌資料可包含或不含加密金鑰傳送到您的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。如需詳細資訊，請參閱[使用 Amazon Simple Storage Service (Amazon S3) (主控台) 記錄工作階段資料](session-manager-logging-s3.md)。
  + **Amazon CloudWatch Logs** - CloudWatch Logs 可讓您從各種 AWS 服務中監控、存放及存取日誌檔案。您可以將工作階段日誌資料傳送到 CloudWatch Logs 日誌群組，用於偵錯和疑難排解。日誌資料可以傳送到您的日誌群組，無論是否使用 KMS 金鑰進行 AWS KMS 加密。如需詳細資訊，請參閱[使用 Amazon CloudWatch Logs (主控台) 記錄工作階段資料。](session-manager-logging-cloudwatch-logs.md)。
  + **Amazon EventBridge** 和 **Amazon Simple Notification Service** – EventBridge 可讓您設定規則，以偵測您指定的 AWS 資源何時發生變更。您可以建立一個規則來偵測當您的組織中的使用者開始或停止工作階段，然後透過 Amazon SNS (例如，文字或電子郵件訊息) 接收到有關事件的通知。您也可以設定 CloudWatch 事件來啟動其他回應。如需詳細資訊，請參閱[使用 Amazon EventBridge (主控台) 監控工作階段活動](session-manager-auditing.md#session-manager-auditing-eventbridge-events)。
**注意**  
透過連接埠轉送或 SSH 連線的 Session Manager 工作階段無法使用日誌記錄功能。這是因為 SSH 會在 和 Session Manager端點之間建立的安全 TLS AWS CLI 連線內加密所有工作階段資料，並且Session Manager僅做為 SSH 連線的通道。

## 誰應該使用Session Manager？
<a name="session-manager-who"></a>
+ 任何想要改善其安全狀態、透過集中受管節點的存取控制來降低營運開銷，以及減少傳入節點存取 AWS 的客戶。
+ 資訊安全專家想要監控並追蹤受管節點存取及活動、關閉受管節點的傳入連接埠、或啟動非公有 IP 地址直接連接受管節點。
+ 管理員想要從單一位置取得或撤銷授權或有意替 Linux、macOS 和 Windows Server 受管節點的使用者提供解決方案。
+ 想要從瀏覽器按一下或 AWS CLI 不需要提供 SSH 金鑰即可連線到受管節點的使用者。

## Session Manager有哪些主要功能？
<a name="session-manager-features"></a>
+ **對 Windows Server、Linux 和 macOS 受管節點的支援**

  Session Manager 可讓您建立安全連線，以連線到 Amazon Elastic Compute Cloud (EC2) 執行個體、邊緣裝置、內部部署伺服器和虛擬機器。如需支援的作業系統類型清單，請參閱 [設定 Session Manager](session-manager-getting-started.md)。
**注意**  
針對現場部署機器所提供的 Session Manager 支援僅適用於進階執行個體層。如需相關資訊，請參閱[開啟 advanced-instances 方案](fleet-manager-enable-advanced-instances-tier.md)。
+  **主控台、CLI 和 SDK 存取 Session Manager 功能** 

  您可以利用下列方式來使用 Session Manager：

  **AWS Systems Manager 主控台**包含存取所有 Session Manager 功能，管理員和終端使用者皆適用。您可以使用 Systems Manager 主控台來執行任何與您的工作階段相關的任務。

  Amazon EC2 主控台能讓終端使用者連線至已獲得工作階段許可的 EC2 執行個體。

  **AWS CLI** 包含存取 Session Manager 功能，適用於最終使用者。您可以使用 來啟動工作階段、檢視工作階段清單，以及永久結束工作階段 AWS CLI。
**注意**  
若要使用 AWS CLI 執行工作階段命令，您必須使用 CLI 的 1.16.12 版 （或更新版本），而且您必須在本機電腦上安裝 Session Manager外掛程式。如需相關資訊，請參閱[安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)。若要在 GitHub 上檢視該外掛程式，請參閱 [session-manager-plugin](https://github.com/aws/session-manager-plugin)。
+  **IAM 存取控制** 

  透過使用 IAM 政策，您可以控制組織中哪些成員可以初始化受管節點到工作階段裡以及那些節點他們可以存取。您也可以提供對受管節點的臨時存取權。例如，您可能想要提供的現場值班工程師 (或一組值班工程師) 只在值班時存取其產品伺服器。
+  **記錄支援** 

  Session Manager 透過整合多個其他 AWS 服務，為您提供在 AWS 帳戶 中記錄工作階段歷史記錄的選項。如需詳細資訊，請參閱[記錄工作階段活動](session-manager-auditing.md)及[啟用和停用工作階段記錄](session-manager-logging.md)。
+  **可設定的 shell 描述檔** 

  Session Manager 提供在工作階段中設定偏好設定的選項。這些可自訂的描述檔可讓您定義偏好設定，例如 shell 偏好設定、環境變數、工作目錄，以及在工作階段啟動時執行的多個命令。
+  **客戶金鑰資料加密支援** 

  您可以設定 Session Manager 來加密您傳送到 Amazon Simple Storage Service (Amazon S3) 儲存貯體或串流到 CloudWatch Logs 日誌群組的工作階段資料日誌。您也可以將 Session Manager 設定為以進一步加密在工作階段期間用戶端機器與受管節點之間傳輸的資料。如需相關資訊，請參閱[啟用和停用工作階段記錄](session-manager-logging.md)和[進行工作階段偏好設定](session-manager-getting-started-configure-preferences.md)。
+  **AWS PrivateLink 支援沒有公有 IP 地址的受管節點** 

  您也可以使用 為 Systems Manager 設定 VPC 端點 AWS PrivateLink ，以進一步保護您的工作階段。 會 AWS PrivateLink 限制受管節點、Systems Manager 和 Amazon EC2 與 Amazon 網路之間的所有網路流量。如需詳細資訊，請參閱[使用適用於 Systems Manager 的 VPC 端點來改善 EC2 執行個體的安全性](setup-create-vpc.md)。
+  **通道** 

  在工作階段中，使用 Session-type AWS Systems Manager (SSM) 文件，在用戶端機器的本機連接埠與受管節點的遠端連接埠之間通道流量，例如 http 或自訂通訊協定。
+  **互動式命令** 

  建立 Session-type SSM 文件，使用工作階段來以互動方式執行單一命令，讓您具備管理使用者能在受管節點上進行何種作業的方式。

## 什麼是工作階段？
<a name="what-is-a-session"></a>

工作階段是使用 Session Manager 對受管節點進行的連線。工作階段是以用戶端 (您) 與遠端受管節點 (串流命令的輸入和輸出) 之間的安全雙向通訊通道為基礎。用戶端和受管節點之間的流量會使用 TLS 1.2 加密，並使用 SigV4 來簽署建立連線的請求。這種雙向通訊允許交互式 bash 並允許 PowerShell 存取受管節點。您也可以使用 AWS Key Management Service (AWS KMS) 金鑰進一步加密超出預設 TLS 加密的資料。

例如，假設 John 是一位在您的 IT 部門值班的工程師。他接收一個事件通知，需要他遠端連接到受管節點，例如需要故障排除的執行失敗或直接在節點上變更簡單的組態選項。John 使用 AWS Systems Manager 主控台、Amazon EC2 主控台或 AWS CLI，啟動將他連線到受管節點的工作階段，在完成任務所需的節點上執行命令，然後結束工作階段。

當 John 傳送第一個命令來開始工作階段時，Session Manager 服務會驗證他的 ID、驗證 IAM 政策給予他的許可全縣，檢查組態設定 (例如，驗證工作階段的許可限制) 和傳送訊息到 SSM Agent 以開啟雙向連線。在連線建立和 John 樹入下一個命令後、從 SSM Agent 上輸出並命令且傳到此通訊通道然後傳回他的本機電腦。

**Topics**
+ [Session Manager 如何為我的組織帶來益處？](#session-manager-benefits)
+ [誰應該使用Session Manager？](#session-manager-who)
+ [Session Manager有哪些主要功能？](#session-manager-features)
+ [什麼是工作階段？](#what-is-a-session)
+ [設定 Session Manager](session-manager-getting-started.md)
+ [使用 Session Manager](session-manager-working-with.md)
+ [記錄工作階段活動](session-manager-auditing.md)
+ [啟用和停用工作階段記錄](session-manager-logging.md)
+ [工作階段文件結構描述](session-manager-schema.md)
+ [Session Manager 疑難排解](session-manager-troubleshooting.md)

# 設定 Session Manager
<a name="session-manager-getting-started"></a>

在您使用 AWS Systems Manager Session Manager 連接到您帳戶裡的受管節點之前，請完成以下步驟。

**Topics**
+ [步驟 1：完成Session Manager事前準備](session-manager-prerequisites.md)
+ [步驟 2：為 Session Manager 確認或新增執行個體許可](session-manager-getting-started-instance-profile.md)
+ [步驟 3：控制工作階段對受管節點的存取權](session-manager-getting-started-restrict-access.md)
+ [步驟 4：進行工作階段偏好設定](session-manager-getting-started-configure-preferences.md)
+ [步驟 5：(選用) 限制對工作階段中命令的存取](session-manager-restrict-command-access.md)
+ [步驟 6：（選用） AWS PrivateLink 使用 設定 的 VPC 端點 Session Manager](session-manager-getting-started-privatelink.md)
+ [步驟 7：(選用) 啟用或停用 ssm-user 帳戶管理許可](session-manager-getting-started-ssm-user-permissions.md)
+ [步驟 8：(選用) 透過 Session Manager 允許和控制 SSH 連線的許可](session-manager-getting-started-enable-ssh-connections.md)

# 步驟 1：完成Session Manager事前準備
<a name="session-manager-prerequisites"></a>

在您使用 Session Manager 之前，請確定您的環境符合下列要求。


**Session Manager 先決條件**  

| 需求 | Description | 
| --- | --- | 
|  支援的作業系統  |  在使用 *advanced-instance* 方案的[混合多雲端](operating-systems-and-machine-types.md#supported-machine-types)環境中，Session Manager 支援連線至 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體和伺服器或虛擬機器 (VM)。 Session Manager 支援以下作業系統版本：  在使用 *advanced-instance* 方案的[混合多雲端](operating-systems-and-machine-types.md#supported-machine-types)環境中，Session Manager 支援 EC2 執行個體、邊緣設備及內部部署伺服器和虛擬機器 (VM)。如需進階執行個體的詳細資訊，請參閱 [設定執行個體方案](fleet-manager-configure-instance-tiers.md)。   **Linux 和 **macOS****  Session Manager 支援 支援的所有 Linux和 macOS 版本 AWS Systems Manager。如需相關資訊，請參閱[支援的作業系統和機器類型](operating-systems-and-machine-types.md)。  ** Windows **  Session Manager 支援 Windows Server 2012 及更高版本。  不支援 Microsoft Windows Server 2016 Nano。   | 
|  SSM Agent  |  至少， AWS Systems Manager SSM Agent.2.3.680 版或更新版本必須安裝在您想要透過工作階段連線的受管節點上。 若要使用 選項，使用在 AWS Key Management Service (AWS KMS) 中建立的金鑰加密工作階段資料，SSM Agent必須在受管節點上安裝 2.3.539.0 版或更新版本。 若要在工作階段中使用 shell 描述檔，必須在受管節點上安裝 SSM Agent 3.0.161.0 版或更新版本。 若要啟動 Session Manager 網路埠轉送或 SSH 工作階段，必須在受管節點上安裝 SSM Agent 3.0.222.0 版或更新版本。 若要使用 Amazon CloudWatch Logs 來串流工作階段資料，必須在受管節點上安裝 SSM Agent 3.0.284.0 版或更新版本。 如需如何判斷在執行個體上執行的版本號的詳細資訊，請參閱 [檢查 SSM Agent 版本編號](ssm-agent-get-version.md)。如需手動安裝或自動更新 SSM Agent 的詳細資訊，請參閱 [使用 SSM Agent](ssm-agent.md)。  關於 ssm 使用者帳戶 從 SSM Agent 2.3.50.0 版開始，代理程式使用名為 `ssm-user` 的根或管理員權限，在受管節點上建立使用者帳戶。(在 2.3.612.0 之前的版本中，當 SSM Agent 啟動或重新啟動時會建立帳戶。在版本 2.3.612.0 和更新版本中，在受管節點上第一次啟動工作階段時會建立 `ssm-user`。) 透過使用者帳戶的管理登入資料來啟動工作階段。如果有關限制此帳戶的管理控制的資訊，請參閱[停用或啟用 ssm-user 帳戶管理許可](session-manager-getting-started-ssm-user-permissions.md)。   Windows Server 網域控制站上的 ssm 使用者 從 SSM Agent 2.3.612.0 版開始，系統不會在用作為 Windows Server 網域控制站的受管節點上自動建立 `ssm-user` 帳戶。若要在被用作網域控制器的 Windows Server 機器上使用 Session Manager，您必須手動建立 `ssm-user` 帳戶 (如果尚不存在)，並將網域管理員許可指派給使用者。每次工作階段啟動時，SSM Agent 會在 Windows Server 上為 `ssm-user` 帳戶設定新的密碼，因此您在建立帳戶時不需要指定密碼。   | 
|  連線至端點  |  您連線的受管節點也必須允許 HTTPS (連接埠 443) 傳出流量至下列端點： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/session-manager-prerequisites.html) 如需詳細資訊，請參閱下列主題： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/session-manager-prerequisites.html) 或者，您可以使用介面端點連線至所需的端點。如需詳細資訊，請參閱[步驟 6：（選用） AWS PrivateLink 使用 設定 的 VPC 端點 Session Manager](session-manager-getting-started-privatelink.md)。  | 
|  AWS CLI  |  （選用） 如果您使用 AWS Command Line Interface (AWS CLI) 啟動工作階段 （而不是使用 AWS Systems Manager 主控台或 Amazon EC2 主控台），則必須在本機電腦上安裝 1.16.12 版或更新版本的 CLI。 您可以呼叫 `aws --version` 來檢查版本。 如果您需要安裝或升級 CLI，請參閱 AWS Command Line Interface 《 使用者指南》中的[安裝 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 。 當 Systems Manager 新增了新工具，或現有工具有更新時，會發行 SSM Agent 的更新版本。若未使用最新版本的 Agent，您的受管節點可能會無法使用 Systems Manager 中的各種工具及功能。因此，我們建議您讓機器的 SSM Agent 自動保持最新狀態。如需相關資訊，請參閱[自動化 SSM Agent 更新](ssm-agent-automatic-updates.md)。請訂閱 GitHub 上的 [SSM Agent 版本備註](https://github.com/aws/amazon-ssm-agent/blob/mainline/RELEASENOTES.md)頁面，以便接收有關 SSM Agent 更新的通知。 除此之外，透過 Session Manager 使用 CLI 來管理您的節點，您必須先安裝 Session Manager 外掛程式本機電腦。如需相關資訊，請參閱[安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)。  | 
|  開啟 advanced-instance 方案 ([混合多雲端](operating-systems-and-machine-types.md#supported-machine-types)環境)  |  若要使用 連線至non-EC2 機器Session Manager，您必須開啟 中的 advanced-instances 方案， AWS 帳戶 並在 AWS 區域 其中建立混合啟用，將non-EC2 機器註冊為受管節點。使用 advanced-instance 方案會產生費用。如需 advanced-instance 方案的詳細資訊，請參閱 [設定執行個體方案](fleet-manager-configure-instance-tiers.md)。  | 
|  確認 IAM 服務角色許可 ([混合多雲端](operating-systems-and-machine-types.md#supported-machine-types)環境)  |  混合啟用節點使用混合啟用中指定的 AWS Identity and Access Management (IAM) 服務角色，與 Systems Manager API 操作通訊。此服務角色必須包含使用 Session Manager 連線至[混合多雲端](operating-systems-and-machine-types.md#supported-machine-types)機器所需的許可。如果您的服務角色包含 AWS 受管政策 `AmazonSSMManagedInstanceCore` ，Session Manager則已提供 所需的許可。 如果發現服務角色不包含必要的許可，則您必須取消註冊受管執行個體，並使用具有所需許可之 IAM 服務角色的新混合式啟用來註冊該執行個體。如需取消註冊受管執行個體的詳細資訊，請參閱 [取消註冊混合多雲端環境中的受管節點](fleet-manager-deregister-hybrid-nodes.md)。如需建立具有 Session Manager 許可之 IAM 政策的詳細資訊，請參閱[步驟 2：為 Session Manager 確認或新增執行個體許可](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-instance-profile.html)。  | 

# 步驟 2：為 Session Manager 確認或新增執行個體許可
<a name="session-manager-getting-started-instance-profile"></a>

根據預設， AWS Systems Manager 沒有在您的執行個體上執行動作的許可。您可以使用 AWS Identity and Access Management (IAM) 角色在帳戶層級提供執行個體許可，或使用執行個體設定檔在執行個體層級提供許可。如果您的使用案例允許，建議您使用預設主機管理組態在帳戶層級授予存取權。如果您已經使用 `AmazonSSMManagedEC2InstanceDefaultPolicy` 政策設定帳戶的預設主機管理組態，則可以執行下一個步驟。如需有關預設主機管理組態的詳細資訊，請參閱 [使用預設主機管理組態來自動管理 EC2 執行個體](fleet-manager-default-host-management-configuration.md)。

您也可以使用執行個體設定檔為執行個體提供必要的許可。使用執行個體設定檔將 IAM 角色傳遞給 Amazon EC2 執行個體。您可以將 IAM 執行個體設定檔連接至啟動的 Amazon EC2 執行個體或先前啟動的執行個體。如需詳細資訊，請參閱[使用執行個體設定檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-instanceprofile.html)。

對於內部部署伺服器或虛擬機器 (VM)，許可由與混合式啟用相關聯的 IAM 服務角色提供，該角色可用來向 Systems Manager 註冊您的內部部署伺服器和 VM。內部部署伺服器和 VM 不使用執行個體設定檔。

若您已使用 Systems Manager 的其他工具 (例如 Run Command 或 Parameter Store)，您的 Amazon EC2 執行個體便可能已經連接具備 Session Manager 必要基本許可的執行個體設定檔。如果包含 AWS 受管政策的執行個體描述檔`AmazonSSMManagedInstanceCore`已連接至您的執行個體，Session Manager則已提供 所需的許可。如果混合式啟用中使用的 IAM 服務角色包含 `AmazonSSMManagedInstanceCore` 管理的政策，則這也會是 True。

但是，在某些案例中，您可能需要修改連接到您執行個體設定檔的許可。例如，您想要提供一組更窄的執行個體許可、為執行個體描述檔建立自訂政策，或是想要使用 Amazon Simple Storage Service (Amazon S3) 加密或 AWS Key Management Service (AWS KMS) 加密選項來保護工作階段資料。針對這些案例，請執行以下其中一項作業，允許在您的執行個體上執行 Session Manager 動作：
+  **在自訂 IAM 角色中為 Session Manager 動作內嵌許可** 

  若要將Session Manager動作的許可新增至現有 IAM 角色，而該角色不依賴 AWS提供的預設政策 `AmazonSSMManagedInstanceCore`，請遵循 中的步驟[將 Session Manager 許可新增至現有 IAM 角色](getting-started-add-permissions-to-existing-profile.md)。
+  **建立只有 Session Manager 許可的自訂 IAM 角色** 

  若要建立只有包含 Session Manager 動作許可在 IAM 角色中，請依照 [建立 Session Manager 的自訂 IAM 角色](getting-started-create-iam-instance-profile.md) 中的步驟操作。
+  **建立和使用新的 IAM 角色，該角色具有對所有 Systems Manager 動作的許可** 

  若要為使用 提供的預設政策 AWS 授予所有 Systems Manager 許可的 Systems Manager 受管執行個體建立 IAM 角色，請遵循[設定 Systems Manager 所需的執行個體許可](setup-instance-permissions.md)中的步驟。

**Topics**
+ [將 Session Manager 許可新增至現有 IAM 角色](getting-started-add-permissions-to-existing-profile.md)
+ [建立 Session Manager 的自訂 IAM 角色](getting-started-create-iam-instance-profile.md)

# 將 Session Manager 許可新增至現有 IAM 角色
<a name="getting-started-add-permissions-to-existing-profile"></a>

使用以下程序將 Session Manager 許可新增至現有 AWS Identity and Access Management (IAM) 角色。透過將許可新增至現有角色，您可以增強運算環境的安全性，而不必將 AWS `AmazonSSMManagedInstanceCore`政策用於執行個體許可。

**注意**  
記下以下資訊：  
這個程序假設您現有的角色已經包含其他您希望允許存取動作的 Systems Manager `ssm` 許可。這個政策無法獨立使用 Session Manager。
下列政策範例包含一個 `s3:GetEncryptionConfiguration` 動作。如果您在 Session Manager 記錄偏好設定中選擇了**強制 S3 日誌加密**選項，則需要執行此動作。
如果從連接至 IAM 執行個體描述檔或 IAM 服務角色的政策中移除`ssmmessages:OpenControlChannel`許可，SSM Agent則受管節點上的 會失去與雲端中 Systems Manager 服務的連線。不過，在移除許可後，最多可能需要 1 小時才能終止連線。這與刪除 IAM 執行個體角色或 IAM 服務角色時的行為相同。

**將 Session Manager 許可新增至現有角色 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**角色**。

1. 選取您要為其新增許可的角色名稱。

1. 選擇**許可**索引標籤。

1. 選擇**新增許可**，然後選取**建立內嵌政策**。

1. 選擇 **JSON** 標籤。

1. 將預設政策內容取代為以下內容。將 *key-name* 取代為您要使用的 AWS Key Management Service 金鑰 () 的 Amazon Resource Name (ARN AWS KMS key)。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssmmessages:CreateControlChannel",
                   "ssmmessages:CreateDataChannel",
                   "ssmmessages:OpenControlChannel",
                   "ssmmessages:OpenDataChannel"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetEncryptionConfiguration"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-name"
           }
       ]
   }
   ```

------

   如需使用 KMS 金鑰來加密工作階段資料的詳細資訊，請參閱 [開啟工作階段資料的 KMS 金鑰加密 (主控台)](session-preferences-enable-encryption.md)。

   如果您不對工作階段資料使用 AWS KMS 加密，您可以從政策中移除下列內容。

   ```
   ,
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "key-name"
           }
   ```

1. 選擇下**一步：標籤**。

1. (選用) 透過選擇 **Add tag** (新增標籤)，然後輸入政策的首選標籤來新增標籤。

1. 選擇下**一步：檢閱**。

1. 在**檢閱政策**頁面上**名稱**中，輸入該內嵌政策的名稱，例如 **SessionManagerPermissions**。

1. (選用) 在**說明**中輸入政策的說明。

   選擇**建立政策**。

如需有關 `ssmmessages` 動作的資訊，請參閱 [參考：ec2messages、ssmmessages 和其他 API 操作](systems-manager-setting-up-messageAPIs.md)。

# 建立 Session Manager 的自訂 IAM 角色
<a name="getting-started-create-iam-instance-profile"></a>

您可以建立 AWS Identity and Access Management (IAM) 角色，授予在您的 Amazon EC2 受管執行個體上執行動作Session Manager的許可。您也可以包含一項政策，以授予將工作階段日誌傳送到 Amazon Simple Storage Service (Amazon S3) 和 Amazon CloudWatch Logs 所需的許可。

建立 IAM 角色後，如需如何將角色連接至執行個體的相關資訊，請參閱 AWS re:Post 網站上的[連接或取代執行個體描述](https://aws.amazon.com/premiumsupport/knowledge-center/attach-replace-ec2-instance-profile/)檔。如需詳有關 IAM 執行個體設定檔和角色的細資訊，請參閱《IAM 使用者指南》**中的[使用執行個體描述檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)一節，以及《適用於 Linux 的 Amazon Elastic Compute Cloud 使用者指南》**中的 [Amazon EC2 IAM 角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)一節。如需有關為內部部署機器建立 IAM 服務角色的詳細資訊，請參閱[在混合多雲端環境中建立 Systems Manager 所需的 IAM 服務角色](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-multicloud-service-role.html)。

**Topics**
+ [建立具有最小 Session Manager 許可的 IAM 角色 (主控台)](#create-iam-instance-profile-ssn-only)
+ [建立具有 Session Manager、Amazon Simple Storage Service (Amazon S3) 和 CloudWatch Logs (主控台) 許可的 IAM 角色](#create-iam-instance-profile-ssn-logging)

## 建立具有最小 Session Manager 許可的 IAM 角色 (主控台)
<a name="create-iam-instance-profile-ssn-only"></a>

請使用下列處理程序來建立具有政策的自訂 IAM 角色，該政策在您的執行個體上只提供唯一的 Session Manager 動作許可。

**建立含最小 Session Manager 許可的執行個體設定檔 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**政策**，然後選擇**建立政策**。(顯示 **Get Started** (開始使用) 按鈕時先選擇它，然後選擇 **Create Policy** (建立政策)。)

1. 選擇 **JSON** 標籤。

1. 將預設內容取代為以下政策。若要使用 AWS Key Management Service (AWS KMS) 加密工作階段資料，請以您要使用的 Amazon Resource Name AWS KMS key (ARN) 取代 *key-*name。
**注意**  
如果從連接至 IAM 執行個體描述檔或 IAM 服務角色的政策中移除`ssmmessages:OpenControlChannel`許可，SSM Agent則受管節點上的 會失去與雲端中 Systems Manager 服務的連線。不過，在移除許可後，最多可能需要 1 小時才能終止連線。這與刪除 IAM 執行個體角色或 IAM 服務角色時的行為相同。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:UpdateInstanceInformation",
                   "ssmmessages:CreateControlChannel",
                   "ssmmessages:CreateDataChannel",
                   "ssmmessages:OpenControlChannel",
                   "ssmmessages:OpenDataChannel"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-name"
           }
       ]
   }
   ```

------

   如需使用 KMS 金鑰來加密工作階段資料的詳細資訊，請參閱 [開啟工作階段資料的 KMS 金鑰加密 (主控台)](session-preferences-enable-encryption.md)。

   如果您不對工作階段資料使用 AWS KMS 加密，您可以從政策中移除下列內容。

   ```
   ,
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "key-name"
           }
   ```

1. 選擇下**一步：標籤**。

1. (選用) 透過選擇 **Add tag** (新增標籤)，然後輸入政策的首選標籤來新增標籤。

1. 選擇下**一步：檢閱**。

1. 在**檢閱政策**頁面上**名稱**中，輸入該內嵌政策的名稱，例如 **SessionManagerPermissions**。

1. (選用) 在**說明**中輸入政策的說明。

1. 選擇**建立政策**。

1. 在導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 在 **Create role** (建立角色) 頁面上，選擇 **AWS service** (服務)，針對 **Use case** (使用案例)，選擇 **EC2**。

1. 選擇**下一步**。

1. 在 **Add permissions** (新增許可) 頁面，選取您剛建立政策左側的核取方塊，例如 **SessionManagerPermissions**。

1. 選擇**下一步**。

1. 在 **Name, review, and create** (名稱、檢閱和建立) 頁面的 **Role name** (角色名稱) 中，輸入 IAM 角色的名稱，例如 **MySessionManagerRole**。

1. (選用) **Role description (角色說明)**，輸入執行個體設定檔的說明。

1. (選用) 透過選擇 **Add tag** (新增標籤)，然後輸入角色的首選標籤來新增標籤。

   選擇建**立角色**。

如需有關 `ssmmessages` 動作的資訊，請參閱 [參考：ec2messages、ssmmessages 和其他 API 操作](systems-manager-setting-up-messageAPIs.md)。

## 建立具有 Session Manager、Amazon Simple Storage Service (Amazon S3) 和 CloudWatch Logs (主控台) 許可的 IAM 角色
<a name="create-iam-instance-profile-ssn-logging"></a>

請使用下列處理程序來建立具有政策自訂 IAM 角色，該政策在您的執行個體上提供 Session Manager 動作許可。此政策還提供在 Amazon Simple Storage Service (Amazon S3) 儲存貯體和 Amazon CloudWatch Logs 日誌群組中存放工作階段日誌的所需許可。

**重要**  
若要將工作階段日誌輸出到不同 AWS 帳戶所擁有的 Amazon Simple Storage Service (Amazon S3) 儲存貯體，您必須將 `s3:PutObjectAcl` 許可新增至該 IAM 角色政策。此外，您必須確保該儲存貯體政策將跨帳戶存取權授予擁有該儲存貯體的帳戶，用於授予受管執行個體 Systems Manager 許可所使用的 IAM 角色。如果該儲存貯體使用 Key Management Service (KMS) 加密，則該儲存貯體的 KMS 政策也必須授予此跨帳戶存取權。如需有關在 Amazon S3 中設定跨帳戶儲存貯體許可的更多資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[授予跨帳戶儲存貯體許可](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)一節。如果未新增此許可，則擁有該 Amazon Simple Storage Service (Amazon S3) 儲存貯體的帳戶無法存取工作階段輸出日誌。

如需有關指定儲存工作階段日誌偏好的更多資訊，請參閱[啟用和停用工作階段記錄](session-manager-logging.md)。

**建立具有 Session Manager、Amazon Simple Storage Service (Amazon S3) 和 CloudWatch Logs (主控台) 許可的 IAM 角色**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**政策**，然後選擇**建立政策**。(顯示 **Get Started** (開始使用) 按鈕時先選擇它，然後選擇 **Create Policy** (建立政策)。)

1. 選擇 **JSON** 標籤。

1. 將預設內容取代為以下政策。將每個*範例資源預留位置*取代為您自己的資訊。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssmmessages:CreateControlChannel",
                   "ssmmessages:CreateDataChannel",
                   "ssmmessages:OpenControlChannel",
                   "ssmmessages:OpenDataChannel",
                   "ssm:UpdateInstanceInformation"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogStream",
                   "logs:PutLogEvents",
                   "logs:DescribeLogGroups",
                   "logs:DescribeLogStreams"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/s3-prefix/*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetEncryptionConfiguration"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-name"
           },
           {
               "Effect": "Allow",
               "Action": "kms:GenerateDataKey",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 選擇下**一步：標籤**。

1. (選用) 透過選擇 **Add tag** (新增標籤)，然後輸入政策的首選標籤來新增標籤。

1. 選擇下**一步：檢閱**。

1. 在**檢閱政策**頁面上**名稱**中，輸入該內嵌政策的名稱，例如 **SessionManagerPermissions**。

1. (選用) 在**說明**中輸入政策的說明。

1. 選擇**建立政策**。

1. 在導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 在 **Create role** (建立角色) 頁面上，選擇 **AWS service** (服務)，針對 **Use case** (使用案例)，選擇 **EC2**。

1. 選擇**下一步**。

1. 在 **Add permissions** (新增許可) 頁面，選取您剛建立政策左側的核取方塊，例如 **SessionManagerPermissions**。

1. 選擇**下一步**。

1. 在 **Name, review, and create** (名稱、檢閱和建立) 頁面的 **Role name** (角色名稱) 中，輸入 IAM 角色的名稱，例如 **MySessionManagerRole**。

1. (選用) 在 **Role description (角色說明)** 中，輸入角色的說明。

1. (選用) 透過選擇 **Add tag** (新增標籤)，然後輸入角色的首選標籤來新增標籤。

1. 選擇建**立角色**。

# 步驟 3：控制工作階段對受管節點的存取權
<a name="session-manager-getting-started-restrict-access"></a>

您可以使用 AWS Identity and Access Management (IAM) 政策授予或撤銷受管節點的Session Manager存取權。您可以建立政策並將其連接到某個 IAM 使用者或群組，以指定該使用者或群組可連線到哪些受管節點。您也可以指定該使用者或群組可在這些受管節點上執行的 Session Manager API 操作。

為了協助您開始使用 Session Manager 的 IAM 許可政策，我們建立了適用於最終使用者和管理員使用者的範例政策。您只需對這些政策稍做變更便可加以利用。您也可以將它們用作建立自訂 IAM 政策時的指南。如需詳細資訊，請參閱[適用於 Session Manager 的範例 IAM 政策](getting-started-restrict-access-quickstart.md)。如需有關如何建立 IAM 政策並將其連接至使用者或群組的相關資訊，請參閱《IAM 使用者指南》**中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)和[新增和移除 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

**關於工作階段 ID ARN 格式**  
為 Session Manager 存取權建立 IAM 政策時，您需要將工作階段 ID 指定為 Amazon Resource Name (ARN) 的一部分。該工作階段 ID 包含使用者名稱做為變數。為了更好地說明，以下是 Session Manager ARN 的格式和一個範例：

```
arn:aws:ssm:region-id:account-id:session/session-id
```

例如：

```
arn:aws:ssm:us-east-2:123456789012:session/JohnDoe-1a2b3c4d5eEXAMPLE
```

如需有關在 IAM 政策中使用變數的詳細資訊，請參閱 [IAM 政策元素：變數](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)。

**Topics**
+ [透過在 IAM 政策中指定預設的工作階段文件來啟動預設 Shell 工作階段](getting-started-default-session-document.md)
+ [透過在 IAM 政策中指定工作階段文件使用文件啟動預工作階段](getting-started-specify-session-document.md)
+ [適用於 Session Manager 的範例 IAM 政策](getting-started-restrict-access-quickstart.md)
+ [Session Manager 的其他 IAM 政策範例](getting-started-restrict-access-examples.md)

# 透過在 IAM 政策中指定預設的工作階段文件來啟動預設 Shell 工作階段
<a name="getting-started-default-session-document"></a>

當您Session Manager為 設定 AWS 帳戶 或在 Systems Manager 主控台中變更工作階段偏好設定時，系統會建立名為 的 SSM 工作階段文件`SSM-SessionManagerRunShell`。這是預設的工作階段文件。Session Manager 使用此文件來儲存您的工作階段偏好設定，其中包含下列資訊：
+ 您想要儲存工作階段資料的位置，例如 Amazon Simple Storage Service (Amazon S3) 儲存貯體或 Amazon CloudWatch Logs 日誌群組。
+ 用於加密工作階段資料的 AWS Key Management Service (AWS KMS) 金鑰 ID。
+ 您的工作階段是否允許「執行身分」支援。

以下是 `SSM-SessionManagerRunShell` 工作階段偏好設定文件中包含的資訊範例。

```
{
  "schemaVersion": "1.0",
  "description": "Document to hold regional settings for Session Manager",
  "sessionType": "Standard_Stream",
  "inputs": {
    "s3BucketName": "amzn-s3-demo-bucket",
    "s3KeyPrefix": "MyS3Prefix",
    "s3EncryptionEnabled": true,
    "cloudWatchLogGroupName": "MyCWLogGroup",
    "cloudWatchEncryptionEnabled": false,
    "kmsKeyId": "1a2b3c4d",
    "runAsEnabled": true,
    "runAsDefaultUser": "RunAsUser"
  }
}
```

依預設，當使用者從 AWS 管理主控台啟動工作階段時，Session Manager 會使用預設的工作階段文件。這適用於 Systems Manager 主控台Session Manager中的 Fleet Manager或 ，或 Amazon EC2 主控台中的 EC2 Connect。 Session Manager 也會在使用者使用如下範例的 AWS CLI 命令啟動工作階段時使用預設工作階段文件： Amazon EC2 

```
aws ssm start-session \
    --target i-02573cafcfEXAMPLE
```

若要啟動預設的 Shell 工作階段，必須在 IAM 政策中指定預設工作階段文件，如下列範例所示。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnableSSMSession",
      "Effect": "Allow",
      "Action": [
        "ssm:StartSession"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:111122223333:instance/instance-id",
        "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssmmessages:OpenDataChannel"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

# 透過在 IAM 政策中指定工作階段文件使用文件啟動預工作階段
<a name="getting-started-specify-session-document"></a>

如果您使用 [start-session](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html) AWS CLI 命令及預設工作階段文件，則可以省略文件名稱。系統會自動呼叫 `SSM-SessionManagerRunShell` 工作階段文件。

在其他所有情況下，您必須指定 `document-name` 參數值。當使用者在命令中指定工作階段文件的名稱時，系統會檢查其 IAM 政策，以確認其有權存取該文件。如果使用者沒有許可，連線請求就會失敗。下列範例包含 `AWS-StartPortForwardingSession` 工作階段文件的 `document-name` 參數。

```
aws ssm start-session \
    --target i-02573cafcfEXAMPLE \
    --document-name AWS-StartPortForwardingSession \
    --parameters '{"portNumber":["80"], "localPortNumber":["56789"]}'
```

如需如何在 IAM 政策中指定 Session Manager 工作階段文件的範例，請參閱 [Session Manager的最終使用者政策快速入門](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user)。

**注意**  
若要使用 SSH 來啟動工作階段，必須在目標受管節點*和*使用者的本機電腦上都完成設定步驟。如需相關資訊，請參閱 [(選用) 透過 Session Manager 允許和控制 SSH 連線的許可](session-manager-getting-started-enable-ssh-connections.md)。

# 適用於 Session Manager 的範例 IAM 政策
<a name="getting-started-restrict-access-quickstart"></a>

使用本節中的範例來協助您建立 AWS Identity and Access Management (IAM) 政策，以提供最常用的Session Manager存取許可。

**注意**  
您也可以使用 AWS KMS key 政策來控制哪些 IAM 實體 （使用者或角色） 和 AWS 帳戶 有權存取您的 KMS 金鑰。如需詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[管理 AWS KMS 資源存取和使用金鑰政策的概觀](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html)。 [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)

**Topics**
+ [Session Manager的最終使用者政策快速入門](#restrict-access-quickstart-end-user)
+ [Session Manager的管理者政策快速入門](#restrict-access-quickstart-admin)

## Session Manager的最終使用者政策快速入門
<a name="restrict-access-quickstart-end-user"></a>

使用以下範例來替 Session Manager 建立 IAM 最終使用者政策。

您可以建立政策，允許使用者只從Session Manager主控台和 AWS Command Line Interface (AWS CLI)、只從 Amazon Elastic Compute Cloud (Amazon EC2) 主控台或從這三個主控台啟動工作階段。

這些政策提供最終使用者對特定受管節點啟動工作階段的能力，也能夠結束自己的工作階段。請參閱[Session Manager 的其他 IAM 政策範例](getting-started-restrict-access-examples.md)取得有關您想在政策進行自訂的範例

在以下範例政策中，將每個*範例資源預留位置*取代為您自己的資訊。

從以下標籤進行選擇，來針對您要提供的工作階段存取範圍檢視範例政策。

------
#### [ 工作階段管理員 and Fleet Manager ]

使用此範例政策，讓使用者只能從 Session Manager 與 Fleet Manager 主控台啟動和繼續工作階段。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-02573cafcfEXAMPLE",
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceProperties",
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-name"
        }
    ]
}
```

------

------
#### [ Amazon EC2 ]

使用此範例政策，來讓使用者只能從 Amazon EC2 主控台啟動和繼續工作階段。這個政策不提供從 Session Manager 主控台和 AWS CLI啟動工作階段所需要的所有許可。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-02573cafcfEXAMPLE",
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceInformation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:username}-*"
            ]
        }
    ]
}
```

------

------
#### [ AWS CLI ]

使用此範例政策，讓使用者可以從 AWS CLI啟動和繼續工作階段。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-02573cafcfEXAMPLE",
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-name"
        }
    ]
}
```

------

------

**注意**  
`SSM-SessionManagerRunShell` 是 SSM 文件的預設名稱，Session Manager 會建立該 SSM 文件來存放您的工作階段組態偏好設定。您可以建立自訂工作階段文件，並改在這個政策中進行指定。您也可以為使用 SSH 開始工作階段的使用者指定 AWS提供的文件 `AWS-StartSSHSession`。如需有關使用 SSH 支援工作階段所需的設定步驟的資訊，請參閱 [(選用) 透過 Session Manager 允許和控制 SSH 連線的許可](session-manager-getting-started-enable-ssh-connections.md)。  
`kms:GenerateDataKey` 許可讓您能夠建立加密工作階段資料所用的資料加密金鑰。如果您要對工作階段資料使用 AWS Key Management Service (AWS KMS) 加密，請將 *key-name* 取代為您要使用之 KMS 金鑰的 Amazon Resource Name (ARN)，格式為 `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE`。如果您不使用 KMS 金鑰來加密工作階段資料，請將以下內容從政策中移除：  

```
{
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "key-name"
        }
```
如需使用 AWS KMS 加密工作階段資料的相關資訊，請參閱 [開啟工作階段資料的 KMS 金鑰加密 (主控台)](session-preferences-enable-encryption.md)。  
當使用者嘗試從 Amazon EC2 主控台啟動工作階段時，需要 [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendCommand.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendCommand.html) 的許可，但必須先將 SSM Agent 更新至 Session Manager 所需的最低版本。Run Command 用於將命令傳送至執行個體以更新 Agent。

## Session Manager的管理者政策快速入門
<a name="restrict-access-quickstart-admin"></a>

使用以下範例來替 Session Manager 建立 IAM 管理員政策。

這些政策提供管理員能夠啟動工作階段到被 `Key=Finance,Value=WebServers` 所標記的受管節點的能力，建立、更新和刪除偏好設定的許可，以及僅結束自己工作階段的許可。請參閱[Session Manager 的其他 IAM 政策範例](getting-started-restrict-access-examples.md)取得有關您想在政策進行自訂的範例

您可以建立政策，允許管理員只從Session Manager主控台執行這些任務 AWS CLI，以及只從 Amazon EC2 主控台執行，或從這三個主控台執行這些任務。

在以下範例政策中，將每個*範例資源預留位置*取代為您自己的資訊。

從以下標籤進行選擇，來針對您要支援的存取案例檢視範例政策。

------
#### [ 工作階段管理員 and CLI ]

使用此範例政策，來讓管理員只能從 Session Manager 主控台與 AWS CLI執行與工作階段相關的任務。這個政策不提供從 Amazon EC2 主控台執行與工作階段相關的任務所需要的所有許可。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ec2:*:111122223333:instance/*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/Finance": [
                        "WebServers"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceProperties",
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:CreateDocument",
                "ssm:UpdateDocument",
                "ssm:GetDocument",
                "ssm:StartSession"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        }
    ]
}
```

------

------
#### [ Amazon EC2 ]

使用此範例政策，來讓管理員只能從 Amazon EC2 主控台執行與工作階段相關的任務。這個政策不提供從 Session Manager 主控台與 AWS CLI執行與工作階段相關的任務所需要的所有許可。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/tag-key": [
                        "tag-value"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceInformation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        }
    ]
}
```

------

------
#### [ 工作階段管理員, CLI, and Amazon EC2 ]

使用此範例政策，來讓管理員能從 Session Manager 主控台、 AWS CLI與 Amazon EC2 主控台執行與工作階段相關的任務。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/tag-key": [
                        "tag-value"
                    ]
                }
            }
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceInformation",
                "ssm:DescribeInstanceProperties",
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:CreateDocument",
                "ssm:UpdateDocument",
                "ssm:GetDocument",
                "ssm:StartSession"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        }
    ]
}
```

------

------

**注意**  
如果有使用者嘗試從 Amazon EC2 主控台啟動工作階段，但必須先傳送命令來更新 SSM Agent，就需要 [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendCommand.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendCommand.html) 的許可。

# Session Manager 的其他 IAM 政策範例
<a name="getting-started-restrict-access-examples"></a>

請參閱下列範例政策，以協助您建立自訂 AWS Identity and Access Management (IAM) 政策以任何 Session Manager 使用者存取的情境。

**Topics**
+ [範例 1：在主控台中授予對文件的存取權](#grant-access-documents-console-example)
+ [範例 2：限制對特定受管節點的存取權](#restrict-access-example-instances)
+ [範例 3：根據標籤限制受管節點存取](#restrict-access-example-instance-tags)
+ [範例 4：只允許使用者結束他們啟動的工作階段](#restrict-access-example-user-sessions)
+ [範例 5：允許完整 (管理) 存取所有工作階段](#restrict-access-example-full-access)

## 範例 1：在主控台中授予對文件的存取權
<a name="grant-access-documents-console-example"></a>

您可以允許使用者在使用 Session Manager 主控台啟動工作階段時指定自訂文件。下列 IAM 政策範例授予對指定 AWS 區域 和 AWS 帳戶中名稱以 **SessionDocument-** 開頭的存取文件的許可。

若要使用此政策，請使用您自己的資訊取代*範例資源預留位置*。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetDocument",
                "ssm:ListDocuments"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SessionDocument-*"
            ]
        }
    ]
}
```

------

**注意**  
Session Manager 主控台僅支援 `sessionType` 為 `Standard_Stream` 的工作階段文件 (用於定義工作階段偏好設定)。如需詳細資訊，請參閱[工作階段文件結構描述](session-manager-schema.md)。

## 範例 2：限制對特定受管節點的存取權
<a name="restrict-access-example-instances"></a>

您可以建立 IAM 政策，以定義允許使用者使用 Session Manager 連線到哪些受管節點。例如，下列政策授予使用者在三個特定節點上啟動、結束和繼續其工作階段的許可。此政策會限制使用者連線至指定節點以外的節點。

**注意**  
如需聯合身分使用者，請參閱 [範例 4：只允許使用者結束他們啟動的工作階段](#restrict-access-example-user-sessions)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-1234567890EXAMPLE",
                "arn:aws:ec2:us-east-1:111122223333:instance/i-abcdefghijEXAMPLE",
                "arn:aws:ec2:us-east-1:111122223333:instance/i-0e9d8c7b6aEXAMPLE",
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       }
    ]
}
```

------

## 範例 3：根據標籤限制受管節點存取
<a name="restrict-access-example-instance-tags"></a>

您可以根據特定標籤限制對受管節點的存取權。在下列範例中，使用者可以在任何受管節點 (`Resource: arn:aws:ec2:region:987654321098:instance/*`) 開始及恢復工作階段 (`Effect: Allow, Action: ssm:StartSession, ssm:ResumeSession`) 節點的條件是 Finance WebServer (`ssm:resourceTag/Finance: WebServer`)。如果使用者將命令傳送至未加上標籤或有 `Finance: WebServer` 以外任何標籤的受管節點，執行結果會顯示 `AccessDenied`。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/Finance": [
                        "WebServers"
                    ]
                }
            }
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        }
    ]
}
```

------

您可以建立 IAM 政策，可讓使用者在已多個標籤標記的受管節點上執行命令。以下政策可讓使用者在有這兩種特定標籤的受管節點啟工作階段。如果使用者將命令傳送至未以那兩個標籤標記的受管節點，命令執行結果會包含 `AccessDenied`。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ssm:StartSession"
         ],
         "Resource":"*",
         "Condition":{
            "StringLike":{
               "ssm:resourceTag/tag-key1":[
                  "tag-value1"
               ],
               "ssm:resourceTag/tag-key2":[
                  "tag-value2"
               ]
            }
         }
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
      {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
      }
   ]
}
```

------

如需有關建立 IAM 政策的詳細資訊，請參閱《IAM 使用者指南》**中的[受管政策和內嵌政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html)。如需有關標記受管節點的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[標記您的 Amazon EC2 資源](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) (內容適用於 Windows 和 Linux 受管節點)。如需提升安全狀態，防範受管節點上未獲授權的根層級命令的詳細資訊，請參閱 [限制透過 SSM Agent 存取根層級命令](ssm-agent-restrict-root-level-commands.md)

## 範例 4：只允許使用者結束他們啟動的工作階段
<a name="restrict-access-example-user-sessions"></a>

Session Manager 提供兩種方法來控制 中聯合身分使用者 AWS 帳戶 允許結束的工作階段。
+ 在 AWS Identity and Access Management (IAM) 許可政策`{aws:userid}`中使用 變數。聯合身分使用者只能結束他們啟動的工作階段。對於非聯合身分使用者，請使用方法 1。對於聯合身分使用者，請使用方法 2。
+ 使用 IAM 許可政策中標籤提供的 AWS 標籤。在政策中，您會包含一個條件，允許使用者只結束使用 AWS提供之特定標籤標記的工作階段。此方法適用於所有帳戶，包括使用聯合身分 ID 授與 AWS存取權的帳戶。

### 方法 1：使用變數 `{aws:username}` 授與 TerminateSession 權限
<a name="restrict-access-example-user-sessions-username"></a>

下列 IAM 政策可讓使用者檢視您帳戶中所有工作階段的 ID。不過，使用者只能透過他們啟動的工作階段與受管節點互動。下列政策所指派到的使用者無法連結或結束其他使用者的工作階段。使用變數 `{aws:username}` 來達成目標的政策。

**注意**  
此方法不適用於使用聯合身分 ID 授與 AWS 存取權的帳戶。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ssm:DescribeSessions"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        },
        {
            "Action": [
                "ssm:TerminateSession"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:username}-*"
            ]
        }
    ]
}
```

------

### 方法 2：使用 提供的標籤授予 TerminateSession 權限 AWS
<a name="restrict-access-example-user-sessions-tags"></a>

您可以在 IAM 政策中包含條件標籤索引鍵變數，來控制使用者可以結束哪些工作階段。條件會指定使用者只能結束以一個或兩個特定標籤鍵變數和指定值加以標記的工作階段。

當 中的使用者 AWS 帳戶 啟動工作階段時， 會將兩個資源標籤Session Manager套用至工作階段。第一個資源標籤是 `aws:ssmmessages:target-id`，您可以用來指定允許使用者結束之目標的 ID。另一個資源標籤是 `aws:ssmmessages:session-id`，具有此格式的值：`role-id:caller-specified-role-name`。

**注意**  
Session Manager 不支援此 IAM 存取控制政策的自訂標籤。您必須使用 提供的資源標籤 AWS，如下所述。

 ** `aws:ssmmessages:target-id` **   
使用此標籤鍵，您可以將受管節點 ID 作為值納入政策。在下列政策區塊中，條件陳述式可讓使用者只結束節點 i-02573cafcfEXAMPLE。    
****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                "ssm:TerminateSession"
             ],
             "Resource": "*",
             "Condition": {
                 "StringLike": {
                     "ssm:resourceTag/aws:ssmmessages:target-id": [
                        "i-02573cafcfEXAMPLE"
                     ]
                 }
             }
         }
     ]
}
```
如果使用者嘗試結束未被授與此 `TerminateSession` 許可的工作階段，他們會收到 `AccessDeniedException` 錯誤。

 ** `aws:ssmmessages:session-id` **   
此標籤鍵包含工作階段 ID 的變數，做為啟動工作階段之要求中的值。  
下列範例會示範發起人類型為 `User` 的案例政策。您提供給 `aws:ssmmessages:session-id` 的值是使用者的 ID。在此範例中，`AIDIODR4TAW7CSEXAMPLE` 代表 AWS 帳戶中使用者的 ID。若要擷取 中使用者的 ID AWS 帳戶，請使用 IAM 命令 `get-user`。如需詳細資訊，請參閱《*IAM 使用者指南* AWS Identity and Access Management 》中的 [get-user](https://docs.aws.amazon.com/IAM/latest/UserGuide/get-user.html)。    
****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                "ssm:TerminateSession"
             ],
             "Resource": "*",
             "Condition": {
                 "StringLike": {
                     "ssm:resourceTag/aws:ssmmessages:session-id": [
                        "AIDIODR4TAW7CSEXAMPLE"
                     ]
                 }
             }
         }
     ]
}
```
下列範例會示範發起人類型為 `AssumedRole` 的案例政策。您可以將 `{aws:userid}` 變數用於您提供給 `aws:ssmmessages:session-id` 的值。或者，您也可以為您提供給 `aws:ssmmessages:session-id` 的值硬式編碼角色 ID。如果您硬式編碼角色 ID，則必須以格式 `role-id:caller-specified-role-name` 提供值。例如 `AIDIODR4TAW7CSEXAMPLE:MyRole`。  
為了套用系統標籤，您提供的角色 ID 只能包含下列字元：Unicode 字母、0-9、空格、`_`、`.`、`:`、`/`、`=`、`+`、`-`、`@` 和 `\`。
若要擷取 中角色的角色 ID AWS 帳戶，請使用 `get-caller-identity`命令。如需詳細資訊，請參閱《 AWS CLI 命令參考》中的 [get-caller-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html)。    
****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                "ssm:TerminateSession"
             ],
             "Resource": "*",
             "Condition": {
                 "StringLike": {
                     "ssm:resourceTag/aws:ssmmessages:session-id": [
                        "${aws:userid}*"
                     ]
                 }
             }
         }
     ]
}
```
如果使用者嘗試結束未被授與此 `TerminateSession` 許可的工作階段，他們會收到 `AccessDeniedException` 錯誤。

**`aws:ssmmessages:target-id`** 和 **`aws:ssmmessages:session-id`**  
您也可以建立 IAM 政策，讓使用者結束以兩個系統標籤標記的工作階段，如本範例所示。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ssm:TerminateSession"
         ],
         "Resource":"*",
         "Condition":{
            "StringLike":{
               "ssm:resourceTag/aws:ssmmessages:target-id":[
                  "i-02573cafcfEXAMPLE"
               ],
               "ssm:resourceTag/aws:ssmmessages:session-id":[
                  "${aws:userid}*"
               ]
            }
         }
      }
   ]
}
```

## 範例 5：允許完整 (管理) 存取所有工作階段
<a name="restrict-access-example-full-access"></a>

以下 IAM 政策可讓使用者完全與所有受管節點和所有使用者所建立在所有節點的所有工作階段互動。它應該只需要授予管理者，管理員需要完全控制組織的 Session Manager 活動。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession",
                "ssm:ResumeSession",
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       }
    ]
}
```

------

# 步驟 4：進行工作階段偏好設定
<a name="session-manager-getting-started-configure-preferences"></a>

已在 AWS Identity and Access Management (IAM) 政策中授予管理許可的使用者可以設定工作階段偏好設定，包括下列項目：
+ 為 Linux 受管節點開啟執行身分支援。這可讓您使用指定作業系統使用者的登入資料來啟動工作階段，而不是可在受管節點上建立的系統產生`ssm-user`帳戶的 AWS Systems Manager Session Manager登入資料。
+ 設定 Session Manager 以使用 AWS KMS key 加密，為用戶端機器與受管節點之間傳輸的資料提供額外的保護。
+ 設定 Session Manager 來建立工作階段歷史記錄日誌，並傳送到 Amazon Simple Storage Service (Amazon S3) 儲存貯體或 Amazon CloudWatch Logs 日誌群組。之後，就可以使用儲存的資料來報告與受管節點建立的工作階段連線，以及在工作階段期間對這些節點執行的命令。
+ 設定工作階段逾時。您可以使用此設定來指定在閒置一段時間後結束工作階段的時間。
+ 設定 Session Manager 以使用可設定的 shell 描述檔。這些可自訂的描述檔可讓您在工作階段內定義偏好設定，例如 shell 偏好設定、環境變數、工作目錄，以及在工作階段啟動時執行的多個命令。

如需設定 Session Manager 偏好設定所需的許可的詳細資訊，請參閱 [授與或拒絕使用者許可來更新Session Manager偏好設定](preference-setting-permissions.md)。

**Topics**
+ [授與或拒絕使用者許可來更新Session Manager偏好設定](preference-setting-permissions.md)
+ [指定閒置工作階段逾時值](session-preferences-timeout.md)
+ [指定工作階段持續時間上限](session-preferences-max-timeout.md)
+ [允許可設定的 Shell 設定檔](session-preferences-shell-config.md)
+ [為 Linux 和 macOS 受管節點開啟執行身分支援](session-preferences-run-as.md)
+ [開啟工作階段資料的 KMS 金鑰加密 (主控台)](session-preferences-enable-encryption.md)
+ [建立 Session Manager 偏好設定文件 (命令列)](getting-started-create-preferences-cli.md)
+ [更新 Session Manager 偏好設定 (命令列)](getting-started-configure-preferences-cli.md)

如需如何使用 Systems Manager 主控台設定工作階段資料記錄選項的詳細資訊，請參閱下列主題。
+  [使用 Amazon Simple Storage Service (Amazon S3) (主控台) 記錄工作階段資料](session-manager-logging-s3.md) 
+  [使用 Amazon CloudWatch Logs (主控台) 串流工作階段資料。](session-manager-logging-cwl-streaming.md) 
+  [使用 Amazon CloudWatch Logs (主控台) 記錄工作階段資料。](session-manager-logging-cloudwatch-logs.md) 

# 授與或拒絕使用者許可來更新Session Manager偏好設定
<a name="preference-setting-permissions"></a>

帳戶偏好設定會儲存為每個 的 AWS Systems Manager (SSM) 文件 AWS 區域。在使用者可以更新帳戶裡工作階段偏好之前，他們必須授與必要的權限來存取這些偏好設定所存放的 SSM 文件。這些許可是透過 AWS Identity and Access Management (IAM) 政策授予。

**管理員政策允許建立和更新偏好設定**  
管理員可以有以下政策在任何時候建立和更新偏好設定。以下政策允許許可存取和更新 `SSM-SessionManagerRunShell` 文件在 us-east-2 123456789012 帳戶。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ssm:CreateDocument",
                "ssm:GetDocument",
                "ssm:UpdateDocument",
                "ssm:DeleteDocument"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        }
    ]
}
```

------

**使用者政策防止更新偏好設定**  
使用以下政策防止最終使用者更新或覆寫在您的帳戶中的任何 Session Manager 偏好設定。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ssm:CreateDocument",
                "ssm:GetDocument",
                "ssm:UpdateDocument",
                "ssm:DeleteDocument"
            ],
            "Effect": "Deny",
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        }
    ]
}
```

------

# 指定閒置工作階段逾時值
<a name="session-preferences-timeout"></a>

Session Manager是 中的工具 AWS Systems Manager，可讓您指定在系統結束工作階段之前，允許使用者處於非作用中狀態的時間量。根據預設，工作階段在閒置 20 分鐘後逾時。您可以修改此設定，以指定工作階段在閒置 1 到 60 分鐘之間逾時。一些專業的運算安全機構建議將閒置工作階段逾時設定為最長 15 分鐘。

閒置工作階段逾時計時器會在 Session Manager接收用戶端輸入時重設。這些輸入包括但不限於：
+ 終端機中的鍵盤輸入
+ 終端機或瀏覽器視窗調整事件大小
+ 工作階段重新連線 (ResumeSession)，可能是因為網路中斷、瀏覽器索引標籤管理或 WebSocket 中斷連線而發生

由於這些事件會重設閒置計時器，即使沒有直接終端機命令，工作階段仍會維持作用中的時間超過設定的逾時期間。

如果您的安全需求要求嚴格工作階段持續時間限制，無論活動為何，除了閒置逾時之外，請使用*工作階段持續時間上限*設定。如需詳細資訊，請參閱[指定工作階段持續時間上限](session-preferences-max-timeout.md)。

**若要允許閒置工作階段逾時 (主控台)**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Preferences (偏好)** 標籤，然後選擇 **Edit (編輯)**。

1. 在 **Idle session timeout** (閒置工作階段逾時) 下的 **minutes** (分鐘) 欄位中，指定在工作階段結束之前允許使用者處於非作用中狀態的時間長度。

1. 選擇**儲存**。

# 指定工作階段持續時間上限
<a name="session-preferences-max-timeout"></a>

Session Manager是 中的工具 AWS Systems Manager，可讓您在工作階段結束之前指定工作階段的最長持續時間。依預設，工作階段沒有最長持續時間。您指定的工作階段持續時間上限值必須介於 1 到 1,440 分鐘之間。

**指定工作階段持續時間上限 (主控台)**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Preferences (偏好)** 標籤，然後選擇 **Edit (編輯)**。

1. 選取 **Enable maximum session duration** (啟用工作階段持續時間上限) 旁邊的核取方塊。

1. 在 **Maximum session duration** (工作階段持續時間上限) 下的 **minutes** (分鐘) 欄位中，指定工作階段結束前的最長持續時間。

1. 選擇**儲存**。

# 允許可設定的 Shell 設定檔
<a name="session-preferences-shell-config"></a>

根據預設，Linux 的 EC2 執行個體上的工作階段開始使用 Bourne shell (sh)。但是，您可能偏好使用像 bash 這樣的其他 shell。透過允許可設定的 shell 描述檔，您可自訂工作階段內的偏好設定，例如 shell 偏好設定、環境變數、工作目錄，以及在工作階段啟動時執行的多個命令。

**重要**  
Systems Manager 不會檢查 shell 描述檔中的命令或指令碼，以查看在執行它們之前會對執行個體進行哪些變更。若要限制使用者修改在其 shell 描述檔中輸入的命令或指令碼的能力，建議執行下列動作：  
為您的 AWS Identity and Access Management (IAM) 使用者和角色建立自訂工作階段類型文件。然後修改這些使用者和角色的 IAM 政策，以便 `StartSession` API 操作只能使用您為它們建立的工作階段類型文件。如需相關資訊，請參閱 [建立 Session Manager 偏好設定文件 (命令列)](getting-started-create-preferences-cli.md) 及 [Session Manager的最終使用者政策快速入門](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user)。
修改 IAM 使用者和角色的 IAM 政策，以拒絕對您建立的工作階段類型文件資源的 `UpdateDocument` API 操作。這允許您的使用者和角色使用您為其工作階段偏好設定建立的文件，但不允許他們修改任何設定。

**若要開啟可設定的 shell 描述檔**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Preferences (偏好)** 標籤，然後選擇 **Edit (編輯)**。

1. 在適用作業系統的欄位中，指定環境變數、shell 偏好設定、或者當您的工作階段啟動時要執行的命令。

1. 選擇**儲存**。

以下是可以新增到 Shell 描述檔的一些命令範例。

變更為 bash shell 並變更為 Linux 執行個體上的 /usr 目錄。

```
exec /bin/bash
cd /usr
```

在工作階段開始時輸出時間戳記和歡迎訊息。

------
#### [ Linux & macOS ]

```
timestamp=$(date '+%Y-%m-%dT%H:%M:%SZ')
user=$(whoami)
echo $timestamp && echo "Welcome $user"'!'
echo "You have logged in to a production instance. Note that all session activity is being logged."
```

------
#### [  Windows  ]

```
$timestamp = (Get-Date).ToString("yyyy-MM-ddTH:mm:ssZ")
$splitName = (whoami).Split("\")
$user = $splitName[1]
Write-Host $timestamp
Write-Host "Welcome $user!"
Write-Host "You have logged in to a production instance. Note that all session activity is being logged."
```

------

在工作階段開始時檢視動態系統活動。

------
#### [ Linux & macOS ]

```
top
```

------
#### [  Windows  ]

```
while ($true) { Get-Process | Sort-Object -Descending CPU | Select-Object -First 30; `
Start-Sleep -Seconds 2; cls
Write-Host "Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName"; 
Write-Host "-------  ------    -----      ----- -----   ------     -- -----------"}
```

------

# 為 Linux 和 macOS 受管節點開啟執行身分支援
<a name="session-preferences-run-as"></a>

依預設，Session Manager 會使用系統產生之 `ssm-user` 帳戶 (帳戶在受管節點上建立) 的憑證來驗證連線。在 Linux 和 macOS 機器上，帳戶新增到 `/etc/sudoers/`。如果可以選擇，您可以改為使用作業系統 (OS) 使用者帳戶的憑證，或是加入了 Active Directory 的執行個體的網域使用者來驗證工作階段。在此情況下，Session Manager 會在啟動工作階段之前，驗證您指定的作業系統帳戶是否存在於節點上或網域中。如果您嘗試使用節點上或網域中不存在的作業系統帳戶來啟動工作階段，則連線將會失敗。

**注意**  
Session Manager 不支援使用作業系統的 `root` 使用者帳戶來驗證連線。對於使用作業系統使用者帳戶驗證的工作階段，節點的作業系統層級和目錄政策 (如登入限制或系統資源使用限制) 可能不適用。

**運作方式**  
如果您為工作階段開啟執行身分支援，系統會如下檢查存取許可：

1. 啟動工作階段的使用者的 IAM 實體 (使用者或角色) 是否都已使用 `SSMSessionRunAs = os user account name` 標記？

   如果是，該受管節點上是否存在作業系統使用者名稱？ 如果有，就開始工作階段。如果沒有，則不允許工作階段開始。

   如果 IAM 實體尚*未*使用 `SSMSessionRunAs = os user account name` 標記，請繼續執行步驟 2。

1. 如果 IAM 實體尚未標記 `SSMSessionRunAs = os user account name`，是否已在 AWS 帳戶的Session Manager偏好設定中指定作業系統使用者名稱？

   如果是，該受管節點上是否存在作業系統使用者名稱？ 如果有，就開始工作階段。如果沒有，則不允許工作階段開始。

**注意**  
如果啟動執行身分支援，它會防止 Session Manager 使用受管理節點上的 `ssm-user` 帳戶啟動工作階段。這表示如果 Session Manager 無法使用指定的作業系統使用者帳戶進行連線，則不會返回使用預設方法進行連線。  
如果您在未指定作業系統帳戶或標記 IAM 實體的情況下啟用執行身分，且尚未在 Session Manager 偏好設定中指定作業系統帳戶，則工作階段連線嘗試將會失敗。

**為 Linux 和 macOS 受管節點開啟執行身分支援**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Preferences (偏好)** 標籤，然後選擇 **Edit (編輯)**。

1. 選取 **為 Linux 執行個體啟用執行身分支援**旁的核取方塊。

1. 執行以下任意一項：
   + **選項 1**：在**作業系統使用者名稱**欄位，輸入您想要用來啟動工作階段的作業系統使用者帳戶名稱。使用此選項，所有工作階段都會由使用 AWS 帳戶 連線的 中所有使用者的相同作業系統使用者執行Session Manager。
   + **選項 2** (建議)：選擇**開啟 IAM 主控台**連結。在導覽窗格中，選擇 **Users (使用者)** 或者 **Roles (角色)**。選擇要新增標籤的實體 (使用者或角色)，然後選擇 **Tags** (標籤) 標籤。在金鑰名稱輸入 `SSMSessionRunAs`。在鍵值中輸入作業系統使用者帳戶的名稱。選擇**儲存變更**。

     使用此選項，您可以視需要為不同的 IAM 實體指定唯一的作業系統使用者。如需有關標記 IAM 實體 (使用者或角色) 的詳細資訊，請參閱 *IAM User Guide* 中的 [Tagging IAM resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

     下列是 範例。  
![\[指定 Session Manager 執行身分許可標籤的螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/ssn-run-as-tags.png)

1. 選擇**儲存**。

# 開啟工作階段資料的 KMS 金鑰加密 (主控台)
<a name="session-preferences-enable-encryption"></a>

使用 AWS Key Management Service (AWS KMS) 來建立和管理加密金鑰。透過 AWS KMS，您可以在應用程式中控制對各種 AWS 服務 和 加密的使用。您可以指定在受管節點與 中使用者的本機機器之間傳輸的工作階段資料 AWS 帳戶 會使用 KMS 金鑰加密進行加密。（這是除了預設 AWS 已提供的 TLS 1.2/1.3 加密之外。) 若要加密Session Manager工作階段資料，請使用 建立*對稱* KMS 金鑰 AWS KMS。

AWS KMS 加密適用於 `Standard_Stream`、 `InteractiveCommands`和 `NonInteractiveCommands`工作階段類型。若要使用 選項來使用在 中建立的金鑰加密工作階段資料 AWS KMS，必須在受管節點上安裝 2.3.539.0 版 AWS Systems Manager SSM Agent或更新版本。

**注意**  
您必須允許 AWS KMS 加密，才能從 AWS Systems Manager 主控台重設受管節點上的密碼。如需詳細資訊，請參閱[在受管節點上重設密碼](fleet-manager-reset-password.md#managed-instance-reset-a-password)。

您可以使用您在 中建立的金鑰 AWS 帳戶。您也可以使用在不同 AWS 帳戶中建立的金鑰。不同 中金鑰的建立者 AWS 帳戶 必須為您提供使用金鑰所需的許可。

在您啟用工作階段資料的 KMS 金鑰加密後，啟動工作階段的使用者和這些工作階段連接的受管節點必須具有該金鑰的使用許可。您提供透過 Session Manager AWS Identity and Access Management (IAM) 政策使用 KMS 金鑰的許可。如需詳細資訊，請參閱以下主題：
+ 新增您帳戶中使用者的 AWS KMS 許可：[適用於 Session Manager 的範例 IAM 政策](getting-started-restrict-access-quickstart.md)。
+ 新增您帳戶中受管節點的 AWS KMS 許可：[步驟 2：為 Session Manager 確認或新增執行個體許可](session-manager-getting-started-instance-profile.md)。

如需建立和管理 KMS 金輪的詳細資訊，請參閱 [https://docs.aws.amazon.com/kms/latest/developerguide/](https://docs.aws.amazon.com/kms/latest/developerguide/)。

如需有關使用 AWS CLI 開啟您帳戶中工作階段資料的 KMS 金鑰加密的資訊，請參閱 [建立 Session Manager 偏好設定文件 (命令列)](getting-started-create-preferences-cli.md)或 [更新 Session Manager 偏好設定 (命令列)](getting-started-configure-preferences-cli.md)。

**注意**  
使用 KMS 金輪需要付費嗎？ 如需相關資訊，請參閱 [AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/)。

**若要開啟工作階段資料的 KMS 金鑰加密 (主控台)**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Preferences (偏好)** 標籤，然後選擇 **Edit (編輯)**。

1. 選取 **Enable KMS encryption** (啟用 KMS 加密) 旁邊的核取方塊。

1. 執行以下任意一項：
   + 選擇 **Select a KMS key in my current account** (在我目前的帳戶中選取 KMS 金鑰) 旁邊的按鈕，然後從清單中選取金鑰。

     -或-

     選擇 **Enter a KMS key alias or KMS key ARN (輸入 KMS 金鑰別名或 KMS 金鑰 ARN)** 旁的按鈕。為您在目前帳戶中建立的金鑰手動輸入 KMS 金鑰別名，或為另一個帳戶中的金鑰輸入其 Amazon Resource Name (ARN)。範例如下：
     + 金鑰別名：`alias/my-kms-key-alias`
     + 金鑰 ARN：`arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE`

     -或-

     選擇 **Create new key (建立新的金鑰)** 以在您的帳戶中建立新的 KMS 金輪。在建立新的金鑰後，返回 **Preferences (偏好設定)** 標籤，然後選取要用來在您帳戶中加密工作階段資料的金鑰。

   如需共用金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[允許外部 AWS 帳戶 存取金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-external-accounts)。

1. 選擇**儲存**。

# 建立 Session Manager 偏好設定文件 (命令列)
<a name="getting-started-create-preferences-cli"></a>

使用下列程序來建立 SSM 文件，以定義工作階段的 AWS Systems Manager Session Manager偏好設定。您可以使用該文件來設定工作階段選項，包括資料加密、工作階段持續時間和日誌記錄。例如，您可以指定在 Amazon Simple Storage Service (Amazon S3) 儲存貯體或 Amazon CloudWatch Logs 日誌群組中存放工作階段日誌資料的選項。您可以為 AWS 帳戶 和 的所有工作階段建立定義一般偏好設定的文件 AWS 區域，或為個別工作階段定義偏好設定的文件。

**注意**  
您也可以使用 Session Manager 主控台設定一般工作階段偏好設定。

用來設定 Session Manager 偏好設定的文件的 `sessionType` 必須為 `Standard_Stream`。如需有關工作階段文件的詳細資訊，請參閱 [工作階段文件結構描述](session-manager-schema.md)。

如需使用命令列來更新現有 Session Manager 偏好設定的資訊，請參閱 [更新 Session Manager 偏好設定 (命令列)](getting-started-configure-preferences-cli.md)。

如需如何使用 建立工作階段偏好設定的範例 CloudFormation，請參閱*AWS CloudFormation 《 使用者指南*》中的[為Session Manager偏好設定建立 Systems Manager 文件](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html#aws-resource-ssm-document--examples)。

**注意**  
此程序說明如何建立文件，以在 AWS 帳戶 層級設定Session Manager偏好設定。若要建立將用於設定工作階段層級偏好設定的文件，請為檔案名稱相關指令輸入指定初 `SSM-SessionManagerRunShell` 之外的值。  
若要使用文件來設定從 AWS Command Line Interface (AWS CLI) 啟動之工作階段的偏好設定，請提供文件名稱作為 `--document-name` 參數值。若要為從 Session Manager 主控台啟動的工作階段設定偏好設定，您可以輸入文件名稱或從清單中選取文件的名稱。

**建立 Session Manager 偏好設定 (命令列)**

1. 在您的本機電腦建立 JSON 檔案的名稱，例如 `SessionManagerRunShell.json`，然後貼上以下內容。

   ```
   {
       "schemaVersion": "1.0",
       "description": "Document to hold regional settings for Session Manager",
       "sessionType": "Standard_Stream",
       "inputs": {
           "s3BucketName": "",
           "s3KeyPrefix": "",
           "s3EncryptionEnabled": true,
           "cloudWatchLogGroupName": "",
           "cloudWatchEncryptionEnabled": true,
           "cloudWatchStreamingEnabled": false,
           "kmsKeyId": "",
           "runAsEnabled": false,
           "runAsDefaultUser": "",
           "idleSessionTimeout": "",
           "maxSessionDuration": "",
           "shellProfile": {
               "windows": "date",
               "linux": "pwd;ls"
           }
       }
   }
   ```

   您也可以使用參數將值傳遞到工作階段偏好設定，而不是對這些值進行硬編碼，如以下範例所示。

   ```
   {
      "schemaVersion":"1.0",
      "description":"Session Document Parameter Example JSON Template",
      "sessionType":"Standard_Stream",
      "parameters":{
         "s3BucketName":{
            "type":"String",
            "default":""
         },
         "s3KeyPrefix":{
            "type":"String",
            "default":""
         },
         "s3EncryptionEnabled":{
            "type":"Boolean",
            "default":"false"
         },
         "cloudWatchLogGroupName":{
            "type":"String",
            "default":""
         },
         "cloudWatchEncryptionEnabled":{
            "type":"Boolean",
            "default":"false"
         }
      },
      "inputs":{
         "s3BucketName":"{{s3BucketName}}",
         "s3KeyPrefix":"{{s3KeyPrefix}}",
         "s3EncryptionEnabled":"{{s3EncryptionEnabled}}",
         "cloudWatchLogGroupName":"{{cloudWatchLogGroupName}}",
         "cloudWatchEncryptionEnabled":"{{cloudWatchEncryptionEnabled}}",
         "kmsKeyId":""
      }
   }
   ```

1. 指定您要傳送工作階段資料的位置。您可以指定 S3 儲存貯體名稱 (包含選用字首) 或 CloudWatch Logs 日誌群組名稱。如果您想要進一步加密本機用戶端和受管節點的資料，請提供用於加密的 KMS 金鑰。下列是 範例。

   ```
   {
     "schemaVersion": "1.0",
     "description": "Document to hold regional settings for Session Manager",
     "sessionType": "Standard_Stream",
     "inputs": {
       "s3BucketName": "amzn-s3-demo-bucket",
       "s3KeyPrefix": "MyS3Prefix",
       "s3EncryptionEnabled": true,
       "cloudWatchLogGroupName": "MyLogGroupName",
       "cloudWatchEncryptionEnabled": true,
       "cloudWatchStreamingEnabled": false,
       "kmsKeyId": "MyKMSKeyID",
       "runAsEnabled": true,
       "runAsDefaultUser": "MyDefaultRunAsUser",
       "idleSessionTimeout": "20",
       "maxSessionDuration": "60",
       "shellProfile": {
           "windows": "MyCommands",
           "linux": "MyCommands"
       }
     }
   }
   ```
**注意**  
如果您不想加密工作階段日誌資料，請將 `s3EncryptionEnabled` 的 `true` 設為 `false`。  
如果您不是將日誌傳送到 Amazon Simple Storage Service (Amazon S3) 儲存貯體或 CloudWatch Logs 日誌群組、不想加密作用中的工作階段資料，或不想為帳戶中的工作階段啟用執行身分支援，您可以刪除這幾行選項。請確定在 `inputs` 部分最後一行不是用逗號結尾。  
如果您新增可加密工作階段資料的 KMS 金鑰 ID，啟動工作階段的使用者和這些工作階段連接的受管節點必須具有該金鑰的使用許可。您可透過 IAM 政策提供將 KMS 金輪 與 Session Manager 搭配使用的許可。如需詳細資訊，請參閱以下主題：  
新增您帳戶中使用者的 AWS KMS 許可： [適用於 Session Manager 的範例 IAM 政策](getting-started-restrict-access-quickstart.md)
新增您帳戶中受管節點的 AWS KMS 許可： [步驟 2：為 Session Manager 確認或新增執行個體許可](session-manager-getting-started-instance-profile.md)

1. 儲存檔案。

1. 在您建立 JSON 檔案的目錄裡執行下列命令。

------
#### [ Linux & macOS ]

   ```
   aws ssm create-document \
       --name SSM-SessionManagerRunShell \
       --content "file://SessionManagerRunShell.json" \
       --document-type "Session" \
       --document-format JSON
   ```

------
#### [  Windows  ]

   ```
   aws ssm create-document ^
       --name SSM-SessionManagerRunShell ^
       --content "file://SessionManagerRunShell.json" ^
       --document-type "Session" ^
       --document-format JSON
   ```

------
#### [   PowerShell   ]

   ```
   New-SSMDocument `
       -Name "SSM-SessionManagerRunShell" `
       -Content (Get-Content -Raw SessionManagerRunShell.json) `
       -DocumentType "Session" `
       -DocumentFormat JSON
   ```

------

   如果成功，此命令傳回的輸出會類似如下。

   ```
   {
       "DocumentDescription": {
           "Status": "Creating",
           "Hash": "ce4fd0a2ab9b0fae759004ba603174c3ec2231f21a81db8690a33eb66EXAMPLE",
           "Name": "SSM-SessionManagerRunShell",
           "Tags": [],
           "DocumentType": "Session",
           "PlatformTypes": [
               "Windows",
               "Linux"
           ],
           "DocumentVersion": "1",
           "HashType": "Sha256",
           "CreatedDate": 1547750660.918,
           "Owner": "111122223333",
           "SchemaVersion": "1.0",
           "DefaultVersion": "1",
           "DocumentFormat": "JSON",
           "LatestVersion": "1"
       }
   }
   ```

# 更新 Session Manager 偏好設定 (命令列)
<a name="getting-started-configure-preferences-cli"></a>

下列程序說明如何使用您偏好的命令列工具，對所選 AWS Systems Manager Session Manager AWS 帳戶 中的 偏好設定進行變更 AWS 區域。使用 Session Manager 偏好設定，以指定在 Amazon Simple Storage Service (Amazon S3) 儲存貯體或 Amazon CloudWatch Logs 日誌群組中記錄工作階段資料的選項。您也可以使用 Session Manager 偏好設定來加密工作階段資料。

**更新 Session Manager 偏好設定 (命令列)**

1. 在您的本機電腦建立 JSON 檔案的名稱，例如 `SessionManagerRunShell.json`，然後貼上以下內容。

   ```
   {
       "schemaVersion": "1.0",
       "description": "Document to hold regional settings for Session Manager",
       "sessionType": "Standard_Stream",
       "inputs": {
           "s3BucketName": "",
           "s3KeyPrefix": "",
           "s3EncryptionEnabled": true,
           "cloudWatchLogGroupName": "",
           "cloudWatchEncryptionEnabled": true,
           "cloudWatchStreamingEnabled": false,
           "kmsKeyId": "",
           "runAsEnabled": true,
           "runAsDefaultUser": "",
           "idleSessionTimeout": "",
           "maxSessionDuration": "",
           "shellProfile": {
               "windows": "date",
               "linux": "pwd;ls"
           }
       }
   }
   ```

1. 指定您要傳送工作階段資料的位置。您可以指定 S3 儲存貯體名稱 (包含選用字首) 或 CloudWatch Logs 日誌群組名稱。如果您想要進一步加密本機用戶端與受管節點之間的資料，請提供 AWS KMS key 以用於加密。下列是 範例。

   ```
   {
     "schemaVersion": "1.0",
     "description": "Document to hold regional settings for Session Manager",
     "sessionType": "Standard_Stream",
     "inputs": {
       "s3BucketName": "amzn-s3-demo-bucket",
       "s3KeyPrefix": "MyS3Prefix",
       "s3EncryptionEnabled": true,
       "cloudWatchLogGroupName": "MyLogGroupName",
       "cloudWatchEncryptionEnabled": true,
       "cloudWatchStreamingEnabled": false,
       "kmsKeyId": "MyKMSKeyID",
       "runAsEnabled": true,
       "runAsDefaultUser": "MyDefaultRunAsUser",
       "idleSessionTimeout": "20",
       "maxSessionDuration": "60",
       "shellProfile": {
           "windows": "MyCommands",
           "linux": "MyCommands"
       }
     }
   }
   ```
**注意**  
如果您不想加密工作階段日誌資料，請將 `s3EncryptionEnabled` 的 `true` 設為 `false`。  
如果您不是將日誌傳送到 Amazon Simple Storage Service (Amazon S3) 儲存貯體或 CloudWatch Logs 日誌群組、不想加密作用中的工作階段資料，或不想為帳戶中的工作階段啟用執行身分支援，您可以刪除這幾行選項。請確定在 `inputs` 部分最後一行不是用逗號結尾。  
如果您新增可加密工作階段資料的 KMS 金鑰 ID，啟動工作階段的使用者和這些工作階段連接的受管節點必須具有該金鑰的使用許可。您提供透過 Session Manager AWS Identity and Access Management (IAM) 政策使用 KMS 金鑰的許可。如需詳細資訊，請參閱以下主題：  
新增您帳戶中使用者的 AWS KMS 許可：[適用於 Session Manager 的範例 IAM 政策](getting-started-restrict-access-quickstart.md)。
新增您帳戶中受管節點的 AWS KMS 許可：[步驟 2：為 Session Manager 確認或新增執行個體許可](session-manager-getting-started-instance-profile.md)。

1. 儲存檔案。

1. 在您建立 JSON 檔案的目錄裡執行下列命令。

------
#### [ Linux & macOS ]

   ```
   aws ssm update-document \
       --name "SSM-SessionManagerRunShell" \
       --content "file://SessionManagerRunShell.json" \
       --document-version "\$LATEST"
   ```

------
#### [  Windows  ]

   ```
   aws ssm update-document ^
       --name "SSM-SessionManagerRunShell" ^
       --content "file://SessionManagerRunShell.json" ^
       --document-version "$LATEST"
   ```

------
#### [   PowerShell   ]

   ```
   Update-SSMDocument `
       -Name "SSM-SessionManagerRunShell" `
       -Content (Get-Content -Raw SessionManagerRunShell.json) `
       -DocumentVersion '$LATEST'
   ```

------

   如果成功，此命令傳回的輸出會類似如下。

   ```
   {
       "DocumentDescription": {
           "Status": "Updating",
           "Hash": "ce4fd0a2ab9b0fae759004ba603174c3ec2231f21a81db8690a33eb66EXAMPLE",
           "Name": "SSM-SessionManagerRunShell",
           "Tags": [],
           "DocumentType": "Session",
           "PlatformTypes": [
               "Windows",
               "Linux"
           ],
           "DocumentVersion": "2",
           "HashType": "Sha256",
           "CreatedDate": 1537206341.565,
           "Owner": "111122223333",
           "SchemaVersion": "1.0",
           "DefaultVersion": "1",
           "DocumentFormat": "JSON",
           "LatestVersion": "2"
       }
   }
   ```

# 步驟 5：(選用) 限制對工作階段中命令的存取
<a name="session-manager-restrict-command-access"></a>

您可以使用自訂`Session`類型 AWS Systems Manager (SSM) 文件，限制使用者可以在 AWS Systems Manager Session Manager工作階段中執行的命令。在文件中，您可以定義當使用者啟動工作階段時所執行的命令，以及可以提供給命令的參數。`Session` 文件 `schemaVersion` 必須為 1.0，且文件的 `sessionType` 必須為 `InteractiveCommands`。接著，您可以建立 AWS Identity and Access Management (IAM) 政策，只允許使用者存取您定義的 `Session` 文件。如需使用 IAM 政策來限制對工作階段中命令之存取權的詳細資訊，請參閱 [互動式命令的 IAM 政策範例](#interactive-command-policy-examples)。

具有 `sessionType`的 文件`InteractiveCommands`僅支援從 AWS Command Line Interface () 啟動的工作階段AWS CLI。使用者提供自訂文件名稱做為 `--document-name` 參數值，並使用 `--parameters` 選項提供任何命令參數值。若要取得有關執行互動式命令的詳細資訊，請參閱[啟動工作階段 (互動和非互動式命令)](session-manager-working-with-sessions-start.md#sessions-start-interactive-commands)。

使用以下程序建立自訂 `Session` 類型 SSM 文件，以定義允許使用者執行的命令。

## 限制對工作階段中命令的存取 (主控台)
<a name="restrict-command-access-console"></a>

**限制使用者可以在 Session Manager 工作階段中執行的命令 (主控台)**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Documents (文件)**。

1. 選擇 **Create command or session (建立命令或工作階段)**。

1. 對於 **Name** (名稱)，輸入文件的描述性名稱。

1. 對於 **Document type (文件類型)**，請選擇 **Session document (工作階段文件)**。

1. 使用 JSON 或 YAML 輸入定義使用者可在 Session Manager 工作階段中執行之命令的文件內容，如下列範例所示。

------
#### [ YAML ]

   ```
   ---
   schemaVersion: '1.0'
   description: Document to view a log file on a Linux instance
   sessionType: InteractiveCommands
   parameters:
     logpath:
       type: String
       description: The log file path to read.
       default: "/var/log/amazon/ssm/amazon-ssm-agent.log"
       allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$"
   properties:
     linux:
       commands: "tail -f {{ logpath }}"
       runAsElevated: true
   ```

------
#### [ JSON ]

   ```
   {
       "schemaVersion": "1.0",
       "description": "Document to view a log file on a Linux instance",
       "sessionType": "InteractiveCommands",
       "parameters": {
           "logpath": {
               "type": "String",
               "description": "The log file path to read.",
               "default": "/var/log/amazon/ssm/amazon-ssm-agent.log",
               "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$"
           }
       },
       "properties": {
           "linux": {
               "commands": "tail -f {{ logpath }}",
               "runAsElevated": true
           }
       }
   }
   ```

------

1. 選擇 **Create document (建立文件)**。

## 限制對工作階段中命令的存取 (命令列)
<a name="restrict-command-access-commandline"></a>

**開始之前**  
如果您尚未安裝，請安裝並設定 AWS Command Line Interface (AWS CLI) 或 AWS Tools for PowerShell。如需相關資訊，請參閱[安裝或更新 AWS CLI的最新版本](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)和[安裝 AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html)。

**限制使用者可以在 Session Manager 工作階段中執行的命令 (命令列)**

1. 為定義使用者可在 Session Manager 工作階段中執行之命令的文件內容建立 JSON 或 YAML 檔案，如下列範例所示。

------
#### [ YAML ]

   ```
   ---
   schemaVersion: '1.0'
   description: Document to view a log file on a Linux instance
   sessionType: InteractiveCommands
   parameters:
     logpath:
       type: String
       description: The log file path to read.
       default: "/var/log/amazon/ssm/amazon-ssm-agent.log"
       allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$"
   properties:
     linux:
       commands: "tail -f {{ logpath }}"
       runAsElevated: true
   ```

------
#### [ JSON ]

   ```
   {
       "schemaVersion": "1.0",
       "description": "Document to view a log file on a Linux instance",
       "sessionType": "InteractiveCommands",
       "parameters": {
           "logpath": {
               "type": "String",
               "description": "The log file path to read.",
               "default": "/var/log/amazon/ssm/amazon-ssm-agent.log",
               "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$"
           }
       },
       "properties": {
           "linux": {
               "commands": "tail -f {{ logpath }}",
               "runAsElevated": true
           }
       }
   }
   ```

------

1. 執行下列命令，以使用定義使用者可在 Session Manager 工作階段中執行之命令的內容來建立 SSM 文件。

------
#### [ Linux & macOS ]

   ```
   aws ssm create-document \
       --content file://path/to/file/documentContent.json \
       --name "exampleAllowedSessionDocument" \
       --document-type "Session"
   ```

------
#### [  Windows  ]

   ```
   aws ssm create-document ^
       --content file://C:\path\to\file\documentContent.json ^
       --name "exampleAllowedSessionDocument" ^
       --document-type "Session"
   ```

------
#### [   PowerShell   ]

   ```
   $json = Get-Content -Path "C:\path\to\file\documentContent.json" | Out-String
   New-SSMDocument `
       -Content $json `
       -Name "exampleAllowedSessionDocument" `
       -DocumentType "Session"
   ```

------

## 互動式命令參數和 AWS CLI
<a name="restrict-command-access-parameters-cli"></a>

使用 AWS CLI時，您可以透過多種方式提供互動式命令參數。根據您用來使用 連線至受管節點的用戶端機器作業系統 (OS) AWS CLI，您為包含特殊或逸出字元的命令提供的語法可能會有所不同。下列範例顯示使用 時，您可以提供命令參數的一些不同方式 AWS CLI，以及如何處理特殊或逸出字元。

Parameter Store 您可以在 中參考存放在 中的參數 AWS CLI ，以取得命令參數，如下列範例所示。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name MyInteractiveCommandDocument \ 
    --parameters '{"command":["{{ssm:mycommand}}"]}'
```

------
#### [  Windows  ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name MyInteractiveCommandDocument ^
    --parameters '{"command":["{{ssm:mycommand}}"]}'
```

------

以下範例示範如何搭配使用速記語法與 AWS CLI 來傳遞參數。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name MyInteractiveCommandDocument \ 
    --parameters command="ifconfig"
```

------
#### [  Windows  ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name MyInteractiveCommandDocument ^
    --parameters command="ipconfig"
```

------

您也可以在 JSON 中提供參數，如以下範例所示。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name MyInteractiveCommandDocument \ 
    --parameters '{"command":["ifconfig"]}'
```

------
#### [  Windows  ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name MyInteractiveCommandDocument ^
    --parameters '{"command":["ipconfig"]}'
```

------

參數也可以存放在 JSON 檔案中，並提供給 AWS CLI ，如下列範例所示。如需有關在檔案中使用 AWS CLI 參數的詳細資訊，請參閱《*AWS Command Line Interface 使用者指南*》中的[從檔案中載入 AWS CLI 參數](https://docs.aws.amazon.com/cli/latest/userguide/;cli-usage-parameters-file.html)。

```
{
    "command": [
        "my command"
    ]
}
```

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name MyInteractiveCommandDocument \ 
    --parameters file://complete/path/to/file/parameters.json
```

------
#### [  Windows  ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name MyInteractiveCommandDocument ^
    --parameters file://complete/path/to/file/parameters.json
```

------

您也可以從 JSON AWS CLI 輸入檔案產生骨架，如下列範例所示。如需從 JSON AWS CLI 輸入檔案產生骨架的詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的[從 JSON 或 YAML 輸入檔案產生 AWS CLI 骨架和輸入參數](https://docs.aws.amazon.com/cli/latest/userguide/;cli-usage-skeleton.html)。

```
{
    "Target": "instance-id",
    "DocumentName": "MyInteractiveCommandDocument",
    "Parameters": {
        "command": [
            "my command"
        ]
    }
}
```

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --cli-input-json file://complete/path/to/file/parameters.json
```

------
#### [  Windows  ]

```
aws ssm start-session ^
    --cli-input-json file://complete/path/to/file/parameters.json
```

------

若要逸出引號內的字元，您必須將其他反斜線新增至逸出字元，如下列範例所示。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name MyInteractiveCommandDocument \ 
    --parameters '{"command":["printf \"abc\\\\tdef\""]}'
```

------
#### [  Windows  ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name MyInteractiveCommandDocument ^
    --parameters '{"command":["printf \"abc\\\\tdef\""]}'
```

------

如需有關在 AWS CLI中搭配使用引號與命令參數的詳細資訊，請參閱《*AWS Command Line Interface 使用者指南*》中的[在 AWS CLI中搭配使用引號與字串](https://docs.aws.amazon.com/cli/latest/userguide/;cli-usage-parameters-quoting-strings.html)。

## 互動式命令的 IAM 政策範例
<a name="interactive-command-policy-examples"></a>

您可以建立 IAM 政策，只允許使用者存取您定義的 `Session` 文件。這會將使用者可在 Session Manager 工作階段中執行的命令，限制為僅限您的自訂 `Session` 類型 SSM 文件中定義的命令。

 **允許使用者在單一受管節點上執行互動式命令**     
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ssm:StartSession",
         "Resource":[
            "arn:aws:ec2:us-east-1:444455556666:instance/i-02573cafcfEXAMPLE",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document"
         ]
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
      }
   ]
}
```

 **允許使用者在所有受管節點上執行互動式命令**     
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ssm:StartSession",
         "Resource":[
            "arn:aws:ec2:us-east-1:444455556666:instance/*",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document"
         ]
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
      }
   ]
}
```

 **允許使用者在所有受管節點上執行多個互動式命令**     
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ssm:StartSession",
         "Resource":[
            "arn:aws:ec2:us-east-1:444455556666:instance/*",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document-2"
         ]
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
      }
   ]
}
```

# 步驟 6：（選用） AWS PrivateLink 使用 設定 的 VPC 端點 Session Manager
<a name="session-manager-getting-started-privatelink"></a>

您可以將 AWS Systems Manager 設定成使用界面 virtual private cloud (VPC) 端點，以提升您受管節點的安全狀態。介面端點採用一種技術 AWS PrivateLink，可讓您使用私有 IP 地址私下存取 Amazon Elastic Compute Cloud (Amazon EC2) 和 Systems Manager APIs。

AWS PrivateLink 會將受管節點、Systems Manager 和 Amazon EC2 之間的所有網路流量限制在 Amazon 網路。(受管階段無法存取網際網路。) 此外，您不需要網際網路閘道、NAT 裝置或虛擬私有閘道。

如需有關建立 VPC 端點的資訊，請參閱[使用適用於 Systems Manager 的 VPC 端點來改善 EC2 執行個體的安全性](setup-create-vpc.md)。

使用 VPC 端點的替代方案是在您的受管節點上啟用對外網際網路存取。在此情況下，受管節點也必須允許 HTTPS (連接埠 443) 傳出流量至下列端點：
+  `ec2messages.region.amazonaws.com` 
+  `ssm.region.amazonaws.com` 
+  `ssmmessages.region.amazonaws.com` 

Systems Manager 使用這些端點的最後一個 (`ssmmessages.region.amazonaws.com`)，從 SSM Agent 中呼叫雲端中的 Session Manager 服務。

若要使用選用的功能，例如 AWS Key Management Service (AWS KMS) 加密、將日誌串流至 Amazon CloudWatch Logs (CloudWatch Logs)，以及將日誌傳送至 Amazon Simple Storage Service (Amazon S3)，您必須允許 HTTPS （連接埠 443) 傳出流量至下列端點：
+  `kms.region.amazonaws.com` 
+  `logs.region.amazonaws.com` 
+  `s3.region.amazonaws.com` 

如需 Systems Manager 所需端點的詳細資訊，請參閱[參考：ec2messages、ssmmessages 和其他 API 操作](systems-manager-setting-up-messageAPIs.md)。

# 步驟 7：(選用) 啟用或停用 ssm-user 帳戶管理許可
<a name="session-manager-getting-started-ssm-user-permissions"></a>

從 2.3.50.0 版開始 AWS Systems Manager SSM Agent，代理程式會建立名為 的本機使用者帳戶，`ssm-user`並將其新增至 `/etc/sudoers`(Linux 和 macOS) 或管理員群組 ()Windows。在代理程式 2.3.612.0 之前的版本中，當 SSM Agent 第一次啟動，或在安裝後重新啟動時，會建立該帳戶。在版本 2.3.612.0 和更高版本中，當受管節點上初次啟動工作階段時，會建立 `ssm-user` 帳戶。`ssm-user` 這是工作階段開始時的預設作業系統 (OS) 使用者 AWS Systems Manager Session Manager。2019 年 5 月 8 日發行 2.3.612.0 SSM Agent版。

如果您想要防止 Session Manager 使用者在節點上執行管理命令，您可以更新其 `ssm-user` 帳戶許可。您也可以移除這些權限之後恢復權限。

**Topics**
+ [在 Linux 和 macOS 上管理 ssm-user sudo 帳戶許可](#ssm-user-permissions-linux)
+ [在 Windows Server 上管理 ssm-user 管理員帳戶許可](#ssm-user-permissions-windows)

## 在 Linux 和 macOS 上管理 ssm-user sudo 帳戶許可
<a name="ssm-user-permissions-linux"></a>

使用以下其中一個程序來停用或啟用在 Linux 和 macOS 受管節點上 ssm-user 帳戶的 sudo 許可：

**使用 Run Command 修改 ssm-user sudo 許可 (主控台)**
+ 搭配以下值在 [從主控台執行命令](running-commands-console.md) 中使用程序：
  + 如需 **Command document** (命令文件)，請選擇 `AWS-RunShellScript`。
  + 移除 sudo 存取，在 **Command parameters** (命令參數) 區裡的 **Commands** (命令) 方塊貼上以下內容。

    ```
    cd /etc/sudoers.d
    echo "#User rules for ssm-user" > ssm-agent-users
    ```

    -或-

    要恢復 sudo 存取，請在 **Command parameters** (命令參數) 區裡的 **Commands** (命令) 方塊貼上以下內容。

    ```
    cd /etc/sudoers.d 
    echo "ssm-user ALL=(ALL) NOPASSWD:ALL" > ssm-agent-users
    ```

**使用命令列修改 ssm-user sudo 許可 (AWS CLI)**

1. 連線至受管節點並執行下列命令。

   ```
   sudo -s
   ```

1. 使用下列命令變更工作目錄。

   ```
   cd /etc/sudoers.d
   ```

1. 開啟檔案 `ssm-agent-users` 進行編輯。

1. 移除 sudo 存取、刪除下行。

   ```
   ssm-user ALL=(ALL) NOPASSWD:ALL
   ```

   -或-

   要還原 sudo 存取，請新增下行：

   ```
   ssm-user ALL=(ALL) NOPASSWD:ALL
   ```

1. 儲存檔案。

## 在 Windows Server 上管理 ssm-user 管理員帳戶許可
<a name="ssm-user-permissions-windows"></a>

使用以下其中一個程序來停用或啟用在 Windows Server 受管節點上 ssm-user 帳戶的管理者許可：

**使用 Run Command 來修改管理者許可 (主控台)**
+ 搭配以下值在 [從主控台執行命令](running-commands-console.md) 中使用程序：

  如需 **Command document** (命令文件)，請選擇 `AWS-RunPowerShellScript`。

  移除管理的存取，在 **Command parameters** (命令參數) 區域裡，在 **Commands** (命令) 方塊貼上以下內容。

  ```
  net localgroup "Administrators" "ssm-user" /delete
  ```

  -或-

  移除恢復的存取，在 **Command parameters** (命令參數) 區域裡，在 **Commands** (命令) 方塊貼上以下內容。

  ```
  net localgroup "Administrators" "ssm-user" /add
  ```

**使用 PowerShell 或命令提示字元視窗修改管理員許可**

1. 連接到受管節點，並開啟 PowerShell 或命令提示字元視窗。

1. 移除管理的存取、執行下列命令。

   ```
   net localgroup "Administrators" "ssm-user" /delete
   ```

   -或-

   要復原管理的存取，請執行下列命令。

   ```
   net localgroup "Administrators" "ssm-user" /add
   ```

**使用 Windows 主控台修改管理員許可**

1. 連接到受管節點，並開啟 PowerShell 或命令提示字元視窗。

1. 從命令列執行 `lusrmgr.msc` 以開啟 **Local Users and Groups (本機使用者和群組)** 主控台。

1. 開啟 ** Users (使用者)** 目錄，然後開放 **ssm-user**。

1. 在 **Member Of (成員)** 標籤，執行以下其中一項：
   + 移除管理的存取，選取 **Administrators (管理員)**，然後選擇 **Remove (移除)**。

     -或-

     若要恢復的管理存取，在文字方塊裡輸入 **Administrators**，然後選擇 **Add** (新增)。

1. 選擇**確定**。

# 步驟 8：(選用) 透過 Session Manager 允許和控制 SSH 連線的許可
<a name="session-manager-getting-started-enable-ssh-connections"></a>

您可以允許 中的使用者 AWS 帳戶 使用 AWS Command Line Interface (AWS CLI) 來建立與 受管節點的 Secure Shell (SSH) 連線 AWS Systems Manager Session Manager。使用 SSH 連線的使用者也可以在其本機電腦和受管節點，使用 Secure Copy Protocol (SCP) 來複製檔案。您可以使用此功能，不需開啟傳入連接埠或維持堡壘主機，即可連接至受管節點。

 當您透過 建立 SSH 連線時Session Manager， AWS CLI 會透過 TLS 建立與Session Manager端點SSM Agent的安全 WebSocket 連線。SSH 工作階段會在此加密通道內執行，提供額外的安全層，而不需要在您的受管節點上開啟傳入連接埠。

允許 SSH 連線後，您可以使用 AWS Identity and Access Management (IAM) 政策明確允許或拒絕使用者、群組或角色使用 進行 SSH 連線Session Manager。

**注意**  
透過連接埠轉送或 SSH 連線的 Session Manager 工作階段無法使用日誌記錄功能。這是因為 SSH 會在 和 Session Manager端點之間建立的安全 TLS AWS CLI 連線內加密所有工作階段資料，並且Session Manager僅做為 SSH 連線的通道。

**Topics**
+ [允許 Session Manager 的 SSH 連線](#ssh-connections-enable)
+ [透過 Session Manager 控制 SSH 連線的使用者許可](#ssh-connections-permissions)

## 允許 Session Manager 的 SSH 連線
<a name="ssh-connections-enable"></a>

使用下列步驟透過 Session Manager 在受管節點上允許 SSH 連線。

**允許 Session Manager 的 SSH 連線**

1. 在您要啟用 SSH 連線的受管節點，執行下列作業：
   + 請確定 SSH 是在受管節點上執行。(您可以關閉節點上的傳入連接埠。)
   + 確保受管節點上已安裝 SSM Agent 2.3.672.0 版或更新版本。

     如需在受管節點安裝或更新 SSM Agent 的詳細資訊，請參閱下列主題：
     + [在 Windows Server EC2 執行個體上手動安裝和解除安裝 SSM Agent](manually-install-ssm-agent-windows.md).
     +  [在 Linux EC2 執行個體上手動安裝和解除安裝 SSM Agent](manually-install-ssm-agent-linux.md) 
     +  [在 macOS EC2 執行個體上手動安裝和解除安裝 SSM Agent](manually-install-ssm-agent-macos.md) 
     +  [如何在混合 Windows 節點上安裝 SSM Agent](hybrid-multicloud-ssm-agent-install-windows.md) 
     +  [如何在混合 Linux 節點上安裝 SSM Agent](hybrid-multicloud-ssm-agent-install-linux.md) 
**注意**  
若要將 Session Manager 與內部部署伺服器、邊緣裝置和您啟用作為受管節點的虛擬機器 (VM) 搭配使用，您必須使用進階執行個體層。如需進階執行個體的詳細資訊，請參閱 [設定執行個體方案](fleet-manager-configure-instance-tiers.md)。

1. 在您要使用 SSH 連接到受管節點的本機機器上，執行下列動作：
   + 確保已安裝 Session Manager 外掛程式的 1.1.23.0 版或更新版本。

     如需安裝 Session Manager 外掛程式的詳細資訊，請參閱 [安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)。
   + 更新 SSH 設定檔可讓開始 Session Manager 工作階段的代理命令得以執行，並透過該連接傳輸所有資料。

      **Linux 和 macOS** 
**提示**  
SSH 組態檔案通常位於 `~/.ssh/config`。

     將以下內容新增至本機機器上的組態檔。

     ```
     # SSH over Session Manager
     Host i-* mi-*
         ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
         User ec2-user
     ```

      ** Windows ** 
**提示**  
SSH 組態檔案通常位於 `C:\Users\<username>\.ssh\config`。

     將以下內容新增至本機機器上的組態檔。

     ```
     # SSH over Session Manager
     Host i-* mi-*
         ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p"
     ```
   + 建立或驗證您擁有隱私增強郵件 (PEM 檔案) 憑證，或至少擁有公有金鑰，可在建立與受管節點的連線時使用。這必須是已與受管節點相關聯的索引鍵。必須設定私有金鑰檔案的許可，確保只有您可以讀取此檔案。您可以使用下列命令來設定私有金鑰檔案的許可，確保只有您可以讀取此檔案。

     ```
     chmod 400 <my-key-pair>.pem
     ```

     例如，對於 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體，則是您在建立執行個體時建立或選取的金鑰對檔案。(您可以將憑證或金鑰的路徑指定為啟動工作階段命令的一部分。如需有關使用 SSH 啟動工作階段的資訊，請參閱 [啟動工作階段 (SSH)](session-manager-working-with-sessions-start.md#sessions-start-ssh)。)

## 透過 Session Manager 控制 SSH 連線的使用者許可
<a name="ssh-connections-permissions"></a>

透過 Session Manager 在受管節點上啟用 SSH 連線後，您可以使用 IAM 政策來允許或拒絕使用者、群組或角色透過 Session Manager 進行 SSH 連線。

**若要使用 IAM 政策允許透過 Session Manager 進行 SSH 連線**
+ 使用下列其中一個選項：
  + **選項 1**：在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

    在導覽窗格中，選擇 **Policies (政策)**，然後更新您要允許透過 Session Manager 啟動 SSH 連線之使用者或角色的許可政策。

    例如，將下列元素新增至您在 [Session Manager的最終使用者政策快速入門](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user) 中建立的 Quickstart 政策。將每個*範例資源預留位置*取代為您自己的資訊。

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ssm:StartSession",
                "Resource": [
                    "arn:aws:ec2:us-east-1:111122223333:instance/instance-id",
                    "arn:aws:ssm:*:*:document/AWS-StartSSHSession"
                ]
            },
            {
                "Effect": "Allow",
                "Action": "ssmmessages:OpenDataChannel",
                "Resource": "arn:aws:ssm:*:*:session/${aws:userid}-*"
            }
        ]
    }
    ```

------
  + **選項 2**：使用 AWS CLI AWS 管理主控台、 或 AWS API 將內嵌政策連接至使用者政策。

    使用您選擇的方法，將**選項 1 **中的政策陳述式連接到 AWS 使用者、群組或角色的政策。

    如需相關資訊，請參閱《IAM 使用者指南**》中的[新增和移除 IAM 身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

**若要使用 IAM 政策拒絕透過 Session Manager 進行 SSH 連線**
+ 使用下列其中一個選項：
  + **選項 1**：在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。在導覽窗格中，選擇 **Policies (政策)**，然後更新使用者或角色的許可政策，以防止他們啟動 Session Manager 工作階段。

    例如，將下列元素新增至您在 [Session Manager的最終使用者政策快速入門](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user) 中建立的 Quickstart 政策。

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Deny",
                "Action": "ssm:StartSession",
                "Resource": "arn:aws:ssm:*:*:document/AWS-StartSSHSession"
            },
            {
                "Effect": "Allow",
                "Action": "ssmmessages:OpenDataChannel",
                "Resource": "arn:aws:ssm:*:*:session/${aws:userid}-*"
            }
        ]
    }
    ```

------
  + **選項 2**：使用 AWS CLI AWS 管理主控台、 或 AWS API 將內嵌政策連接至使用者政策。

    使用您選擇的方法，將**選項 1 **中的政策陳述式連接到 AWS 使用者、群組或角色的政策。

    如需相關資訊，請參閱《IAM 使用者指南**》中的[新增和移除 IAM 身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

# 使用 Session Manager
<a name="session-manager-working-with"></a>

您可以使用 AWS Systems Manager 主控台、Amazon Elastic Compute Cloud (Amazon EC2) 主控台或 AWS Command Line Interface (AWS CLI) 來啟動將您連線至 Amazon EC2 受管節點的工作階段，您的系統管理員已使用 AWS Identity and Access Management (IAM) 政策授權您存取這些工作階段。根據您的許可，您也可以檢視工作階段的相關資訊、恢復尚未逾時的非作用中工作階段，以及結束工作階段。工作階段在建立之後不受 IAM 角色工作階段持續時間的影響。如需資訊了解如何利用 Session Manager 限制工作階段持續時間，請參閱 [指定閒置工作階段逾時值](session-preferences-timeout.md) 與 [指定工作階段持續時間上限](session-preferences-max-timeout.md)。

如需工作階段的詳細資訊，請參閱[什麼是工作階段？](session-manager.md#what-is-a-session)

**Topics**
+ [安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)
+ [啟動工作階段](session-manager-working-with-sessions-start.md)
+ [結束工作階段](session-manager-working-with-sessions-end.md)
+ [檢視工作階段歷史記錄](session-manager-working-with-view-history.md)

# 安裝 的Session Manager外掛程式 AWS CLI
<a name="session-manager-working-with-install-plugin"></a>

若要使用 AWS Command Line Interface (AWS CLI) 啟動受管節點的 Session Manager 工作階段，您必須在本機機器上安裝 *Session Manager 外掛程式*。您可以在受支援的 Microsoft Windows Server、macOS、Linux 和 Ubuntu Server 版本上安裝此外掛程式。

**注意**  
若要使用 Session Manager 外掛程式，您必須在本機電腦上安裝 1.16.12 AWS CLI 版或更新版本。如需詳細資訊，請參閱[安裝或更新最新版本的 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

**Topics**
+ [Session Manager 外掛程式最新版本和版本歷史記錄](plugin-version-history.md)
+ [在 Windows 上安裝 Session Manager 外掛程式](install-plugin-windows.md)
+ [在 macOS 上安裝 Session Manager 外掛程式](install-plugin-macos-overview.md)
+ [在 Linux 上安裝 Session Manager 外掛程式](install-plugin-linux-overview.md)
+ [驗證 Session Manager 外掛程式安裝](install-plugin-verify.md)
+ [GitHub 上的外掛程式 Session Manager](plugin-github.md)
+ [(選用) 開啟 Session Manager 外掛程式日誌](install-plugin-configure-logs.md)

# Session Manager 外掛程式最新版本和版本歷史記錄
<a name="plugin-version-history"></a>

您的本機電腦必須在支援 Session Manager 外掛程式的版本上執行。目前最低的支援版本為 1.1.17.0。如果您執行之前的版本，您的 Session Manager 操作可能不會成功。

 

若要查看如果您是否有最新的版本，請在 AWS CLI執行下列命令。

**注意**  
只在外掛程式位於您作業系統類型適用的預設安裝目錄位置中，此命令才會傳回結果。您也可以透過在您已安裝外掛程式的目錄中 `VERSION` 檔案的內容檢查版本。

```
session-manager-plugin --version
```

下表列出所有 Session Manager 外掛程式的版本及每個版本包含的功能及加強功能。

**重要**  
我們建議您一律使用最新版本。最新版本包含可改善外掛程式使用體驗的增強功能。


| 版本 | 版本日期 | 詳細資訊 | 
| --- | --- | --- | 
| 1.2.792.0 |  2026 年 3 月 17 日  | **錯誤修正**：新增 Windows 的國際鍵盤支援。 | 
| 1.2.779.0 |  2026 年 2 月 12 日  | **增強功能**：在 Dockerfile 中將 Go 版本更新為 1.25。 **錯誤修正**：將 shebang 行新增至 debian 封裝指令碼。 | 
| 1.2.764.0 |  2025 年 11 月 19 日  | **增強功能**：新增簽署 OpenDataChannel 請求的支援。 **錯誤修正**：修正檢查樣式問題，以支援較新的 Go 版本。 | 
| 1.2.707.0 |  2025 年 2 月 6 日  | **增強功能**：已將 Dockerfile 中的 Go 版本升級至 1.23。更新了 README 中的版本組態步驟。 | 
| 1.2.694.0 |  2024 年 11 月 20 日  | **錯誤修正**：已復原將憑證新增至 OpenDataChannel 請求的變更。 | 
| 1.2.688.0 |  2024 年 11 月 6 日  | **此版本已於 2024 年 11 月 20 日遭棄用。** **增強功能**：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/plugin-version-history.html) | 
| 1.2.677.0 |  2024 年 10 月 10 日  | **增強功能**：新增了支援使用 OpenDataChannel 請求傳遞外掛程式版本。 | 
| 1.2.650.0 |  2024 年 7 月 2 日  | **增強功能**：將 Go SDK 升級到了 1.54.10 版。**錯誤修正**：重新格式化了 gofmt 檢查的說明。 | 
| 1.2.633.0 |  2024 年 5 月 30 日  | 增強功能：更新了 Dockerfile 以使用 Amazon Elastic Container Registry (Amazon ECR) 映像。 | 
| 1.2.553.0 |  2024 年 1 月 10 日  | 增強功能：升級了 aws-sdk-go 和相依的 Golang 套件。 | 
| 1.2.536.0 |  2023 年 12 月 4 日  | 增強功能：新增將 [StartSession](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartSession.html) API 回應作為環境變數傳遞給 session-manager-plugin 的支援。 | 
| 1.2.497.0 |  2023 年 8 月 1 日  | 增強功能：將 Go SDK 升級到 1.44.302 版。 | 
| 1.2.463.0 |  2023 年 3 月 15 日  | 增強功能：在 macOS 捆綁安裝程式和已簽署安裝程式中新增了對 Apple Mac (M1) 的 Mac with Apple silicon 支援。 | 
| 1.2.398.0 |  2022 年 10 月 14 日  | 增強︰支援 golang 1.17 版。更新 macOS 的預設 session-manager-plugin 執行器以使用 python3。將匯入路徑從 SSMCLI 更新為 session-manager-plugin。 | 
| 1.2.339.0 |  2022 年 6 月 16 日  | 錯誤修正：針對連接埠工作階段修復閒置工作階段逾時問題。 | 
| 1.2.331.0 |  2022 年 5 月 27 日  | 錯誤修正：當本機伺服務器在讀取逾時前未完成連線時，修復連接埠工作階段提早關閉的問題。 | 
| 1.2.323.0 |  2022 年 5 月 19 日  | 錯誤修正：停用 smux 持續作用功能來使用閒置工作階段逾時功能。 | 
| 1.2.312.0 |  2022 年 3 月 31 日  | 改進︰支援更多輸出訊息承載類型。 | 
| 1.2.295.0 |  2022 年 1 月 12 日  | 錯誤修正：當代理程式處於非作用狀態時，用戶端重新傳送串流資料導致的工作階段停止回應，以及 start\$1publication 和 pause\$1publication 訊息的不正確日誌。 | 
| 1.2.279.0 |  2021 年 10 月 27 日  | 增強功能：適用於 Windows 平台的 zip 封裝。 | 
| 1.2.245.0 |  2021 年 8 月 19 日  | 改進︰將 aws-sdk-go 升級至最新版 (1.40.17 版) 以支援 AWS IAM Identity Center。 | 
| 1.2.234.0 |  2021 年 7 月 26 日  | 錯誤修正：處理交互式工作階段類型中的工作階段突然終止的情況。 | 
| 1.2.205.0 |  2021 年 6 月 10 日  | 改進：已新增對簽署的 macOS 安裝程式的支援。 | 
| 1.2.54.0 |  2021 年 1 月 29 日  | 改進：已新增在 NonInteractiveCommands 執行模式下執行工作階段的支援。 | 
| 1.2.30.0 |  2020 年 11 月 24 日  |  **改進**：(僅限連接埠轉送工作階段) 提高了整體效能。  | 
| 1.2.7.0 |  2020 年 10 月 15 日  |  **改進**：(僅限連接埠轉送工作階段) 降低了延遲並提高了整體效能。  | 
| 1.1.61.0 |  2020 年 4 月 17 日  |  **增強功能**：新增支援適用於 Linux 和 Ubuntu Server 的 ARM。  | 
| 1.1.54.0 |  2020 年 1 月 6 日  |  **錯誤修正**：處理封包在 Session Manager 外掛程式尚未就緒時受到捨棄的競爭條件情況。  | 
|  1.1.50.0  | 2019 年 11 月 19 日 |  **增強**：新增將埠轉送至本機 unix 通訊端的支援。  | 
|  1.1.35.0  | 2019 年 11 月 7 日 |  **增強**：(僅限埠轉送工作階段) 當本機使用者按下 `Ctrl+C` 時，傳送 TerminateSession 命令至 SSM Agent。  | 
| 1.1.33.0 | 2019 年 9 月 26 日 | 增強功能：(僅限連接埠轉送工作階段) 當用戶端中斷 TCP 連線時，傳送中斷連線訊號至伺服器。 | 
| 1.1.31.0 | 2019 年 9 月 6 日 | 增強功能：更新為保持連接埠轉送工作階段開啟，直到遠端伺服器關閉連線為止。 | 
|  1.1.26.0  | 2019 年 7 月 30 日 |  **增強功能**：更新以限制工作階段期間資料傳輸的速率。  | 
|  1.1.23.0  | 2019 年 7 月 9 日 |  **增強功能**：新增使用 Session Manager 執行 SSH 工作階段的支援。  | 
| 1.1.17.0 | 2019 年 4 月 4 日 |  **增強功能**：新增使用 AWS Key Management Service (AWS KMS) 為工作階段資料進一步加密的支援。  | 
| 1.0.37.0 | 2018 年 9 月 20 日 |  **增強功能**：Windows 版本的錯誤修正。  | 
| 1.0.0.0 | 2018 年 9 月 11 日 |  Session Manager 外掛程式初始版本。  | 

# 在 Windows 上安裝 Session Manager 外掛程式
<a name="install-plugin-windows"></a>

您可以在 Windows Vista 或更新版本使用獨立安裝程式安裝 Session Manager 外掛程式。

當發佈更新時，您必須重複安裝過程以獲取最新版本的 Session Manager 外掛程式。

**注意**  
記下以下資訊。  
Session Manager 外掛程式安裝程式需要管理員權限才能安裝外掛程式。
為了獲得最佳結果，我們建議您在開始工作階段時在 Windows 用戶端使用 Windows PowerShell 版本 5 或更新版本。或者，您可以使用 Windows 10 中的命令 Shell。Session Manager 外掛程式只支援 PowerShell 和命令 Shell。第三方命令列工具可能與外掛程式不相容。

**使用 EXE 安裝程式安裝 Session Manager 外掛程式**

1. 使用以下 URL 下載安裝程式。

   ```
   https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe
   ```

   或者，您可以使用下列 URL 下載壓縮版的安裝程式。

   ```
   https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPlugin.zip
   ```

1. 執行下載的安裝程式，並遵循畫面上的指示操作。如果您已下載壓縮版的安裝程式，則必須先解壓縮安裝程式。

   保留安裝位置方塊空白以便安裝外掛程式預設的目錄。
   +  `%PROGRAMFILES%\Amazon\SessionManagerPlugin\bin\` 

1. 確認已安裝成功。如需相關資訊，請參閱[驗證 Session Manager 外掛程式安裝](install-plugin-verify.md)。
**注意**  
如果 Windows 無法找到可執行檔，則可能需要手動重新開啟命令提示，或手動將安裝目錄新增到您的 `PATH` 環境變數。如需詳細資訊，請參閱疑難排解主題 [Session Manager 外掛程式未自動新增到命令列路徑 (Windows)](session-manager-troubleshooting.md#windows-plugin-env-var-not-set)。

# 在 macOS 上安裝 Session Manager 外掛程式
<a name="install-plugin-macos-overview"></a>

選擇下列其中一個主題，以在 macOS 上安裝 Session Manager 外掛程式。

**注意**  
已簽署的安裝程式是已簽署的 `.pkg` 檔案。綁定的安裝程式會使用 `.zip` 檔案。將該檔案解壓縮後，您可以使用二進位檔案來安裝外掛程式。

## 在 macOS 上安裝 Session Manager 外掛程式與已簽署的安裝程式
<a name="install-plugin-macos-signed"></a>

本節說明如何使用已簽署的安裝程式在 macOS 上安裝 Session Manager 外掛程式。

**若要使用已簽署的安裝程式安裝 Session Manager 外掛程式 (macOS)**

1. 下載已簽署的安裝程式。

------
#### [ x86\$164 ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"
   ```

------
#### [ 搭載 Apple 晶片的 Mac ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac_arm64/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"
   ```

------

1. 執行安裝命令。如果命令失敗，請驗證 `/usr/local/bin` 資料夾是否存在。如果不存在，請建立該資料夾，然後再次執行命令。

   ```
   sudo installer -pkg session-manager-plugin.pkg -target /
   sudo ln -s /usr/local/sessionmanagerplugin/bin/session-manager-plugin /usr/local/bin/session-manager-plugin
   ```

1. 確認已安裝成功。如需相關資訊，請參閱[驗證 Session Manager 外掛程式安裝](install-plugin-verify.md)。

## 在 macOS 上安裝 Session Manager 外掛程式
<a name="install-plugin-macos"></a>

本節說明如何使用隨附的安裝程式在 macOS 上安裝 Session Manager 外掛程式。

**重要**  
記下以下重要資訊。  
依預設，安裝程式需要 sudo 存取權才能執行，因為指令碼會將外掛程式安裝至 `/usr/local/sessionmanagerplugin` 系統目錄。如果您不想使用 sudo 安裝外掛程式，請手動更新安裝程式指令碼，將外掛程式安裝至不需要 sudo 存取權的目錄。
Bundled Installer 無法安裝到包含空格的路徑。

**使用 Bundled Installer (macOS) 安裝 Session Manager 外掛程式**

1. 下載 Bundled Installer。

------
#### [ x86\$164 ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"
   ```

------
#### [ 搭載 Apple 晶片的 Mac ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac_arm64/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"
   ```

------

1. 解壓縮套件。

   ```
   unzip sessionmanager-bundle.zip
   ```

1. 執行安裝命令。

   ```
   sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin
   ```
**注意**  
 外掛程式需要 Python 3.10 或更新版本。根據預設，安裝指令碼會在系統預設版本的 Python 下執行。如果您已安裝其他版本的 Python，並想使用該版本軟體安裝 Session Manager 外掛程式，請使用該版本按 Python 可執行檔的絕對路徑來執行安裝指令碼。下列是 範例。  

   ```
   sudo /usr/local/bin/python3.11 sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin
   ```

   安裝程式會將 Session Manager 外掛程式安裝到 `/usr/local/sessionmanagerplugin`，並在 `/usr/local/bin` 目錄中建立符號連結 `session-manager-plugin`。這讓您無須在使用者的 `$PATH` 變動指定安裝的目錄。

   若要參閱 `-i` 和 `-b` 選項的說明，請使用 `-h` 選項。

   ```
   ./sessionmanager-bundle/install -h
   ```

1. 確認已安裝成功。如需相關資訊，請參閱[驗證 Session Manager 外掛程式安裝](install-plugin-verify.md)。

**注意**  
若要解除安裝外掛程式，請按顯示的順序執行以下兩個命令。  

```
sudo rm -rf /usr/local/sessionmanagerplugin
```

```
sudo rm /usr/local/bin/session-manager-plugin
```

# 在 Linux 上安裝 Session Manager 外掛程式
<a name="install-plugin-linux-overview"></a>

本節包含有關驗證 Session Manager 外掛程式安裝程式套件的簽章，以及在下列 Linux 發行版本上安裝外掛程式的資訊：
+ Amazon Linux 2
+ AL2023
+ RHEL
+ Debian Server
+ Ubuntu Server

**Topics**
+ [驗證 Session Manager 外掛程式的簽章](install-plugin-linux-verify-signature.md)
+ [在 Amazon Linux 2、Amazon Linux 2023 和 Red Hat Enterprise Linux 發行版本上安裝 Session Manager 外掛程式](install-plugin-linux.md)
+ [在 Debian Server 和 Ubuntu Server 上安裝 Session Manager 外掛程式](install-plugin-debian-and-ubuntu.md)

# 驗證 Session Manager 外掛程式的簽章
<a name="install-plugin-linux-verify-signature"></a>

Linux 執行個體的 Session Manager 外掛程式 RPM 和 Debian 安裝程式套件都經過加密簽署。您可以使用公有金鑰來驗證外掛程式二進位資料和套件是否為原版且未經修改。如果檔案有任何更改或損壞，驗證會失敗。您可以使用 GNU Privacy Guard (GPG) 工具來驗證安裝程式套件的簽章。以下資訊適用於 Session Manager 外掛程式 1.2.707.0 版或更新版本。

完成下列步驟，以驗證 Session Manager 外掛程式安裝程式套件的簽章。

**Topics**
+ [步驟 1：下載 Session Manager 外掛程式安裝程式套件](#install-plugin-linux-verify-signature-installer-packages)
+ [步驟 2：下載關聯的簽章檔案](#install-plugin-linux-verify-signature-packages)
+ [步驟 3：安裝 GPC 工具](#install-plugin-linux-verify-signature-packages-gpg)
+ [步驟 4：在 Linux 伺服器上驗證 Session Manager 外掛程式安裝程式套件](#install-plugin-linux-verify-signature-packages)

## 步驟 1：下載 Session Manager 外掛程式安裝程式套件
<a name="install-plugin-linux-verify-signature-installer-packages"></a>

下載您想要驗證的 Session Manager 外掛程式安裝程式套件。

**Amazon Linux 2、AL2023 與 RHEL RPM 套件**

------
#### [ x86\$164 ]

```
curl -o "session-manager-plugin.rpm" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm"
```

------
#### [ ARM64 ]

```
curl -o "session-manager-plugin.rpm" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_arm64/session-manager-plugin.rpm"
```

------

**Debian Server 和 Ubuntu Server Deb 套件**

------
#### [ x86\$164 ]

```
curl -o "session-manager-plugin.deb" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb"
```

------
#### [ ARM64 ]

```
curl -o "session-manager-plugin.deb" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.deb"
```

------

## 步驟 2：下載關聯的簽章檔案
<a name="install-plugin-linux-verify-signature-packages"></a>

下載安裝程式套件後，請下載關聯的簽章檔案，以進行套件驗證。為了提供額外的保護，防止未經授權複製或使用套件內的 session-manager-plugin 二進位檔案，我們也提供二進位簽章，您可以使用這些簽章來驗證個別的二進位檔案。您可以根據您的安全需求，選擇使用這些二進位簽章。

**Amazon Linux 2、AL2023 和 RHEL 簽章套件**

------
#### [ x86\$164 ]

套件：

```
curl -o "session-manager-plugin.rpm.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm.sig"
```

二進位：

```
curl -o "session-manager-plugin.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.sig"
```

------
#### [ ARM64 ]

套件：

```
curl -o "session-manager-plugin.rpm.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_arm64/session-manager-plugin.rpm.sig"
```

二進位：

```
curl -o "session-manager-plugin.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_arm64/session-manager-plugin.sig"
```

------

**Debian Server 與 Ubuntu Server Deb 簽章套件**

------
#### [ x86\$164 ]

套件：

```
curl -o "session-manager-plugin.deb.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb.sig"
```

二進位：

```
curl -o "session-manager-plugin.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.sig"
```

------
#### [ ARM64 ]

套件：

```
curl -o "session-manager-plugin.deb.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.deb.sig"
```

二進位：

```
curl -o "session-manager-plugin.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.sig"
```

------

## 步驟 3：安裝 GPC 工具
<a name="install-plugin-linux-verify-signature-packages-gpg"></a>

若要驗證 Session Manager 外掛程式的簽章，您必須在系統中安裝 GNU Privacy Guard (GPG) 工具。驗證程序要求使用 GPG 2.1 版或更新版本。您可執行下列命令，檢查您的 GPG 版本：

```
gpg --version
```

如果您的 GPG 版本早於 2.1，請在繼續進行驗證程序之前更新它。對於大多數系統，您可以使用套件管理員來更新 GPG 工具。例如，在支援的 Amazon Linux 與 RHEL 版本上，您可以使用下列命令：

```
sudo yum update
sudo yum install gnupg2
```

在支援的 Ubuntu Server 與 Debian Server 系統中，您可以使用下列命令：

```
sudo apt-get update
sudo apt-get install gnupg2
```

在繼續進行驗證程序之前，請確保您擁有必要的 GPG 版本。

## 步驟 4：在 Linux 伺服器上驗證 Session Manager 外掛程式安裝程式套件
<a name="install-plugin-linux-verify-signature-packages"></a>

使用下列程序來驗證 Linux 伺服器上的 Session Manager 外掛程式安裝程式套件。

**注意**  
Amazon Linux 2 不支援 gpg 工具 2.1 版或更新版本。如果下列程序不適用於您的 Amazon Linux 2 執行個體，請在其他平台上驗證簽章，再將其安裝在您的 Amazon Linux 2 執行個體上。

1. 複製下列公有金鑰，並將它儲存至名為 session-manager-plugin.gpg 的檔案。

   ```
   -----BEGIN PGP PUBLIC KEY BLOCK-----
   
   mFIEZ5ERQxMIKoZIzj0DAQcCAwQjuZy+IjFoYg57sLTGhF3aZLBaGpzB+gY6j7Ix
   P7NqbpXyjVj8a+dy79gSd64OEaMxUb7vw/jug+CfRXwVGRMNtIBBV1MgU1NNIFNl
   c3Npb24gTWFuYWdlciA8c2Vzc2lvbi1tYW5hZ2VyLXBsdWdpbi1zaWduZXJAYW1h
   em9uLmNvbT4gKEFXUyBTeXN0ZW1zIE1hbmFnZXIgU2Vzc2lvbiBNYW5hZ2VyIFBs
   dWdpbiBMaW51eCBTaWduZXIgS2V5KYkBAAQQEwgAqAUCZ5ERQ4EcQVdTIFNTTSBT
   ZXNzaW9uIE1hbmFnZXIgPHNlc3Npb24tbWFuYWdlci1wbHVnaW4tc2lnbmVyQGFt
   YXpvbi5jb20+IChBV1MgU3lzdGVtcyBNYW5hZ2VyIFNlc3Npb24gTWFuYWdlciBQ
   bHVnaW4gTGludXggU2lnbmVyIEtleSkWIQR5WWNxJM4JOtUB1HosTUr/b2dX7gIe
   AwIbAwIVCAAKCRAsTUr/b2dX7rO1AQCa1kig3lQ78W/QHGU76uHx3XAyv0tfpE9U
   oQBCIwFLSgEA3PDHt3lZ+s6m9JLGJsy+Cp5ZFzpiF6RgluR/2gA861M=
   =2DQm
   -----END PGP PUBLIC KEY BLOCK-----
   ```

1. 將公開金鑰匯入至您的 keyring。傳回的金鑰值應為 `2C4D4AFF6F6757EE`。

   ```
   $ gpg --import session-manager-plugin.gpg
   gpg: key 2C4D4AFF6F6757EE: public key "AWS SSM Session Manager <session-manager-plugin-signer@amazon.com> (AWS Systems Manager Session Manager Plugin Linux Signer Key)" imported
   gpg: Total number processed: 1
   gpg:               imported: 1
   ```

1. 執行下列命令來驗證指紋。

   ```
   gpg --fingerprint 2C4D4AFF6F6757EE
   ```

   命令輸出指紋應該與下列項目相符。

   ```
   7959 6371 24CE 093A D501 D47A 2C4D 4AFF 6F67 57EE
   ```

   ```
   pub   nistp256 2025-01-22 [SC]
         7959 6371 24CE 093A D501  D47A 2C4D 4AFF 6F67 57EE
   uid           [ unknown] AWS SSM Session Manager <session-manager-plugin-signer@amazon.com> (AWS Systems Manager Session Manager Plugin Linux Signer Key)
   ```

   若指紋不相符，請勿安裝外掛程式。聯絡 AWS 支援。

1. 確認安裝程式套件簽章。將 *signature-filename* 和 *downloaded-plugin-filename* 替換為您在下載簽章檔案和 session-manager-plugin 時指定的值 (已在本主題稍前部分的表格中列出)。

   ```
   gpg --verify signature-filename downloaded-plugin-filename
   ```

   例如，對於 Amazon Linux 2 上的 x86\$164 架構，命令如下所示：

   ```
   gpg --verify session-manager-plugin.rpm.sig session-manager-plugin.rpm
   ```

   此命令會傳回類似以下的輸出。

   ```
   gpg: Signature made Mon Feb 3 20:08:32 2025 UTC gpg: using ECDSA key 2C4D4AFF6F6757EE
   gpg: Good signature from "AWS Systems Manager Session Manager <session-manager-plugin-signer@amazon.com> (AWS Systems Manager Session Manager Plugin Linux Signer Key)" [unknown] 
   gpg: WARNING: This key is not certified with a trusted signature! 
   gpg: There is no indication that the signature belongs to the owner. 
   Primary key fingerprint: 7959 6371 24CE 093A D501 D47A 2C4D 4AFF 6F67 57EE
   ```

如果輸出包含 `BAD signature` 片語，請檢查您是否已正確執行程序。如果您繼續取得此回應，請聯絡 AWS 支援 且不要安裝套件。關於信任的警告訊息並不表示該簽章無效，只是您尚未驗證該公有金鑰。只有您或您信任者所簽章的金鑰才能信任。如果輸出包含 `Can't check signature: No public key` 片語，請驗證是否下載的是 1.2.707.0 版或更新版本的 Session Manager 外掛程式。

# 在 Amazon Linux 2、Amazon Linux 2023 和 Red Hat Enterprise Linux 發行版本上安裝 Session Manager 外掛程式
<a name="install-plugin-linux"></a>

按照下列程序在 Amazon Linux 2、Amazon Linux 2023 (AL2023) 和 RHEL 發行版本上安裝 Session Manager 外掛程式。

1. 下載並安裝 Session Manager 外掛程式 RPM 套件。

------
#### [ x86\$164 ]

   在 Amazon Linux 2 和 RHEL 7 上執行下列命令：

   ```
   sudo yum install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm
   ```

   在 AL2023 與 RHEL 8 和 9 上執行下列命令：

   ```
   sudo dnf install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm
   ```

------
#### [ ARM64 ]

   在 Amazon Linux 2 和 RHEL 7 上執行下列命令：

   ```
   sudo yum install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_arm64/session-manager-plugin.rpm
   ```

   在 AL2023 與 RHEL 8 和 9 上執行下列命令：

   ```
   sudo dnf install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_arm64/session-manager-plugin.rpm
   ```

------

1. 確認已安裝成功。如需相關資訊，請參閱[驗證 Session Manager 外掛程式安裝](install-plugin-verify.md)。

**注意**  
如果您想要解除安裝該外掛程式，請執行 `sudo yum erase session-manager-plugin -y`

# 在 Debian Server 和 Ubuntu Server 上安裝 Session Manager 外掛程式
<a name="install-plugin-debian-and-ubuntu"></a>

1. 下載 Session Manager 外掛程式 deb 套件。

------
#### [ x86\$164 ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb" -o "session-manager-plugin.deb"
   ```

------
#### [ ARM64 ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.deb" -o "session-manager-plugin.deb"
   ```

------

1. 執行安裝命令。

   ```
   sudo dpkg -i session-manager-plugin.deb
   ```

1. 確認已安裝成功。如需相關資訊，請參閱[驗證 Session Manager 外掛程式安裝](install-plugin-verify.md)。

**注意**  
如果您想要解除安裝外掛程式，請執行 `sudo dpkg -r session-manager-plugin`

# 驗證 Session Manager 外掛程式安裝
<a name="install-plugin-verify"></a>

執行下列命令來驗證 Session Manager 外掛程式是否安裝成功：

```
session-manager-plugin
```

如果操作成功，您會看到以下訊息。

```
The Session Manager plugin is installed successfully. Use the AWS CLI to start a session.
```

您也可以在 [AWS Command Line Interface](https://aws.amazon.com/cli/) (AWS CLI) 中透過執行 [https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html) 命令來測試安裝。在下列命令中：將 *instance-id* 取代為您自己的資訊。

```
aws ssm start-session --target instance-id
```

只有在您已安裝並設定 AWS CLI，且您的Session Manager管理員已授予您使用 存取目標受管節點的必要 IAM 許可時，此命令才能運作Session Manager。

# GitHub 上的外掛程式 Session Manager
<a name="plugin-github"></a>

[https://github.com/aws/session-manager-plugin](https://github.com/aws/session-manager-plugin) 上提供 Session Manager 外掛程式的原始碼，便於您根據需求調整外掛程式。我們建議您為想要進行的變更提交[提取請求](https://github.com/aws/session-manager-plugin/blob/mainline/CONTRIBUTING.md)。但是，Amazon Web Services 不支援執行修改過的軟體複本。

# (選用) 開啟 Session Manager 外掛程式日誌
<a name="install-plugin-configure-logs"></a>

Session Manager 外掛程式包含一個選項讓您能夠記錄執行的工作階段。根據預設，會關閉日誌。

如果您啟用記錄，Session Manager 外掛程式在本機電腦上應用程式活動建立兩個日誌檔 (`session-manager-plugin.log`) 和錯誤 (`errors.log`)。

**Topics**
+ [開啟 Session Manager 外掛程式的日誌記錄 (Windows)](#configure-logs-windows)
+ [啟用 Session Manager 外掛程式的日誌記錄 (Linux 和 macOS)](#configure-logs-linux)

## 開啟 Session Manager 外掛程式的日誌記錄 (Windows)
<a name="configure-logs-windows"></a>

1. 找出 `seelog.xml.template` 檔案的外掛程式。

   預設位置為 `C:\Program Files\Amazon\SessionManagerPlugin\seelog.xml.template`。

1. 變更檔案的名稱成 `seelog.xml`。

1. 開啟檔案，然後將 `minlevel="off"` 變更為 `minlevel="info"` 或 `minlevel="debug"`。
**注意**  
在預設情況下，日誌項目會以 **INFO** 等級記錄有關開啟資料管道和重新連線工作階段。資料流程 (封包和確認) 項目會記錄在 **DEBUG** 層級。

1. 變更您希望修改的其他組態選項。您可以變更選項包括：
   + **偵錯層級**：您可以從 `formatid="fmtinfo"` 變更偵錯層級至 `formatid="fmtdebug"`。
   + **日誌檔案選項**：您可以變更日誌檔的選項，包括日誌存放位置和日誌例外狀況名稱。
**重要**  
請勿變更檔案名稱否則日誌記錄將無法正常運作。

     ```
     <rollingfile type="size" filename="C:\Program Files\Amazon\SessionManagerPlugin\Logs\session-manager-plugin.log" maxsize="30000000" maxrolls="5"/>
     <filter levels="error,critical" formatid="fmterror">
     <rollingfile type="size" filename="C:\Program Files\Amazon\SessionManagerPlugin\Logs\errors.log" maxsize="10000000" maxrolls="5"/>
     ```

1. 儲存檔案。

## 啟用 Session Manager 外掛程式的日誌記錄 (Linux 和 macOS)
<a name="configure-logs-linux"></a>

1. 找出 `seelog.xml.template` 檔案的外掛程式。

   預設位置為 `/usr/local/sessionmanagerplugin/seelog.xml.template`。

1. 變更檔案的名稱成 `seelog.xml`。

1. 開啟檔案，然後將 `minlevel="off"` 變更為 `minlevel="info"` 或 `minlevel="debug"`。
**注意**  
在預設情況下，日誌項目會以 **INFO** 等級記錄有關開啟資料管道和重新連線工作階段。資料流程 (封包和確認) 項目會記錄在 **DEBUG** 層級。

1. 變更您希望修改的其他組態選項。您可以變更選項包括：
   + **偵錯層級**：您可以從 `formatid="fmtinfo"` 變更偵錯層級至 `outputs formatid="fmtdebug"`。
   + **日誌檔案選項**：您可以變更日誌檔的選項，包括日誌存放位置和日誌例外狀況名稱。
**重要**  
請勿變更檔案名稱否則日誌記錄將無法正常運作。

     ```
     <rollingfile type="size" filename="/usr/local/sessionmanagerplugin/logs/session-manager-plugin.log" maxsize="30000000" maxrolls="5"/>
     <filter levels="error,critical" formatid="fmterror">
     <rollingfile type="size" filename="/usr/local/sessionmanagerplugin/logs/errors.log" maxsize="10000000" maxrolls="5"/>
     ```
**重要**  
如果您使用指定的預設目錄執行工作階段命令來存放日誌，您必須使用 **sudo** 或提供外掛程式的安裝目錄來完整的執行命令讀取和寫入權限。若要略過這些限制，請變更日誌存放的位置。

1. 儲存檔案。

# 啟動工作階段
<a name="session-manager-working-with-sessions-start"></a>

您可以使用 AWS Systems Manager 主控台、Amazon Elastic Compute Cloud (Amazon EC2) 主控台、 AWS Command Line Interface (AWS CLI) 或 SSH 來啟動工作階段。

**Topics**
+ [啟動工作階段 (Systems Manager 主控台)](#start-sys-console)
+ [啟動工作階段 (Amazon EC2 主控台)](#start-ec2-console)
+ [啟動工作階段 (AWS CLI)](#sessions-start-cli)
+ [啟動工作階段 (SSH)](#sessions-start-ssh)
+ [啟動工作階段 (網路埠轉遞)](#sessions-start-port-forwarding)
+ [啟動工作階段 (連接埠轉送至遠端主機)](#sessions-remote-port-forwarding)
+ [啟動工作階段 (互動和非互動式命令)](#sessions-start-interactive-commands)

## 啟動工作階段 (Systems Manager 主控台)
<a name="start-sys-console"></a>

您可以使用 AWS Systems Manager 主控台，在帳戶中啟動具有受管節點的工作階段。

**注意**  
開始工作階段之前，請確定您已完成 Session Manager 的設定步驟。如需相關資訊，請參閱[設定 Session Manager](session-manager-getting-started.md)。

**若要啟動工作階段 (Systems Manager 主控台)**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Start session (啟動工作階段)**。

1. (選用) 在**工作階段的原因**欄位中輸入工作階段的描述。

1. 在**目標執行個體**中，選擇您想要連接到的受管節點旁的選項按鈕。

   如果您想要的節點不在清單中，或者您在選取節點後遇到組態錯誤，請參閱 [受管節點無法使用或未設定用於 Session Manager](session-manager-troubleshooting.md#session-manager-troubleshooting-instances) 以獲取疑難排解步驟。

1. 選擇**啟動工作階段**，以立即啟動工作階段。

   -或-

   選擇**下一步**以查看工作階段選項。

1. (選用) 對於**工作階段文件**，選取您要在工作階段啟動時執行的文件。如果您的文件支援執行期參數，您可以在每個參數欄位中輸入一或多個逗號分隔值。

1. 選擇**下一步**。

1. 選擇 **Start session (啟動工作階段)**。

建立連線之後，您可以執行 bash 命令 (Linux 和 macOS) 或 PowerShell 命令 (Windows)，就像您使用任何其他連線類型時一樣。

**重要**  
如果您想要允許使用者在 Session Manager 主控台中啟動工作階段時指定文件，請注意下列事項：  
您必須在使用者的 IAM 政策中授予使用者 `ssm:GetDocument` 和 `ssm:ListDocuments` 許可。如需詳細資訊，請參閱[在主控台中授予對自訂工作階段文件的存取權](getting-started-restrict-access-examples.md#grant-access-documents-console-example)。
主控台僅支援 `sessionType` 定義為 `Standard_Stream` 的工作階段文件。如需詳細資訊，請參閱[工作階段文件結構描述](session-manager-schema.md)。

## 啟動工作階段 (Amazon EC2 主控台)
<a name="start-ec2-console"></a>

您可以使用 Amazon Elastic Compute Cloud (Amazon EC2) 主控台在您的帳戶中使用執行個體啟動工作階段。

**注意**  
若您收到錯誤，告知您並未獲得執行一或多個 Systems Manager 動作 (`ssm:command-name`) 的授權，您必須聯絡您的管理員以取得協助。您的管理員是為您提供簽署憑證的人員。請求該人員更新您的政策，允許您從 Amazon EC2 主控台啟動工作階段。如果您是管理員，請參閱 [適用於 Session Manager 的範例 IAM 政策](getting-started-restrict-access-quickstart.md) 以取得更多資訊。

**啟動工作階段 (Amazon EC2 主控台)**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Instances** (執行個體)。

1. 選取執行個體，然後選取 **Connect (連線)**。

1. 對於**連線方法**，請選擇 **Session Manager**。

1. 選擇**連線**。

建立連線之後，您可以執行 bash 命令 (Linux 和 macOS) 或 PowerShell 命令 (Windows)，就像您使用任何其他連線類型時一樣。

## 啟動工作階段 (AWS CLI)
<a name="sessions-start-cli"></a>

如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI)，請安裝並設定 。

如需相關資訊，請參閱[安裝或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

開始工作階段之前，請確定您已完成 Session Manager 的設定步驟。如需相關資訊，請參閱[設定 Session Manager](session-manager-getting-started.md)。

若要使用 AWS CLI 執行工作階段命令，您的本機電腦上也必須安裝 Session Manager外掛程式。如需相關資訊，請參閱[安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)。

若要使用 啟動工作階段 AWS CLI，請執行下列命令，將 *instance-id* 取代為您自己的資訊。

```
aws ssm start-session \
    --target instance-id
```

如需有關可與 **start-session**命令搭配使用之其他選項的資訊，請參閱 AWS CLI 命令參考的 [https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html) AWS Systems Manager 一節。

## 啟動工作階段 (SSH)
<a name="sessions-start-ssh"></a>

若要啟動 Session Manager SSH 工作階段，必須在受管節點上安裝 SSM Agent 2.3.672.0 版或更新版本。

**SSH 連線需求**  
記下使用 SSH 到 之工作階段連線的下列需求和限制Session Manager：
+ 您的目標受管節點必須設為支援 SSH 連線。如需詳細資訊，請參閱 [(選用) 透過 Session Manager 允許和控制 SSH 連線的許可](session-manager-getting-started-enable-ssh-connections.md)。
+ 您必須使用與隱私權增強式郵件 (PEM) 憑證建立關聯的受管節點帳戶進行連線，而非用於其他工作階段連線類型的 `ssm-user` 帳戶。例如，在 Linux 和 macOS 的 EC2 執行個體上，預設使用者是 `ec2-user`。如需有關識別每種執行個體類型預設使用者的資訊，請參閱《Amazon EC2 使用者指南》**中的 [Get Information About Your Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connection-prereqs.html#connection-prereqs-get-info-about-instance)。
+ 透過連接埠轉送或 SSH 連線的 Session Manager 工作階段無法使用日誌記錄功能。這是因為 SSH 會在 和 Session Manager端點之間建立的安全 TLS AWS CLI 連線內加密所有工作階段資料，並且Session Manager僅做為 SSH 連線的通道。

**注意**  
開始工作階段之前，請確定您已完成 Session Manager 的設定步驟。如需相關資訊，請參閱[設定 Session Manager](session-manager-getting-started.md)。

若要使用 SSH 開始工作階段，請執行以下命令。將每個*範例資源預留位置*取代為您自己的資訊。

```
ssh -i /path/my-key-pair.pem username@instance-id
```

**提示**  
使用 SSH 開始工作階段時，您可以使用以下命令格式將本機檔案複製到目標受管節點。  

```
scp -i /path/my-key-pair.pem /path/ExampleFile.txt username@instance-id:~
```

如需有關可與 **start-session**命令搭配使用之其他選項的資訊，請參閱 AWS CLI 命令參考的 [https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html) AWS Systems Manager 一節。

## 啟動工作階段 (網路埠轉遞)
<a name="sessions-start-port-forwarding"></a>

若要啟動 Session Manager 連接埠轉送工作階段，必須在受管節點上安裝 SSM Agent 2.3.672.0 版或更新版本。

**注意**  
開始工作階段之前，請確定您已完成 Session Manager 的設定步驟。如需相關資訊，請參閱[設定 Session Manager](session-manager-getting-started.md)。  
若要使用 AWS CLI 執行工作階段命令，您必須在本機電腦上安裝 Session Manager外掛程式。如需相關資訊，請參閱[安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)。  
視您的作業系統和命令列工具而定，引號的位置可能會有所不同，且可能需要逸出字元。

若要啟動網路埠轉遞工作階段，請從 CLI 執行以下命令。將每個*範例資源預留位置*取代為您自己的資訊。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name AWS-StartPortForwardingSession \
    --parameters '{"portNumber":["80"], "localPortNumber":["56789"]}'
```

------
#### [  Windows  ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name AWS-StartPortForwardingSession ^
    --parameters portNumber="3389",localPortNumber="56789"
```

------

`portNumber` 代表受管節點上您要將工作階段流量重新導向至其中的遠端連接埠。例如，您可以指定連接埠 `3389` 用於透過遠端桌面通訊協定 (RDP) 連線至 Windows 節點。如果您未指定 `portNumber` 參數，Session Manager 會使用 `80` 作為預設值。

`localPortNumber` 是本機電腦上的連接埠 (例如 `56789`)，流量會從此開始。此值是您在使用用戶端連線到受管節點時所輸入的值。例如 **localhost:56789**。

如需有關可與 **start-session**命令搭配使用之其他選項的資訊，請參閱 AWS CLI 命令參考的 [https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html) AWS Systems Manager 一節。

如需有關連接埠轉送工作階段的資訊，請參閱 *AWS 新聞部落格*中的[使用 AWS Systems ManagerSession Manager 的連接埠轉送](https://aws.amazon.com/blogs/aws/new-port-forwarding-using-aws-system-manager-sessions-manager/)。

## 啟動工作階段 (連接埠轉送至遠端主機)
<a name="sessions-remote-port-forwarding"></a>

若要啟動 Session Manager 連接埠轉送工作階段至遠端主機，必須在受管理節點上安裝 SSM Agent 的 3.1.1374.0 版或較新版本。遠端主機不需由 Systems Manager 管理。

**注意**  
開始工作階段之前，請確定您已完成 Session Manager 的設定步驟。如需相關資訊，請參閱[設定 Session Manager](session-manager-getting-started.md)。  
若要使用 AWS CLI 執行工作階段命令，您必須在本機電腦上安裝 Session Manager外掛程式。如需相關資訊，請參閱[安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)。  
視您的作業系統和命令列工具而定，引號的位置可能會有所不同，且可能需要逸出字元。

若要啟動連接埠轉遞工作階段，請從 AWS CLI執行以下命令。將每個*範例資源預留位置*取代為您自己的資訊。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name AWS-StartPortForwardingSessionToRemoteHost \
    --parameters '{"host":["mydb.example.us-east-2.rds.amazonaws.com"],"portNumber":["3306"], "localPortNumber":["3306"]}'
```

------
#### [  Windows  ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name AWS-StartPortForwardingSessionToRemoteHost ^
    --parameters host="mydb.example.us-east-2.rds.amazonaws.com",portNumber="3306",localPortNumber="3306"
```

------

`host` 值代表您想要連線遠端主機的主機名稱或 IP 地址。受管理節點與遠端主機之間的一般連線與名稱解析要求仍然適用。

`portNumber` 代表受管節點上您要將工作階段流量重新導向至其中的遠端連接埠。例如，您可以指定連接埠 `3389` 用於透過遠端桌面通訊協定 (RDP) 連線至 Windows 節點。如果您未指定 `portNumber` 參數，Session Manager 會使用 `80` 作為預設值。

`localPortNumber` 是本機電腦上的連接埠 (例如 `56789`)，流量會從此開始。此值是您在使用用戶端連線到受管節點時所輸入的值。例如 **localhost:56789**。

如需有關可與 **start-session**命令搭配使用之其他選項的資訊，請參閱 AWS CLI 命令參考的 [https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html) AWS Systems Manager 一節。

### 使用 Amazon ECS 任務啟動工作階段
<a name="sessions-remote-port-forwarding-ecs-task"></a>

Session Manager 支援在 Amazon Elastic Container Service (Amazon ECS) 叢集內使用任務啟動連接埠轉遞工作階段。若要這樣做，請啟用 ECS Exec。如需詳細資訊，請參閱 *Amazon Elastic Container Service Developer Guide* 中的 [Monitor Amazon Elastic Container Service containers with ECS Exec](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html)。

您還必須在 IAM 中更新任務角色以包含下列許可：

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
       "Effect": "Allow",
       "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
       ],
      "Resource": "*"
      }
   ]
}
```

------

若要使用 Amazon ECS 任務啟動連接埠轉遞工作階段，請從 AWS CLI執行以下命令。將每個*範例資源預留位置*取代為您自己的資訊。

**注意**  
將 < 和 > 符號從 `target` 參數中移除。這些符號只是為了方便讀者理解。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target ecs:<ECS_cluster_name>_<ECS_container_ID>_<container_runtime_ID> \
    --document-name AWS-StartPortForwardingSessionToRemoteHost \
    --parameters '{"host":["URL"],"portNumber":["port_number"], "localPortNumber":["port_number"]}'
```

------
#### [  Windows  ]

```
aws ssm start-session ^
    --target ecs:<ECS_cluster_name>_<ECS_container_ID>_<container_runtime_ID> ^
    --document-name AWS-StartPortForwardingSessionToRemoteHost ^
    --parameters host="URL",portNumber="port_number",localPortNumber="port_number"
```

------

## 啟動工作階段 (互動和非互動式命令)
<a name="sessions-start-interactive-commands"></a>

開始工作階段之前，請確定您已完成 Session Manager 的設定步驟。如需相關資訊，請參閱[設定 Session Manager](session-manager-getting-started.md)。

若要使用 AWS CLI 執行工作階段命令，您的本機電腦上也必須安裝 Session Manager外掛程式。如需相關資訊，請參閱[安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)。

若要啟動互動式命令工作階段，請執行以下命令。將每個*範例資源預留位置*取代為您自己的資訊。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name CustomCommandSessionDocument \
    --parameters '{"logpath":["/var/log/amazon/ssm/amazon-ssm-agent.log"]}'
```

------
#### [ Windows ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name CustomCommandSessionDocument ^
    --parameters logpath="/var/log/amazon/ssm/amazon-ssm-agent.log"
```

------

如需有關可與 **start-session**命令搭配使用之其他選項的資訊，請參閱 AWS CLI 命令參考的 [https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html) AWS Systems Manager 一節。

 **詳細資訊**   
+  [使用 AWS Systems Manager Session Manager 中的連接埠轉遞來連線至遠端主機](https://aws.amazon.com/blogs/mt/use-port-forwarding-in-aws-systems-manager-session-manager-to-connect-to-remote-hosts/) 
+  [使用 轉送 Amazon EC2 執行個體連接埠 AWS Systems Manager](https://aws.amazon.com/blogs/mt/amazon-ec2-instance-port-forwarding-with-aws-systems-manager/) 
+  [使用Session Manager連接埠轉送管理 AWS Managed Microsoft AD 資源](https://aws.amazon.com/blogs/mt/manage-aws-managed-microsoft-ad-resources-with-session-manager-port-forwarding/) 
+ *AWS 新聞部落格*中的[使用 AWS Systems ManagerSession Manager 的連接埠轉送](https://aws.amazon.com/blogs/aws/new-port-forwarding-using-aws-system-manager-sessions-manager/)。

# 結束工作階段
<a name="session-manager-working-with-sessions-end"></a>

您可以使用 AWS Systems Manager 主控台或 AWS Command Line Interface (AWS CLI) 結束您在帳戶中開始的工作階段。如果在主控台中選擇工作階段的**終止**按鈕，或使用 AWS CLI 來呼叫 [TerminateSession](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_TerminateSession.html) API 動作，Session Manager 會永久結束該工作階段，並關閉 Session Manager 用戶端與受管節點上 SSM Agent 之間的資料連線。您無法繼續已終止的工作階段。

如果開啟的工作階段在 20 分鐘內都沒有使用者活動，閒置狀態會觸發逾時。Session Manager 不會呼叫 `TerminateSession`，但會關閉基礎管道。您無法繼續因閒置逾時而關閉的工作階段。

建議在使用 AWS CLI 時，一律使用 `terminate-session` 命令明確終止工作階段，或在使用主控台時，一律使用**終止**按鈕明確終止工作階段。(**終止**按鈕位於工作階段視窗和主 Session Manager 主控台頁面。) 如果您只關閉瀏覽器或命令視窗，工作階段會在主控台中保持列為**作用中** 30 天。如果您未明確終止工作階段或工作階段逾時，當時在受管節點上執行的任何程序都會繼續執行。

**Topics**
+ [結束工作階段 (主控台)](#stop-sys-console)
+ [結束工作階段 (AWS CLI)](#stop-cli)

## 結束工作階段 (主控台)
<a name="stop-sys-console"></a>

您可以使用 AWS Systems Manager 主控台來結束您帳戶中的工作階段。

**結束工作階段 (主控台)**

1. 開啟位於 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 的 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 針對 **Sessions (工作階段)**，請選擇您要結束的工作階段左側的選項按鈕。

1. 選擇**終止**。

## 結束工作階段 (AWS CLI)
<a name="stop-cli"></a>

若要使用 AWS CLI 結束一個工作階段，請執行以下命令。將 *session-id* 取代為您自己的資訊。

```
aws ssm terminate-session \
    --session-id session-id
```

如需有關 **terminate-session** 命令的詳細資訊，請參閱《AWS CLI 命令參考》中 AWS Systems Manager 一節的 [https://docs.aws.amazon.com/cli/latest/reference/ssm/terminate-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/terminate-session.html) 部分。

# 檢視工作階段歷史記錄
<a name="session-manager-working-with-view-history"></a>

您可以使用 AWS Systems Manager 主控台或 AWS Command Line Interface (AWS CLI) 來檢視您帳戶中工作階段的相關資訊。在主控台，您可以查看工作階段的詳細資訊，如下所示：
+ 工作階段的 ID
+ 哪個使用者透過工作階段連線至受管節點
+ 受管節點的 ID
+ 工作階段何時開始和結束
+ 工作階段的狀態。
+ 指定儲存工作階段日誌的位置 (如果已開啟)

使用 AWS CLI，您可以檢視帳戶中的工作階段清單，但無法檢視主控台中可用的其他詳細資訊。

如需有關記錄工作階段歷史記錄資訊的詳細資訊，請參閱 [啟用和停用工作階段記錄](session-manager-logging.md)。

**Topics**
+ [檢視工作階段歷史記錄 (主控台)](#view-console)
+ [檢視工作階段歷史記錄 (AWS CLI)](#view-history-cli)

## 檢視工作階段歷史記錄 (主控台)
<a name="view-console"></a>

您可以使用 AWS Systems Manager 主控台來檢視您帳戶中工作階段的詳細資訊。

**檢視工作階段歷史記錄 (主控台)**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Session history (工作階段歷史記錄)** 標籤。

   -或-

   如果 Session Manager 首頁先開啟，請選擇**設定偏好設定**，然後選擇**工作階段歷史記錄**索引標籤。

## 檢視工作階段歷史記錄 (AWS CLI)
<a name="view-history-cli"></a>

若要使用 檢視您帳戶中的工作階段清單 AWS CLI，請執行下列命令。

```
aws ssm describe-sessions \
    --state History
```

**注意**  
此命令只會傳回使用 Session Manager 啟動之目標的連線結果。它不會列出透過其他方式建立的連線，例如遠端桌面通訊協定 (RDP) 或 Secure Shell (SSH) 協定。

如需有關可與 **describe-sessions**命令搭配使用之其他選項的資訊，請參閱 AWS CLI 命令參考的 [https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-sessions.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-sessions.html) AWS Systems Manager 一節。

# 記錄工作階段活動
<a name="session-manager-auditing"></a>

除了提供有關在 Systems Manager 主控台目前和完成工作階段的相關資訊，Session Manager 還可使用 AWS CloudTrail為您提供在 AWS 帳戶 中記錄工作階段活動的能力。

CloudTrail 透過 Systems Manager 主控台、 AWS Command Line Interface (AWS CLI) 和 Systems Manager SDK 擷取工作階段 API 呼叫。您可以在 CloudTrail 主控台中檢視資訊，或將它存放在指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中。一個 Amazon Simple Storage Service (Amazon S3) 儲存貯體可用於您帳戶中的所有 CloudTrail 日誌。如需詳細資訊，請參閱[使用 記錄 AWS Systems Manager API 呼叫 AWS CloudTrail](monitoring-cloudtrail-logs.md)。

**注意**  
對於日誌檔案的重複性與歷史性分析，請考慮使用 [CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html) 或自己維護的資料表查詢 CloudTrail 日誌。如需詳細資訊，請參閱*AWS CloudTrail 《 使用者指南*》中的[查詢 AWS CloudTrail 日誌](https://docs.aws.amazon.com/athena/latest/ug/cloudtrail-logs.html)。

## 使用 Amazon EventBridge (主控台) 監控工作階段活動
<a name="session-manager-auditing-eventbridge-events"></a>

使用 EventBridge，您可以設定規則來偵測 AWS 資源何時發生變更。您可以建立一個規則來偵測當您的組織中的使用者開始或結束工作階段，然後例如透過 Amazon SNS 接收到有關事件的通知。

Session Manager 的 EventBridge 支援依賴於 CloudTrail 所記錄的 API 操作的記錄。(您可以使用 CloudTrail 整合 EventBridge，以回應大多數 AWS Systems Manager 事件。) 在工作階段中執行的動作，例如 `exit` 命令，不進行 API 呼叫，不會被 EventBridge 偵測到。

以下步驟概述當 Session Manager API 事件發生時如何透過 Amazon Simple Notification Service (Amazon SNS) 啟動通知，例如 **StartSession**。

**使用 Amazon EventBridge (主控台) 監控工作階段活動**

1. 建立一個 Amazon SNS 的主題，此主題用來傳送您所追蹤的 Session Manager 事件發生的提醒。

   如需詳細資訊，請參閱 *Amazon Simple Notification Service 開發人員指南*中的[建立主題](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。

1. 建立 EventBridge 規則來叫使用 Amazon SNS 目標你想追蹤的 Session Manager 事件類型。

   如需有關建立規則的資訊，請參閱 *Amazon EventBridge 使用者指南*中的[建立對事件做出反應的 Amazon EventBridge 規則](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)。

   在依照步驟建立角色時，請選擇下列選項：
   + 針對 **AWS service** ( 服務)，請選擇 **Systems Manager**。
   + 針對 **Event type** (事件類型)，選擇 **AWS API Call via CloudTrail** (透過 CloudTrail 的 API 呼叫)。
   + 選擇 **Specific operation(s) (特定操作)**，然後輸入 Session Manager 命令或您希望接收到通知的命令 (一次一個)。您也可以選擇 **StartSession**、**ResumeSession** 和 **TerminateSession**。(EventBridge 不支援 `Get*`、` List*` 和 `Describe*` 命令。)
   + 對於 **Select a target** (選取目標)，選擇 **SNS topic** (SNS 主題)。在 **Topic** (主題) 中，選擇您在步驟 1 建立的 Amazon SNS 主題的名稱

如需詳細資訊，請參閱《[Amazon EventBridge 使用者指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/)**》和《[Amazon Simple Notification Service 入門指南](https://docs.aws.amazon.com/sns/latest/gsg/)**》。

# 啟用和停用工作階段記錄
<a name="session-manager-logging"></a>

工作階段記錄會在 Systems Manager 主控台中記錄目前和已完成工作階段的相關資訊。您也可以在 AWS 帳戶中記錄工作階段期間執行之命令的詳細資訊。工作階段記錄可讓您執行以下動作：
+ 建立和存放工作階段日誌封存之用。
+ 使用 Session Manager 產生報告顯示在過去 30 天每個連接到您的受管節點的詳細資訊。
+ 在 中產生工作階段記錄的通知 AWS 帳戶，例如 Amazon Simple Notification Service (Amazon SNS) 通知。
+ 由於在工作階段期間執行的動作，例如執行 AWS Lambda 函數、啟動 AWS CodePipeline 管道或執行 AWS Systems Manager Run Command 文件，自動對 AWS 資源啟動另一個動作。

**重要**  
請注意下列 Session Manager 的需求和限制：  
Session Manager 會根據您的工作階段偏好，記錄您在工作階段期間輸入的命令及其輸出。若要防止在工作階段日誌中檢視敏感資料 (例如密碼)，建議您在工作階段期間輸入敏感資料時，使用下列命令。  

  ```
  stty -echo; read passwd; stty echo;
  ```

  ```
  $Passwd = Read-Host -AsSecureString
  ```
如果您使用 Windows Server 2012 或更低版本，可能不會在您的日誌資料進行以最佳方式格式化。為了有最佳的日誌格式，我們建議您使用 Windows Server 2012 R2 和更高版本。
如果您使用的是 Linux 或 macOS 受管節點，則請確保有安裝熒幕公用程式。如果沒有，您的日誌資料可能被截斷過。在 Amazon Linux 2、AL2023 和 Ubuntu Server 上，依預設會安裝螢幕公用程式。若要手動安裝熒幕公用程式，根據於您的 Linux 版本而定，請執行 `sudo yum install screen` 或 `sudo apt-get install screen`。
透過連接埠轉送或 SSH 連線的 Session Manager 工作階段無法使用日誌記錄功能。這是因為 SSH 會在 和 Session Manager端點之間建立的安全 TLS AWS CLI 連線內加密所有工作階段資料，並且Session Manager僅做為 SSH 連線的通道。

如需有關使用 Amazon Simple Storage Service (Amazon S3) 或 Amazon CloudWatch Logs 來記錄工作階段資料所需許可的詳細資訊，請參閱[建立具有 Session Manager、Amazon Simple Storage Service (Amazon S3) 和 CloudWatch Logs (主控台) 許可的 IAM 角色](getting-started-create-iam-instance-profile.md#create-iam-instance-profile-ssn-logging)。

如需有關 Session Manager 的記錄選項，請參閱下列主題。

**Topics**
+ [使用 Amazon CloudWatch Logs (主控台) 串流工作階段資料。](session-manager-logging-cwl-streaming.md)
+ [使用 Amazon Simple Storage Service (Amazon S3) (主控台) 記錄工作階段資料](session-manager-logging-s3.md)
+ [使用 Amazon CloudWatch Logs (主控台) 記錄工作階段資料。](session-manager-logging-cloudwatch-logs.md)
+ [設定磁碟的工作階段記錄](session-manager-logging-disk.md)
+ [調整 Session Manager 暫時日誌檔案在磁碟中的存放時間](session-manager-logging-disk-retention.md)
+ [停用 CloudWatch Logs 和 Amazon S3 中的 Session Manager 記錄](session-manager-enable-and-disable-logging.md)

# 使用 Amazon CloudWatch Logs (主控台) 串流工作階段資料。
<a name="session-manager-logging-cwl-streaming"></a>

您可以將持續的工作階段資料日誌串流傳送到 Amazon CloudWatch Logs。串流工作階段資料時會包含基本詳細資料，例如使用者在工作階段中執行的命令、執行命令的使用者 ID，以及工作階段資料串流至 CloudWatch Logs 時的時間戳記。串流工作階段資料時，日誌會採用 JSON 格式，以協助您與現有的日誌解決方案進行整合。互動式命令不支援串流工作階段資料。

**注意**  
若要從 Windows Server 受管節點中串流工作階段資料，必須安裝 PowerShell 5.1 或更新版本。根據預設，Windows Server 2016 及更新版本已安裝必要的 PowerShell 版本。但是，根據預設，Windows Server 2012 和 2012 R2 沒有安裝必要的 PowerShell 版本。如果您尚未在 Windows Server 2012 或 2012 R2 受管節點上更新 PowerShell，您可以使用 Run Command 完成。如需有關使用 Run Command 更新 PowerShell 的資訊，請參閱 [使用 Run Command 更新 PowerShell](run-command-tutorial-update-software.md#rc-console-pwshexample)。

**重要**  
如果您已在 Windows Server 受管節點上配置 **PowerShell 轉錄**政策設定，您將無法串流工作階段資料。

**若要使用 Amazon CloudWatch Logs (主控台) 串流工作階段資料**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Preferences (偏好)** 標籤，然後選擇 **Edit (編輯)**。

1. 在 **CloudWatch logging** (CloudWatch 記錄) 下，選取 **Enable (啟用)** 旁的核取方塊。

1. 選擇 **Stream session logs** (串流工作階段日誌) 選項。

1. (建議) 選取 **Allow only encrypted CloudWatch log groups** (只允許加密的 CloudWatch 日誌群組) 旁的核取方塊。開啟此選項後，系統會使用為該日誌群組指定的伺服器端加密金鑰來加密日誌資料。如果您不想加密要傳送到 CloudWatch Logs 中的日誌資料，清除核取方塊。如果日誌群組不允許加密，您必須同時清除核取方塊。

1. 對於 **CloudWatch Logs**，若要在 中指定 AWS 帳戶 要上傳工作階段日誌的現有 CloudWatch Logs 日誌群組，請選取下列其中一項：
   + 在文字方塊中輸入日誌群組，此用戶群組已在帳戶中建立用於存放工作階段日誌資料。
   + **Browse log groups** (瀏覽日誌群組)：從清單中選擇一個日誌群組名稱 ：選取已在您的帳戶中建立的日誌群組存放工作階段的日誌資料。

1. 選擇**儲存**。

# 使用 Amazon Simple Storage Service (Amazon S3) (主控台) 記錄工作階段資料
<a name="session-manager-logging-s3"></a>

您可以選擇將工作階段日誌資料存放在指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中，用於偵錯和疑難排解。預設選項適用於要傳送至加密 Amazon Simple Storage Service (Amazon S3) 儲存貯體的日誌。使用為儲存貯體指定的金鑰來執行加密，可以是 AWS KMS key 或 Amazon S3 伺服器端加密 (SSE) 金鑰 (AES-256)。

**重要**  
當您使用虛擬託管型儲存貯體與 Secure Sockets Layer (SSL) 時，SSL 萬用字元憑證只符合不包含句點的儲存貯體。若要解決這個問題，請使用 HTTP 或撰寫您自己的憑證驗證邏輯。我們建議您在使用虛擬託管型的儲存貯體時，不要在儲存貯體名稱中使用句號 (".")。

**Amazon Simple Storage Service (Amazon S3) 儲存貯體加密**  
為了傳送加密日誌到您的 Amazon Simple Storage Service (Amazon S3) 儲存貯體、加密與加密必須啟用儲存貯體。如需 Amazon Simple Storage Service (Amazon S3) 儲存貯體加密的詳細資訊，請參閱 [S3 儲存貯體的 Amazon Simple Storage Service (Amazon S3) 預設加密](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)。

**客戶自管金鑰**  
如果您使用 KMS 金鑰，您管理自己來加密您的儲存貯體，然後 IAM 執行個體設定檔連接到您的執行個體必須擁有明確權限以讀取金輪。如果您使用 AWS 受管金鑰，執行個體不需要此明確許可。如需有關提供執行個體設定檔存取使用金鑰的資訊，請參閱《*AWS Key Management Service 開發人員指南*》中的[允許金輪使用者使用金輪](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users)。

依照以下步驟來設定 Session Manager 以便在 Amazon Simple Storage Service (Amazon S3) 儲存貯體存放工作階段的日誌。

**注意**  
您也可以使用 AWS CLI 來指定或變更工作階段資料傳送到的 Amazon S3 儲存貯體。如需相關資訊，請參閱[更新 Session Manager 偏好設定 (命令列)](getting-started-configure-preferences-cli.md)。

**使用 Amazon Simple Storage Service (Amazon S3) (主控台) 記錄工作階段資料**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Preferences (偏好)** 標籤，然後選擇 **Edit (編輯)**。

1. 在 **S3 logging** (S3 日誌) 下，選取 **Enable** (啟用) 旁的核取方塊。

1. (建議) 選取 **Allow only encrypted S3 buckets** (只允許加密的 S3 儲存貯體) 旁的核取方塊。開啟此選項後，系統會使用為該儲存貯體指定的伺服器端加密金鑰來加密日誌資料。如果您不想加密要傳送到 Amazon Simple Storage Service (Amazon S3) 中的日誌資料，清除核取方塊。如果 S3 儲存貯體不允許加密，您必須同時清除核取方塊。

1. **S3 bucket name (S3 儲存貯體名稱)**，選擇下列其中一項作業：
**注意**  
我們建議您在使用虛擬託管型的儲存貯體時，不要在儲存貯體名稱中使用句號 (".")。如需有關 Amazon Simple Storage Service (Amazon S3) 儲存貯體命名慣例的詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[儲存貯體法規與限制](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules)。
   + **Choose a bucket name from the list** (清單中選擇一個儲存貯體名稱)：選取已在您帳戶中建立的 Amazon Simple Storage Service (Amazon S3) 儲存貯體來存放工作階段的日誌資料。
   + **Enter a bucket name in the text box** (在文字方塊中輸入儲存貯體名稱)：輸入已在帳戶中建立的 Amazon Simple Storage Service (Amazon S3) 儲存貯體名稱來存放工作階段日誌資料。

1. (選用) **S3 key prefix (金鑰字首)**，輸入現有的名稱或新的資料夾將日誌存放在所選的儲存貯體。

1. 選擇**儲存**。

如需有關使用 Amazon Simple Storage Service (Amazon S3) 和 Amazon Simple Storage Service (Amazon S3) 儲存貯體的詳細資訊，請參閱《*[Amazon Simple Storage Service 使用者指南](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)*》和《*[Amazon Simple Storage Service 使用者指南](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)*》。

# 使用 Amazon CloudWatch Logs (主控台) 記錄工作階段資料。
<a name="session-manager-logging-cloudwatch-logs"></a>

您可使用 Amazon CloudWatch Logs 從各種 AWS 服務中監控、存放及存取日誌檔案。您可以將工作階段日誌資料傳送到 CloudWatch Logs 日誌群組，用於偵錯和疑難排解。預設選項是要使用 KMS 金鑰來加密要傳送的日誌資料，但您可以將資料加密或不加密下傳送到日誌群組。

請依照下列步驟，設定 AWS Systems Manager Session Manager 在工作階段結束時將工作階段日誌資料傳送至 CloudWatch Logs 日誌群組。

**注意**  
您也可以使用 AWS CLI 來指定或變更工作階段資料傳送到的 CloudWatch Logs 日誌群組。如需相關資訊，請參閱[更新 Session Manager 偏好設定 (命令列)](getting-started-configure-preferences-cli.md)。

**使用 Amazon CloudWatch Logs (主控台) 記錄工作階段的日誌資料。**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Preferences (偏好)** 標籤，然後選擇 **Edit (編輯)**。

1. 在 **CloudWatch logging** (CloudWatch 記錄) 下，選取 **Enable** (啟用) 旁的核取方塊。

1. 選擇 **Upload session logs** (上傳工作階段日誌) 選項。

1. (建議) 選取 **Allow only encrypted CloudWatch log groups** (只允許加密的 CloudWatch 日誌群組) 旁的核取方塊。開啟此選項後，系統會使用為該日誌群組指定的伺服器端加密金鑰來加密日誌資料。如果您不想加密要傳送到 CloudWatch Logs 中的日誌資料，清除核取方塊。如果日誌群組不允許加密，您必須同時清除核取方塊。

1. 對於 **CloudWatch Logs**，若要在 中指定 AWS 帳戶 要上傳工作階段日誌的現有 CloudWatch Logs 日誌群組，請選取下列其中一項：
   + ** 從清單中選擇一個日誌群組名稱 **：選取已在您的帳戶中建立的日誌群組存放工作階段的日誌資料。
   + **在文字方塊中輸入日誌群組名稱**：輸入已在帳戶中建立的日誌群組名稱來存放工作階段日誌資料。

1. 選擇**儲存**。

如需有關 CloudWatch Logs 的詳細資訊，請參閱《[Amazon CloudWatch Logs 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)》**。

# 設定磁碟的工作階段記錄
<a name="session-manager-logging-disk"></a>

在啟用 CloudWatch 或 Amazon S3 的 Session Manager 記錄之後，工作階段期間執行的所有命令 (以及那些命令產生的輸出) 都會記錄到目標執行個體磁碟上的暫時檔案。暫時檔案名為 `ipcTempFile.log`。

由 SSM Agent 組態檔案中的 `SessionLogsDestination` 參數控制 `ipcTempFile.log`。此參數接受以下值：
+ **磁碟**：如果指定此參數且 CloudWatch 或 Amazon S3 的工作階段記錄*已啟用*，SSM Agent 會建立 `ipcTempFile.log` 暫時日誌檔案，並將工作階段命令和輸出記錄到磁碟。Session Manager 會根據記錄組態，在工作階段期間或之後將此日誌上傳至 CloudWatch 或 S3。然後，系統會根據為 SSM Agent `SessionLogsRetentionDurationHours` 組態參數指定的持續時間刪除日誌。

  如果指定此參數且 CloudWatch 和 Amazon S3 的工作階段記錄*已停用*，SSM Agent 仍會記錄 `ipcTempFile.log` 檔案中的命令歷史記錄和輸出。系統會根據為 SSM Agent `SessionLogsRetentionDurationHours` 組態參數指定的持續時間刪除此檔案。
+ **無**：如果指定此參數且 CloudWatch 或 Amazon S3 的工作階段記錄*已啟用*，則記錄到磁碟的運作方式與指定 `disk` 參數的方式完全相同。SSM Agent 會在啟用 CloudWatch 或 Amazon S3 的工作階段記錄時需要暫時檔案。

  如果指定此參數且 CloudWatch 或 Amazon S3 的工作階段記錄*已停用*，SSM Agent 不會建立 `ipcTempFile.log` 檔案。

按照下列程序，在工作階段開始時啟用或停用在磁碟中建立 `ipcTempFile.log` 暫時日誌檔案。

**啟用或停用在磁碟中建立 Session Manager 暫時日誌檔案**

1. 在執行個體上安裝 SSM Agent 或升級至 3.2.2086 版或更新版本。如需如何檢查代理程式版本編號的資訊，請參閱[檢查 SSM Agent 版本編號](ssm-agent-get-version.md)。如需如何手動安裝代理程式的資訊，請在下列各節尋找適合作業系統的程序：
   + [在 Linux EC2 執行個體上手動安裝和解除安裝 SSM Agent](manually-install-ssm-agent-linux.md)
   + [在 macOS EC2 執行個體上手動安裝和解除安裝 SSM Agent](manually-install-ssm-agent-macos.md)
   + [在 Windows Server EC2 執行個體上手動安裝和解除安裝 SSM Agent](manually-install-ssm-agent-windows.md)

1. 連線至執行個體，並在下列位置找到 `amazon-ssm-agent.json` 檔案。
   + **Linux**：/etc/amazon/ssm/
   + **macOS**：/opt/aws/ssm/
   + **Windows Server**：C:\$1Program Files\$1Amazon\$1SSM

   如果 `amazon-ssm-agent.json` 檔案不存在，請將 `amazon-ssm-agent.json.template` 的內容複製到同一目錄的新檔案中。將此新檔案命名為 `amazon-ssm-agent.json`。

1. 為 `SessionLogsDestination` 參數指定 `none` 或 `disk`。儲存您的變更。

1. [重新啟動](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-status-and-restart.html) SSM Agent。

如果為 `SessionLogsDestination` 參數指定 `disk`，則可以啟動新的工作階段，然後將 `ipcTempFile.log` 放置在下列位置，即可驗證 SSM Agent 是否建立暫時日誌檔案：
+ **Linux**：/var/lib/amazon/ssm/*target ID*/session/orchestration/*session ID*/Standard\$1Stream/ipcTempFile.log
+ **macOS**：/opt/aws/ssm/data/*target ID*/session/orchestration/*session ID*/Standard\$1Stream/ipcTempFile.log
+ **Windows Server**：C:\$1ProgramData\$1Amazon\$1SSM\$1InstanceData\$1*target ID*\$1session\$1orchestration\$1*session ID*\$1Standard\$1Stream\$1ipcTempFile.log

**注意**  
暫時日誌檔案預設會在執行個體上儲存 14 天的時間。

若要跨多個執行個體更新 `SessionLogsDestination` 參數，建議建立可指定新組態的 SSM 文件。然後，您可以使用 Systems Manager Run Command 在執行個體實作變更。如需詳細資訊，請參閱[撰寫您自己的 AWS Systems Manager 文件 （部落格）](https://aws.amazon.com/blogs/mt/writing-your-own-aws-systems-manager-documents/) 和 [在受管節點上執行命令](running-commands.md)。

# 調整 Session Manager 暫時日誌檔案在磁碟中的存放時間
<a name="session-manager-logging-disk-retention"></a>

在啟用 CloudWatch 或 Amazon S3 的 Session Manager 記錄之後，工作階段期間執行的所有命令 (以及那些命令產生的輸出) 都會記錄到目標執行個體磁碟上的暫時檔案。暫時檔案名為 `ipcTempFile.log`。在工作階段期間或完成後，Session Manager 會將此暫時日誌上傳至 CloudWatch 或 S3。之後，系統會根據為 SSM Agent `SessionLogsRetentionDurationHours` 組態參數指定的持續時間刪除暫時日誌。暫時日誌檔案預設會在執行個體上儲存 14 天的時間，位置如下：
+ **Linux**：/var/lib/amazon/ssm/*target ID*/session/orchestration/*session ID*/Standard\$1Stream/ipcTempFile.log
+ **macOS**：/opt/aws/ssm/data/*target ID*/session/orchestration/*session ID*/Standard\$1Stream/ipcTempFile.log
+ **Windows Server**：C:\$1ProgramData\$1Amazon\$1SSM\$1InstanceData\$1*target ID*\$1session\$1orchestration\$1*session ID*\$1Standard\$1Stream\$1ipcTempFile.log

按照下列程序調整 Session Manager 暫時日誌檔案在磁碟中的存放時間。

**調整 `ipcTempFile.log` 檔案在磁碟中的存放時間**

1. 連線至執行個體，並在下列位置找到 `amazon-ssm-agent.json` 檔案。
   + **Linux**：/etc/amazon/ssm/
   + **macOS**：/opt/aws/ssm/
   + **Windows Server**：C:\$1Program Files\$1Amazon\$1SSM

   如果 `amazon-ssm-agent.json` 檔案不存在，請將 `amazon-ssm-agent.json.template` 的內容複製到同一目錄的新檔案中。將此新檔案命名為 `amazon-ssm-agent.json`。

1. 將 `SessionLogsRetentionDurationHours` 的值變更為所需的時數。如果將 `SessionLogsRetentionDurationHours` 設為 0，系統會在工作階段期間建立暫時日誌檔案，並在工作階段完成時將其刪除。此設定應確保日誌檔案在工作階段結束後不會持續存在。

1. 儲存您的變更。

1. [重新啟動](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-status-and-restart.html) SSM Agent。

# 停用 CloudWatch Logs 和 Amazon S3 中的 Session Manager 記錄
<a name="session-manager-enable-and-disable-logging"></a>

您可以使用 Systems Manager 主控台或 AWS CLI 來停用帳戶中的工作階段記錄。

**停用工作階段記錄 (主控台)**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Session Manager**。

1. 選擇 **Preferences (偏好)** 標籤，然後選擇 **Edit (編輯)**。

1. 若要停用 CloudWatch 記錄功能，請在 **CloudWatch 記錄**區段中取消選取**啟用**核取方塊。

1. 若要停用 S3 記錄功能，請在 **S3 記錄**區段中取消選取**啟用**核取方塊。

1. 選擇**儲存**。

**停用工作階段記錄 (AWS CLI)**  
若要使用 停用工作階段記錄 AWS CLI，請遵循 中的指示[更新 Session Manager 偏好設定 (命令列)](getting-started-configure-preferences-cli.md)。

 在 JSON 檔案中，請確保 `s3BucketName` 和 `cloudWatchLogGroupName` 輸入不包含任何值。例如：

```
"inputs": {
        "s3BucketName": "",
        ...
        "cloudWatchLogGroupName": "",
        ...
    }
```

您也可以透過移除 JSON 檔案中的所有 `S3*` 和 `cloudWatch*` 輸入來停用記錄功能。

**注意**  
停用 CloudWatch 或 S3 之後，SSM Agent 仍可能會在磁碟中產生暫時日誌檔案，具體視組態而定。如需有關如何停用磁碟記錄的資訊，請參閱[設定磁碟的工作階段記錄](session-manager-logging-disk.md)。

# 工作階段文件結構描述
<a name="session-manager-schema"></a>

下列資訊說明工作階段文件的結構描述元素。AWS Systems Manager Session Manager 會使用工作階段文件來判斷要啟動哪種類型的工作階段，例如標準工作階段、連接埠轉送工作階段、或要執行互動式命令的工作階段。

 [schemaVersion](#version)   
工作階段文件的結構描述版本。工作階段文件僅支援 1.0 版。  
類型：字串  
必要：是

 [description](#descript)   
您為工作階段文件指定的描述。例如，"Document to start port forwarding session with Session Manager" (使用 Session Manager 啟動連接埠轉送工作階段的文件)。  
類型：字串  
必要：否

 [sessionType](#type)   
工作階段文件用來建立的工作階段類型。  
類型：字串  
必要：是  
有效值：`InteractiveCommands` \$1 `NonInteractiveCommands` \$1 `Port` \$1 `Standard_Stream`

 [inputs](#in)   
用於使用此工作階段文件建立的工作階段的工作階段偏好設定。用來建立 `Standard_Stream` 工作階段的工作階段文件需要此元素。  
類型：StringMap  
必要：否    
 [s3BucketName](#bucket)   
在工作階段結束時，接收工作階段日誌的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。  
類型：字串  
必要：否  
 [s3KeyPrefix](#prefix)   
將日誌傳送到在 `s3BucketName` 輸入中指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體時使用的字首。如需有關搭配使用公用字首與 Amazon Simple Storage Service (Amazon S3) 中存放的物件的詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[如何使用 S3 儲存貯體中的資料夾？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html)。  
類型：字串  
必要：否  
 [s3EncryptionEnabled](#s3Encrypt)   
如果設定為 `true`，則必須加密在 `s3BucketName` 輸入中指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。  
類型：布林值  
必要：是  
 [cloudWatchLogGroupName](#logGroup)   
在工作階段結束時接收工作階段日誌的 Amazon CloudWatch Logs (CloudWatch Logs) 群組的名稱。  
類型：字串  
必要：否  
 [cloudWatchEncryptionEnabled](#cwEncrypt)   
如果設定為 `true`，則必須加密在 `cloudWatchLogGroupName` 輸入中指定的 日誌群組。  
類型：布林值  
必要：是  
 [cloudWatchStreamingEnabled](#cwStream)   
如果設定為 `true`，工作階段資料日誌的持續串流會傳送到您在 `cloudWatchLogGroupName` 輸入中指定的日誌群組。如果設定為 `false`，在工作階段結束時，工作階段日誌會傳送到您在 `cloudWatchLogGroupName` 輸入中指定的日誌群組。  
類型：布林值  
必要：是  
 [kmsKeyId](#kms)   
您想要使用的 AWS KMS key 的 ID，以進一步加密本地用戶端機器和您連線的 Amazon Elastic Compute Cloud (Amazon EC2) 受管節點之間的資料。  
類型：字串  
必要：否  
 [runAsEnabled](#run)   
如果設定為 `true`，則必須在 `runAsDefaultUser` 輸入中指定您將連線的受管節點上存在的使用者帳戶。否則，工作階段將無法啟動。根據預設，使用 AWS Systems Manager SSM Agent 建立的 `ssm-user` 帳戶來啟動工作階段。僅連線至 Linux 和 macOS 受管節點時才支援執行身分功能。  
類型：布林值  
必要：是  
 [runAsDefaultUser](#runUser)   
當 macOS 輸入設定為 `true` 時，在 Linux 和 `runAsEnabled` 受管節點上啟動工作階段的使用者帳戶名稱。您為此輸入指定的使用者帳戶必須存在於您要連線的受管節點上；否則，工作階段將無法啟動。  
類型：字串  
必要：否  
 [idleSessionTimeout](#timeout)   
在工作階段結束前，您想要允許的閒置時間長度。此輸入的測量單位為分鐘。  
類型：字串  
有效值：1-60  
必要：否  
 [maxSessionDuration](#maxDuration)   
在工作階段結束前，您想要允許的最大時間長度。此輸入的測量單位為分鐘。  
類型：字串  
有效值：1-1440  
必要：否  
 [shellProfile](#shell)   
啟動工作階段時，您根據作業系統指定的套用在工作階段中的偏好設定，例如 shell 偏好設定、環境變數、工作目錄以及執行的多個命令。  
類型：StringMap  
必要：否    
 [windows](#win)   
您為 Windows Server 受管節點上的工作階段指定的 shell 偏好設定、環境變數、工作目錄和命令。  
類型：字串  
必要：否  
 [linux](#lin)   
您為 Linux 和 macOS 受管節點上的工作階段指定的 Shell 偏好設定、環境變數、工作目錄和命令。  
類型：字串  
必要：否

 [parameters](#param)   
一種物件，定義文件接受的參數。如需指定文件參數的詳細資訊，請參閱 [頂層資料元素](documents-syntax-data-elements-parameters.md#top-level) 中的**參數**。對於常用的參數，我們建議您將這些參數存放在 Systems Manager Parameter Store，然後參考使用。您在文件的這部分可以參考 `String` 和 `StringList` Parameter Store 參數。您在文件的這部分不能參考 `SecureString` Parameter Store 參數。您可以使用下列格式參考 Parameter Store 參數。  

```
{{ssm:parameter-name}}
```
如需有關 Parameter Store 的詳細資訊，請參閱「[AWS Systems Manager Parameter Store](systems-manager-parameter-store.md)」。  
類型：StringMap  
必要：否

 [properties](#props)   
一個物件，在 `StartSession` API 操作中使用您指定的其值。  
對於用於 `InteractiveCommands` 工作階段的工作階段文件，屬性物件會包含要在您指定的作業系統上執行的命令。您也可以使用 `runAsElevated` 布林值屬性決定命令是否以 `root` 執行。如需詳細資訊，請參閱[限制對工作階段中命令之存取權](session-manager-restrict-command-access.md)。  
對於用於 `Port` 工作階段的工作階段文件，屬性物件會包含應將流量重新引導的目標連接埠號碼。如需範例，請參閱本主題後面部分中的 `Port` 類型工作階段文件範例。  
類型：StringMap  
必要：否

`Standard_Stream` 類型工作階段文件範例

------
#### [ YAML ]

```
---
schemaVersion: '1.0'
description: Document to hold regional settings for Session Manager
sessionType: Standard_Stream
inputs:
  s3BucketName: ''
  s3KeyPrefix: ''
  s3EncryptionEnabled: true
  cloudWatchLogGroupName: ''
  cloudWatchEncryptionEnabled: true
  cloudWatchStreamingEnabled: true
  kmsKeyId: ''
  runAsEnabled: true
  runAsDefaultUser: ''
  idleSessionTimeout: '20'
  maxSessionDuration: '60'
  shellProfile:
    windows: ''
    linux: ''
```

------
#### [ JSON ]

```
{
    "schemaVersion": "1.0",
    "description": "Document to hold regional settings for Session Manager",
    "sessionType": "Standard_Stream",
    "inputs": {
        "s3BucketName": "",
        "s3KeyPrefix": "",
        "s3EncryptionEnabled": true,
        "cloudWatchLogGroupName": "",
        "cloudWatchEncryptionEnabled": true,
        "cloudWatchStreamingEnabled": true,
        "kmsKeyId": "",
        "runAsEnabled": true,
        "runAsDefaultUser": "",
        "idleSessionTimeout": "20",
        "maxSessionDuration": "60",
        "shellProfile": {
            "windows": "date",
            "linux": "pwd;ls"
        }
    }
}
```

------

`InteractiveCommands` 類型工作階段文件範例

------
#### [ YAML ]

```
---
schemaVersion: '1.0'
description: Document to view a log file on a Linux instance
sessionType: InteractiveCommands
parameters:
  logpath:
    type: String
    description: The log file path to read.
    default: "/var/log/amazon/ssm/amazon-ssm-agent.log"
    allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$"
properties:
  linux:
    commands: "tail -f {{ logpath }}"
    runAsElevated: true
```

------
#### [ JSON ]

```
{
    "schemaVersion": "1.0",
    "description": "Document to view a log file on a Linux instance",
    "sessionType": "InteractiveCommands",
    "parameters": {
        "logpath": {
            "type": "String",
            "description": "The log file path to read.",
            "default": "/var/log/amazon/ssm/amazon-ssm-agent.log",
            "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$"
        }
    },
    "properties": {
        "linux": {
            "commands": "tail -f {{ logpath }}",
            "runAsElevated": true
        }
    }
}
```

------

`Port` 類型工作階段文件範例

------
#### [ YAML ]

```
---
schemaVersion: '1.0'
description: Document to open given port connection over Session Manager
sessionType: Port
parameters:
  paramExample:
    type: string
    description: document parameter
properties:
  portNumber: anyPortNumber
```

------
#### [ JSON ]

```
{
    "schemaVersion": "1.0",
    "description": "Document to open given port connection over Session Manager",
    "sessionType": "Port",
    "parameters": {
        "paramExample": {
            "type": "string",
            "description": "document parameter"
        }
    },
    "properties": {
        "portNumber": "anyPortNumber"
    }
}
```

------

含特殊字元的工作階段文件範例

------
#### [ YAML ]

```
---
schemaVersion: '1.0'
description: Example document with quotation marks
sessionType: InteractiveCommands
parameters:
  Test:
    type: String
    description: Test Input
    maxChars: 32
properties:
  windows:
    commands: |
        $Test = '{{ Test }}'
        $myVariable = \"Computer name is $env:COMPUTERNAME\"
        Write-Host "Test variable: $myVariable`.`nInput parameter: $Test"
    runAsElevated: false
```

------
#### [ JSON ]

```
{
   "schemaVersion":"1.0",
   "description":"Test document with quotation marks",
   "sessionType":"InteractiveCommands",
   "parameters":{
      "Test":{
         "type":"String",
         "description":"Test Input",
         "maxChars":32
      }
   },
   "properties":{
      "windows":{
         "commands":[
            "$Test = '{{ Test }}'",
            "$myVariable = \\\"Computer name is $env:COMPUTERNAME\\\"",
            "Write-Host \"Test variable: $myVariable`.`nInput parameter: $Test\""
         ],
         "runAsElevated":false
      }
   }
}
```

------

# Session Manager 疑難排解
<a name="session-manager-troubleshooting"></a>

使用以下資訊以協助您對 AWS Systems Manager Session Manager 的問題進行故障診斷。

**Topics**
+ [呼叫 TerminateSession 操作時的 AccessDeniedException](#session-manager-troubleshooting-access-denied-exception)
+ [文件程序意外失敗：文件工作者逾時](#session-manager-troubleshooting-document-worker-timed-out)
+ [Session Manager 無法從 Amazon EC2 主控台連線](#session-manager-troubleshooting-EC2-console)
+ [無權啟動工作階段](#session-manager-troubleshooting-start-permissions)
+ [SSM Agent不在線](#session-manager-troubleshooting-agent-not-online)
+ [無權變更工作階段偏好設定](#session-manager-troubleshooting-preferences-permissions)
+ [受管節點無法使用或未設定用於 Session Manager](#session-manager-troubleshooting-instances)
+ [找不到 Session Manager 外掛程式](#plugin-not-found)
+ [Session Manager 外掛程式未自動新增到命令列路徑 (Windows)](#windows-plugin-env-var-not-set)
+ [Session Manager 外掛程式無回應](#plugin-unresponsive)
+ [TargetNotConnected](#ssh-target-not-connected)
+ [啟動工作階段後顯示空白畫面](#session-manager-troubleshooting-start-blank-screen)
+ [受管節點在長時間執行工作階段期間變得沒有回應](#session-manager-troubleshooting-log-retention)
+ [呼叫 StartSession 操作時發生錯誤 (InvalidDocument)](#session-manager-troubleshooting-invalid-document)

## 呼叫 TerminateSession 操作時的 AccessDeniedException
<a name="session-manager-troubleshooting-access-denied-exception"></a>

**問題**：試終止工作階段時，Systems Manager 傳回下列錯誤：

```
An error occurred (AccessDeniedException) when calling the TerminateSession operation: 
User: <user_arn> is not authorized to perform: ssm:TerminateSession on resource: 
<ssm_session_arn> because no identity-based policy allows the ssm:TerminateSession action.
```

**解決方案 A：確認節點上安裝的是[最新版本的 Session Manager 外掛程式](https://docs.aws.amazon.com/systems-manager/latest/userguide/plugin-version-history.html)**

在終端中輸入下列命令，然後按下 Enter 鍵。

```
session-manager-plugin --version
```

**解決方案 B：安裝或重新安裝最新版本的外掛程式**

如需詳細資訊，請參閱[安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)。

**解決方案 C：嘗試重新建立與節點的連線**

驗證節點是否在回應請求。嘗試重新建立工作階段。或者，如有必要，請開啟 Amazon EC2 主控台並確認執行個體的狀態正在執行中。

## 文件程序意外失敗：文件工作者逾時
<a name="session-manager-troubleshooting-document-worker-timed-out"></a>

**問題**：在 Linux 主機啟動工作階段時，Systems Manager 會傳回下列錯誤：

```
document process failed unexpectedly: document worker timed out, 
check [ssm-document-worker]/[ssm-session-worker] log for crash reason
```

如果按 [檢視 SSM Agent 日誌](ssm-agent-logs.md) 中所述設定 SSM Agent 記錄，即可在偵錯日誌中檢視更多詳細資訊。針對此問題，Session Manager 會顯示下列日誌項目：

```
failed to create channel: too many open files
```

此錯誤通常表示執行的 Session Manager 工作者程序太多，且基礎作業系統已達到限制。有兩個選項可用來解決此問題。

**解決方案 A：提高作業系統檔案通知限制**

您可以從個別 Linux 主機執行下列命令來提高限制。此命令使用 Systems Manager Run Command。指定的值會將 `max_user_instances` 提高至 8192。此值遠高於預設值 128，但不會對主機資源造成壓力：

```
aws ssm send-command --document-name AWS-RunShellScript \
--instance-id i-02573cafcfEXAMPLE  --parameters \
"commands=sudo sysctl fs.inotify.max_user_instances=8192"
```

**解決方案 B：減少目標主機中 Session Manager 使用的檔案通知**

從個別 Linux 主機執行下列命令，列出在目標主機上執行的工作階段：

```
aws ssm describe-sessions --state Active --filters key=Target,value=i-02573cafcfEXAMPLE
```

檢閱命令輸出，識別不再需要的工作階段。您可以從個別 Linux 主機執行下列命令來終止這些工作階段：

```
aws ssm terminate-session —session-id session ID
```

或者，只要遠端伺服器上不再有執行中的工作階段，您就可以從個別 Linux 主機執行下列命令來釋出其他資源。此命令會終止在遠端主機上執行的所有 Session Manager 程序，從而終止遠端主機的所有工作階段。在執行此命令之前，請確認是否有要保留的持續工作階段：

```
aws ssm send-command --document-name AWS-RunShellScript \
            --instance-id i-02573cafcfEXAMPLE --parameters \
'{"commands":["sudo kill $(ps aux | grep ssm-session-worker | grep -v grep | awk '"'"'{print $2}'"'"')"]}'
```

## Session Manager 無法從 Amazon EC2 主控台連線
<a name="session-manager-troubleshooting-EC2-console"></a>

**問題**：建立新執行個體之後，Amazon Elastic Compute Cloud (Amazon EC2) 主控台中的**連線**按鈕 > **Session Manager** 索引標籤並未提供連線選項。

**解決方案 A：建立執行個體描述檔**：如果您尚未這麼做 （如 EC2 主控台中 **Session Manager** 索引標籤上的資訊指示），請使用 建立 AWS Identity and Access Management (IAM) 執行個體描述檔Quick Setup。 Quick Setup 是 中的工具 AWS Systems Manager。

Session Manager 需要 IAM 執行個體設定檔才能連線到執行個體。您可以使用 Quick Setup 建立[主機管理組態](https://docs.aws.amazon.com/systems-manager/latest/userguide/quick-setup-host-management.html)，然後再建立執行個體設定檔並將其指派給執行個體。*主機管理組態*會建立具有必要許可的執行個體設定檔，並將其指派給執行個體。主機管理組態也可以啟用 Systems Manager 的其他工具，並建立 IAM 角色來使用這些工具。使用 Quick Setup 或主機管理組態啟用的工具免費。[開啟 Quick Setup 並建立主機管理組態](https://console.aws.amazon.com/systems-manager/quick-setup/create-configuration&configurationType=SSMHostMgmt)。

**重要**  
建立主機管理組態後，Amazon EC2 可能需要幾分鐘的時間來登記變更並重新整理 **Session Manager** 索引標籤。如果在兩分鐘後索引標籤中仍未顯示**連線**按鈕，請重新啟動執行個體。重新啟動後，如果仍然看不到連線選項，請開啟 [Quick Setup](https://console.aws.amazon.com/systems-manager/quick-setup/create-configuration&configurationType=SSMHostMgmt)，確認僅存在一個主機管理組態。如果有兩個，請刪除較舊的組態並等待幾分鐘。

如果在建立主機管理組態後仍無法連線，或是收到錯誤訊息 (包含 SSM Agent 相關錯誤)，請參閱下列其中一個解決方案：
+  [解決方案 B：沒有錯誤，但仍無法連線](#session-manager-troubleshooting-EC2-console-no-error) 
+  [解決方案 C：關於遺失 SSM Agent 的錯誤](#session-manager-troubleshooting-EC2-console-no-agent) 

### 解決方案 B：沒有錯誤，但仍無法連線
<a name="session-manager-troubleshooting-EC2-console-no-error"></a>

如果您已建立主機管理組態，而在等待數分鐘後再嘗試連線，但仍無法連線，則您可能需要手動將主機管理組態套用至執行個體。請遵循以下程序以更新 Quick Setup 主機管理組態，並將變更套用至執行個體。

**使用 Quick Setup 更新主機管理組態**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Quick Setup**。

1. 在**組態**清單中，選擇您建立的**主機管理**組態。

1. 選擇**動作**，然後選擇**編輯組態**。

1. 在**目標**區段底部附近，從**選擇將執行個體設為目標的方式**下選擇**手動**。

1. 在**執行個體**區段中，選擇您建立的執行個體。

1. 選擇**更新**。

等待幾分鐘，讓 EC2 重新整理 **Session Manager** 索引標籤。如果仍然無法連線或收到錯誤訊息，則請檢閱此問題的其餘解決方案。

### 解決方案 C：關於遺失 SSM Agent 的錯誤
<a name="session-manager-troubleshooting-EC2-console-no-agent"></a>

如果您無法使用 Quick Setup 建立主機管理組態，或者收到關於 SSM Agent 未安裝的錯誤訊息，您可能需要在執行個體上手動安裝 SSM Agent。 SSM Agent 是一種 Amazon 軟體，它讓 Systems Manager 可以使用 Session Manager 連線到您執行個體。大多數 Amazon Elastic Compute (AMI) 預設會安裝 SSM Agent。如果您的執行個體是從非標準 AMI 或較舊的 AMI 建立的，您可能需要手動安裝該代理程式。如需安裝 SSM Agent 的程序，請參閱以下與您執行個體作業系統相對應的主題。
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html) 
+  [AlmaLinux](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-alma.html) 
+  [Amazon Linux 2 和 AL2023](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-al2.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-deb.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-deb.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-oracle.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-oracle.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-rhel.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-rhel.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-rocky.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-rocky.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-ubuntu.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-ubuntu.html) 

對於 SSM Agent 相關問題，請參閱 [SSM Agent 疑難排解](troubleshooting-ssm-agent.md)。

## 無權啟動工作階段
<a name="session-manager-troubleshooting-start-permissions"></a>

**問題**：您嘗試啟動工作階段，但系統會提示您沒有必須的許可。
+ **解決方案**：系統管理員尚未授予您啟動Session Manager工作階段的 AWS Identity and Access Management (IAM) 政策許可。如需相關資訊，請參閱[控制使用者工作階段存取執行個體](session-manager-getting-started-restrict-access.md)。

## SSM Agent不在線
<a name="session-manager-troubleshooting-agent-not-online"></a>

**問題**：您會在 Amazon EC2 執行個體 **Session Manager** 索引標籤上看到一則訊息，指出：「SSM Agent 不在線。SSM Agent 無法連線至 Systems Manager 端點，因而無法自行註冊服務。」

**解決方案**：SSM Agent 是在 Amazon EC2 執行個體上執行的 Amazon 軟體，因此 Session Manager 可以與其連線。如果看到此錯誤，表明 SSM Agent 無法與 Systems Manager 端點建立連線。問題的根源可能是防火牆限制、路由問題或沒有網際網路連線。若要解決此問題，請調查網路連線問題。如需詳細資訊，請參閱[SSM Agent 疑難排解](troubleshooting-ssm-agent.md)及[疑難排解受管節點的可用性](fleet-manager-troubleshooting-managed-nodes.md)。如需有關 Systems Manager 端點的資訊，請參閱 AWS General Reference 中的 [AWS Systems Manager endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/ssm.html)。

## 無權變更工作階段偏好設定
<a name="session-manager-troubleshooting-preferences-permissions"></a>

**問題**：您嘗試替您的組織更新公有的工作階段偏好設定，但系統會提示您沒有必須的許可。
+ **解決方案**：系統管理者尚未授予您 IAM 政策權限來設定 Session Manager 工作階段。如需相關資訊，請參閱[授與或拒絕使用者許可來更新Session Manager偏好設定](preference-setting-permissions.md)。

## 受管節點無法使用或未設定用於 Session Manager
<a name="session-manager-troubleshooting-instances"></a>

**問題 1**：您想要啟動工作階段在 **Start a session (開啟工作階段)** 主控台頁面，但受管節點不在清單中。
+ **解決方案 A**：您可能尚未設定要連線的受管節點 AWS Systems Manager。如需詳細資訊，請參閱[為組織設定 Systems Manager 統一主控台](systems-manager-setting-up-organizations.md)。
**注意**  
如果您 AWS Systems Manager SSM Agent連接 IAM 執行個體描述檔時已在受管節點上執行 ，您可能需要重新啟動代理程式，執行個體才會列在**啟動工作階段**主控台頁面上。
+ **解決方案 B**：套用至受管節點上的 SSM Agent 的代理組態可能不正確。如果代理組態不正確，受管節點將無法連線到所需的服務端點，或節點可能會以不同的作業系統向 Systems Manager 報告。如需詳細資訊，請參閱[將 SSM Agent 設定為使用 Linux 節點上的代理](configure-proxy-ssm-agent.md)及[將 SSM Agent 設定為使用 Windows Server 執行個體的代理](configure-proxy-ssm-agent-windows.md)。

**問題 2**：您想要連接的受管節點位於 **Start a session** (開啟一個工作階段) 主控台頁面的清單裡，但頁面報告「您所選擇的執行個體沒有設定使用 Session Manager。」 
+ **解決方案 A**：該受管節點已經被設定成用於 Systems Manager 服務，但連接至該節點的 IAM 執行個體設定檔可能不會包含使用 Session Manager 工具的許可。如需相關資訊，請參閱[使用 Session Manager 許可以驗證或建立 IAM 執行個體設定檔](session-manager-getting-started-instance-profile.md)。
+ **解決方案 B**：受管節點無法在支援 Session Manager 的 SSM Agent 版本上執行。在節點上更新 SSM Agent 至 2.3.68.0 版本或更新版本。

  依照 [在 Windows Server EC2 執行個體上手動安裝和解除安裝 SSM Agent](manually-install-ssm-agent-windows.md)、[在 Linux EC2 執行個體上手動安裝和解除安裝 SSM Agent](manually-install-ssm-agent-linux.md) 或 [在 macOS EC2 執行個體上手動安裝和解除安裝 SSM Agent](manually-install-ssm-agent-macos.md) 步驟在受管節點上手動更新 SSM Agent，這取決於作業系統。

  或者您可以在一或多個受管節點上使用 Run Command 文件 `AWS-UpdateSSMAgent` 更新代理程式版本。如需相關資訊，請參閱[使用 Run Command 更新 SSM Agent](run-command-tutorial-update-software.md#rc-console-agentexample)。
**提示**  
若要一直持續更新您的代理程式到最新版本，我們建議您定義自動化排程來更新 SSM Agent 到最新版，請使用下列其中一種方法。  
在 State Manager 關聯過程中執行 `AWS-UpdateSSMAgent`。如需相關資訊，請參閱[逐步解說：SSM Agent使用 自動更新 AWS CLI](state-manager-update-ssm-agent-cli.md)。
在維護時段內執行 `AWS-UpdateSSMAgent`。如需使用維護時段的資訊，請參閱 [使用主控台建立和管理維護時段](sysman-maintenance-working.md) 及[教學課程：使用 建立和設定維護時段 AWS CLI](maintenance-windows-cli-tutorials-create.md)。
+ **解決方案 C**：受管節點無法連線到必需的服務端點。您可以使用 支援的介面端點來連線至 Systems Manager 端點 AWS PrivateLink ，以改善受管節點的安全狀態。使用介面端點的替代方案是在您的受管節點上啟用對外網際網路存取。如需詳細資訊，請參閱[使用 PrivateLink 設定 Session Manager 的 VPC 端點](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html)。
+ **解決方案 D**：受管節點的可用 CPU 或記憶體資源有限。雖然您的受管節點可能是正常的，但如果節點沒有足夠的可用資源，則無法建立工作階段。如需詳細資訊，請參閱[對無法連線的執行個體進行故障診斷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html)。

## 找不到 Session Manager 外掛程式
<a name="plugin-not-found"></a>

若要使用 AWS CLI 執行工作階段命令，您的本機電腦上也必須安裝 Session Manager外掛程式。如需相關資訊，請參閱[安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)。

## Session Manager 外掛程式未自動新增到命令列路徑 (Windows)
<a name="windows-plugin-env-var-not-set"></a>

當您在 Windows 上安裝 Session Manager 外掛程式，`session-manager-plugin` 可執行檔應該會自動新增到您的作業系統的 `PATH` 環境變數。如果在您執行之後命令失敗，請檢查 Session Manager 外掛程式是否正確地安裝 (`aws ssm start-session --target instance-id`)，您可能需要使用以下程序手動設定。

**修改 PATH 變數 (Windows)**

1. 按下 Windows 鍵並輸入 **environment variables**。

1. 選擇 **Edit environment variables for your account (編輯您帳戶的環境變數)**。

1. 選擇 **PATH**，然後選擇**編輯**。

1. 新增路徑至 **Variable value (變數值)** 欄位，以分號分隔，如下列範例所示：*`C:\existing\path`*;*`C:\new\path`*

   *`C:\existing\path`* 代表已經在欄位中的值。*`C:\new\path`* 代表您想要新增的路徑，如下列範例所示。
   + **64 位元機器**：`C:\Program Files\Amazon\SessionManagerPlugin\bin\`

1. 選擇 **OK** (確定) 兩次以套用新的設定。

1. 關閉所有正在執行的命令提示並重新開啟。

## Session Manager 外掛程式無回應
<a name="plugin-unresponsive"></a>

在連接埠轉送工作階段期間，如果您的本機電腦上安裝了防毒軟體，流量可能會停止轉送。在某些情況下，防毒軟體會干擾 Session Manager 外掛程式，從而導致程序死鎖。若要解決此問題，請在防毒軟體中允許或排除 Session Manager 外掛程式。如需有關 Session Manager 外掛程式的預設安裝路徑的相關資訊，請參閱 [安裝 的Session Manager外掛程式 AWS CLI](session-manager-working-with-install-plugin.md)。

## TargetNotConnected
<a name="ssh-target-not-connected"></a>

**問題**：您嘗試啟動工作階段，但系統傳回錯誤訊息：「呼叫 StartSession 操作時發生錯誤 (TargetNotConnected)：未連接 *InstanceID*。」
+ **解決方案**：當工作階段的指定目標受管節點未完全設定為與工作階段管理員搭配使用時，會傳回此錯誤。如需相關資訊，請參閱[設定 Session Manager](session-manager-getting-started.md)。
+ **解決方案 B**：如果您嘗試在位於不同 AWS 帳戶 或 的受管節點上啟動工作階段，也會傳回此錯誤 AWS 區域。

## 啟動工作階段後顯示空白畫面
<a name="session-manager-troubleshooting-start-blank-screen"></a>

**問題**：您啟動了工作階段，但 Session Manager 顯示空白畫面。
+ **解決方案 A**：當受管節點上的根磁碟區滿載時，就可能發生此問題。因為缺少磁碟空間，所以節點上的 SSM Agent 停止運作。如果要解決此問題，請使用 Amazon CloudWatch 從作業系統收集指標和日誌。如需詳細資訊，請參閱《Amazon CloudWatch 使用者指南》**中的 [Collect metrics, logs, and traces with the CloudWatch agent](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)。
+ **解決方案 B**：如果您使用包含不相符端點和區域配對的連結來存取主控台，則可能會顯示空白畫面。例如，在下列主控台 URL 中，`us-west-2` 是指定的端點，但 `us-west-1` 是指定的 AWS 區域：

  ```
  https://us-west-2.console.aws.amazon.com/systems-manager/session-manager/sessions?region=us-west-1
  ```
+ **解決方案 C**：受管節點正在使用 VPC 端點連線至 Systems Manager，而您的 Session Manager 偏好設定會將工作階段輸出寫入 Amazon Simple Storage Service (Amazon S3) 儲存貯體或 Amazon CloudWatch Logs 日誌組，但 VPC 中不存在 `s3` 閘道端點或 `logs` 介面端點。如果您的受管節點使用 VPC 端點連線到 Systems Manager，則需要格式為 **`com.amazonaws.region.s3`** 的 `s3` 端點，並且 Session Manager 偏好設定會將工作階段輸出寫入至 Amazon Simple Storage Service (Amazon S3) 儲存貯體。或者，如果您的受管節點使用 VPC 端點連線到 Systems Manager，則需要格式為 **`com.amazonaws.region.logs`** 的 `logs` 端點，並且 Session Manager 偏好設定會將工作階段輸出寫入至 CloudWatch Logs 日誌群組。如需詳細資訊，請參閱[若要建立 Systems Manager 的 VPC 端點](setup-create-vpc.md#create-vpc-endpoints)。
+ **解決方案 D**：您在工作階段偏好設定中指定的日誌群組或 Amazon Simple Storage Service (Amazon S3) 儲存貯體已被刪除。若要解決此問題，請使用有效的日誌群組或 S3 儲存貯體來更新工作階段偏好設定。
+ **解決方案 E**：您在工作階段偏好設定中指定的日誌群組或 Amazon Simple Storage Service (Amazon S3) 儲存貯體未加密，但您已將 `cloudWatchEncryptionEnabled` 或 `s3EncryptionEnabled` 輸入設定為 `true`。若要解決此問題，請使用已加密的日誌群組或 Amazon Simple Storage Service (Amazon S3) 儲存貯體更新工作階段偏好設定，或將 `cloudWatchEncryptionEnabled` 或 `s3EncryptionEnabled` 輸入設定為 `false`。此案例僅適用於使用命令列工具建立工作階段偏好設定的客戶。

## 受管節點在長時間執行工作階段期間變得沒有回應
<a name="session-manager-troubleshooting-log-retention"></a>

**問題**：您的受管節點沒有回應或在長時間執行工作階段期間當機。

**解決方案**：減少 Session Manager 的 SSM Agent 日誌保留期限。

**若要減少工作階段的 SSM Agent 日誌保留期限**

1. 在 Linux 的 `/etc/amazon/ssm/` 目錄或 Windows 的 `C:\Program Files\Amazon\SSM` 目錄中找到 `amazon-ssm-agent.json.template`。

1. 將 `amazon-ssm-agent.json.template` 的內容複製到同一目錄中的新檔案，名為 `amazon-ssm-agent.json`。

1. 降低 `SSM` 屬性中 `SessionLogsRetentionDurationHours` 值的預設值，並儲存檔案。

1. 重新啟動SSM Agent。

## 呼叫 StartSession 操作時發生錯誤 (InvalidDocument)
<a name="session-manager-troubleshooting-invalid-document"></a>

**問題**：使用 AWS CLI開始連線階段時，您收到下列錯誤。

```
An error occurred (InvalidDocument) when calling the StartSession operation: Document type: 'Command' is not supported. Only type: 'Session' is supported for Session Manager.
```

**解決方案**：您為 `--document-name` 參數指定的 SSM 文件不是*連線階段*文件。使用下列程序在 AWS 管理主控台中檢視連線階段文件清單。

**若要檢視連線階段文件清單**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Documents (文件)**。

1. 在**類別**清單中，選擇**連線階段文件**。