

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

# 連線至 EC2 執行個體
<a name="connect"></a>

您的 Amazon EC2 執行個體是 AWS 雲端中的虛擬伺服器。若要登入執行個體，您必須建立執行個體的連線。連線到執行個體的方式取決於執行個體的作業系統，以及您用來連線到執行個體的電腦作業系統。下表詳細說明每種連線方式的要求。


| 連線選項 | 執行個體的作業系統 | 傳入流量規則 | IAM 許可 | 執行個體設定檔角色 | 執行個體上的軟體 | 連線系統上的軟體 | 金鑰對 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
|  SSH 用戶端  |  Linux  |  是  |  否  |  否  |  否  |  是  |  是  | 
|  EC2 執行個體連線  |  Linux  |  是  |  是  |  否  |  是 ¹  |  否  |  否  | 
| PuTTY |  Linux  |  是  |  否  |  否  |  否  |  是  |  是  | 
| RDP 用戶端 |  Windows  |  是  |  否  |  否  |  否  |  是  |  是 ²  | 
| Fleet Manager |  Windows  |  否  |  是  |  是  |  是 ¹  |  否  |  是  | 
| 工作階段管理員 |  Linux、Windows  |  否  |  是  |  是  |  是 ¹  |  否  |  否  | 
| EC2 Instance Connect 端點 |  Linux、Windows  |  是  |  是  |  否  |  否  |  否  |  否 ³  | 

¹僅在特定 AMI 預先安裝所需軟體。您可以在支援的作業系統視需要手動安裝所需軟體。

²只有在您使用本機管理員使用者帳戶隨機產生的密碼時，才需要金鑰對。

³ 若使用 SSH 連線方法，需要金鑰對。

如需詳細資訊，請參閱您要使用的連線選項文件。

**連線選項**
+ [使用 SSH 用戶端連接至 Linux 執行個體](connect-linux-inst-ssh.md)
+ [使用 PuTTY 連線至您的 Linux 執行個體](connect-linux-inst-from-windows.md)
+ [使用 RDP 用戶端連線至您的 Windows 執行個體。](connect-rdp.md)
+ [使用 Fleet Manager 連線到 Windows 執行個體](connect-rdp-fleet-manager.md)
+ [使用工作階段管理員進行連接](connect-with-systems-manager-session-manager.md)
+ [使用公有 IP 與 EC2 Instance Connect 建立連線](connect-linux-inst-eic.md)
+ [使用私有 IP 與 EC2 Instance Connect 端點建立連線](connect-with-ec2-instance-connect-endpoint.md)

# 一般連線先決條件
<a name="connection-prereqs-general"></a>

以下是連線至執行個體的一般先決條件。請注意，您選擇的連線選項可能還有其他特定的先決條件。

**一般先決條件**
+ 請確認您的執行個體已通過狀態檢查。執行個體可能需要幾分鐘的時間準備就緒，以接受連線要求。如需詳細資訊，請參閱[檢視狀態檢查](viewing_status.md)。
+ [取得必要的執行個體詳細資訊](#connection-prereqs-get-info-about-instance).
+ [找出私有金鑰並設定許可](#connection-prereqs-private-key).
+ [(選用) 取得執行個體指紋](#connection-prereqs-fingerprint).

## 取得必要的執行個體詳細資訊
<a name="connection-prereqs-get-info-about-instance"></a>

若準備連線至執行個體，請從 Amazon EC2 主控台或使用命令列取得下列資訊。

![\[Amazon EC2 主控台的「執行個體」窗格。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/connection-prereqs-console2.png)

+ **取得執行個體的公有 DNS 名稱。**

  您可以從 Amazon EC2 主控台取得執行個體的公有 DNS。檢查**執行個體**窗格的**公有 IPv4 DNS** 資料欄。如果此資料欄已隱藏，請選擇畫面右上角的設定圖示 (![\[The gear icon.\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/settings-icon.png))，並選取**公有 IPv4 DNS**。您也可以在**執行個體**窗格的執行個體資訊區段中找到公有 DNS。當您在 Amazon EC2 主控台的**執行個體**窗格中選取執行個體時，該執行個體的相關資訊將顯示在頁面的下半部。在**詳細資訊**索引標籤下，查找**公有 IPv4 DNS**。

  如果您願意的話，可以使用 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) (AWS CLI) 或 [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) (AWS Tools for Windows PowerShell) 命令。

  如果未顯示**公有 IPv4 DNS**，則請確認**執行個體狀態**為**執行中**，且您尚未在私有子網路中啟動執行個體。如果您使用[啟動執行個體精靈](ec2-launch-instance-wizard.md)啟動執行個體，則可能已編輯**網路設定**下的**自動指派公有 IP** 欄位，並將值變更為**停用**。如果停用**自動指派公有 IP** 選項，則執行個體在啟動時不會被指派公有 IP 地址。
+ **(僅限 IPv6 執行個體) 取得執行個體的 IPv6 地址。**

  如果您已將 IPv6 地址指派給執行個體，則您可使用其 IPv6 地址連線至執行個體，而不必使用公有 IPv4 地址或公有 IPv4 DNS 主機名稱。您的本機電腦必須擁有 IPv6 地址，且必須設定以使用 IPv6。您可以從 Amazon EC2 主控台取得執行個體的 IPv6 地址。檢查**執行個體**窗格的 **IPv6 IP** 資料欄。或者，您可以在執行個體資訊區段中找到 IPv6 地址。當您在 Amazon EC2 主控台的**執行個體**窗格中選取執行個體時，該執行個體的相關資訊將顯示在頁面的下半部。在**詳細資訊**索引標籤下，查找 **IPv6 地址**。

  如果您願意的話，可以使用 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) (AWS CLI) 或 [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) (AWS Tools for Windows PowerShell) 命令。如需有關 IPv6 的詳細資訊，請參閱 [IPv6 地址](using-instance-addressing.md#ipv6-addressing)。
+ **(Linux 執行個體) 取得執行個體的使用者名稱。**

  使用您的使用者帳戶的使用者名稱或用於啟動執行個體的 AMI 預設使用者名稱，可連線至執行個體。
  + **取得使用者帳戶的使用者名稱。**

    如需如何建立使用者帳戶的詳細資訊，請參閱[在您的 Amazon EC2 Linux 執行個體上管理系統使用者](managing-users.md)。
  + **取得您用於啟動執行個體的 AMI 的預設使用者名稱。**
    + **Amazon Linux** – `ec2-user`
    + **CentOS** – `centos` 或 `ec2-user`
    + **Debian** – `admin`
    + **Fedora** – `fedora` 或 `ec2-user`
    + **FreeBSD** – `ec2-user`
    + **RHEL** – `ec2-user` 或 `root`
    + **SUSE** – `ec2-user` 或 `root`
    + **Ubuntu** – `ubuntu`
    + **Oracle** – `ec2-user`
    + **Bitnami** – `bitnami`
    + **Rocky Linux** – `rocky`
    + **其它** – 檢查 AMI 提供者

## 找出私有金鑰並設定許可
<a name="connection-prereqs-private-key"></a>

您必須知道私有金鑰檔案的位置，才能使用 SSH 或使用 RDP 的 Windows 執行個體與 Linux 執行個體進行初始連線。若為 SSH 連線，則必須設定檔案許可，以便只有您可以讀取金鑰。

如需有關使用 Amazon EC2 時金鑰對如何運作的資訊，請參閱 [Amazon EC2 金鑰對和 Amazon EC2 執行個體](ec2-key-pairs.md)。
+ **找出私有金鑰。**

  取得當您啟動執行個體時所指定的金鑰對的 `.pem` 檔案在您電腦中的位置的完整路徑。如需詳細資訊，請參閱[識別啟動時指定的公有金鑰](describe-keys.md#identify-key-pair-specified-at-launch)。

  如果您找不到私有金鑰檔案，請參閱 [我的私有金鑰遺失。如何連線到我的執行個體？](TroubleshootingInstancesConnecting.md#replacing-lost-key-pair)

  (Linux 執行個體) 如果使用 Putty 連線至執行個體，且需要將 `.pem` 檔案轉換為 `.ppk`，請參閱 [使用 PuTTYgen 轉換私有金鑰](connect-linux-inst-from-windows.md#putty-private-key)。
+ **(Linux 執行個體) 設定私有金鑰的許可，確保只有您可以讀取。**
  + **從 macOS 或 Linux 進行連線**

    如果您計劃在 macOS 或 Linux 電腦上使用 SSH 用戶端連線至 Linux 執行個體，請使用下列命令設定私有金鑰檔案的許可，以便只有您能夠讀取該檔案。

    ```
    chmod 400 key-pair-name.pem
    ```

    如果您未設定這些許可，則無法使用此金鑰對來連接至您的執行個體。如需詳細資訊，請參閱[錯誤：未受保護的私有金鑰檔案](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key)。
  + **從 Windows 進行連線**

    開啟檔案總管並在 `.pem` 檔案上按一下滑鼠右鍵。選取**屬性** > **安全性**索引標籤，然後選擇**進階**。選擇**停用繼承**。移除目前使用者以外的所有使用者存取權。

## (選用) 取得執行個體指紋
<a name="connection-prereqs-fingerprint"></a>

為了保護自己免受中間人攻擊，您可以透過驗證顯示的指紋來驗證即將連線的執行個體真實性。如果已從第三方提供的公有 AMI 啟動您的執行個體，則驗證指紋會很有幫助。

**任務概觀**  
首先，從執行個體取得執行個體指紋。然後，當您連線到執行個體並收到提示來驗證指紋時，請將您在此程序取得的指紋與顯示的指紋進行比較。如果這些指紋不符，可能有人嘗試發動中間人攻擊。如果相符，您就能很有信心地連線至您的執行個體。

**取得執行個體指紋的先決條件**
+ 執行個體必不得處於 `pending` 狀態。只有在執行個體的第一次開機完成後，才能使用指紋。
+ 您必須是執行個體擁有者才能取得主控台輸出。
+ 有多種方式可取得執行個體指紋。若要使用 AWS CLI，必須在本機電腦安裝。如需安裝 的資訊 AWS CLI，請參閱*AWS Command Line Interface 《 使用者指南*》中的 [入門 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

**取得執行個體指紋**

在步驟 1，您會取得主控台輸出，其中包含執行個體指紋。在步驟 2，您可以在主控台輸出找到執行個體指紋。

1. 使用下列方法之一取得主控台輸出。

------
#### [ Console ]

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

   1. 從左側導覽，選擇**執行個體**。

   1. 選取執行個體，然後再依序選擇**動作**、**監控和疑難排解**和**取得系統日誌**。

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

   在本機電腦上 (而非所連線的執行個體)，如下所示使用 [get-console-output](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-console-output.html) 命令來取得執行個體的指紋。如果輸出很大，[可以將輸出傳送至文字檔案](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output-format.html)，這可能更易於讀取。

   ```
   aws ec2 get-console-output \
       --instance-id i-1234567890abcdef0 \
       --query Output \
       --output text > temp.txt
   ```

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

   於本機電腦，使用下面的 [Get-EC2ConsoleOutput](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ConsoleOutput.html) cmdlet。

   ```
   $encodedOutput = (Get-EC2ConsoleOutput -InstanceId i-1234567890abcdef0).Output
   [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($encodedOutput))
   ```

------

1. 在主控台輸出，尋找位於 `BEGIN SSH HOST KEY FINGERPRINTS` 下的執行個體 (主機) 指紋。可能會有數個執行個體指紋。當連線到執行個體時，它只會顯示其中一個指紋。

   具體的輸出可能因作業系統、AMI 版本以及是否使用 AWS 建立的金鑰對而有所不同。以下為範例輸出。

   ```
   ec2:#############################################################
   ec2: -----BEGIN SSH HOST KEY FINGERPRINTS-----
   ec2: 256 SHA256:l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY no comment (ECDSA)
   ec2: 256 SHA256:kpEa+rw/Uq3zxaYZN8KT501iBtJOIdHG52dFi66EEfQ no comment (ED25519)
   ec2: 2048 SHA256:L8l6pepcA7iqW/jBecQjVZClUrKY+o2cHLI0iHerbVc no comment (RSA)
   ec2: -----END SSH HOST KEY FINGERPRINTS-----
   ec2: #############################################################
   ```
**注意**  
您會在連線至執行個體時參考此指紋。

# 使用 SSH 連線至您的 Linux 執行個體
<a name="connect-to-linux-instance"></a>

有多種方法可使用 SSH 連線至 Linux 執行個體。其中的某些方法會因您連線的來源本機電腦作業系統而有所不同。其他方法以瀏覽器為基礎，例如 EC2 Instance Connect 或 AWS Systems Manager Session Manager，並且可以從任何電腦使用。您可以使用 SSH 連線至 Linux 執行個體並執行命令，或在本機電腦與執行個體之間使用 SSH 傳輸檔案。

使用 SSH 連線到您的 Linux 執行個體之前，請先完成下列先決條件：
+ 請確認您的執行個體已通過狀態檢查。執行個體可能需要幾分鐘的時間準備就緒，以接受連線要求。如需詳細資訊，請參閱[檢視狀態檢查](viewing_status.md)。
+ 請確保與執行個體關聯的安全群組允許來自您的 IP 地址的傳入 SSH 流量。如需詳細資訊，請參閱[從您電腦連線到執行個體的規則](security-group-rules-reference.md#sg-rules-local-access)。
+ [取得必要的執行個體詳細資訊](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [找出私有金鑰並設定許可](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(選用) 取得執行個體指紋](connection-prereqs-general.md#connection-prereqs-fingerprint).

然後，請選擇以下其中一個選項，以使用 SSH 連線至 Linux 執行個體。
+ [使用 SSH 用戶端連線](connect-linux-inst-ssh.md)
+ [使用 PuTTY 連線](connect-linux-inst-from-windows.md) 
+ [使用 SCP 傳輸檔案](linux-file-transfer-scp.md)

如果您無法連線至執行個體，且需要協助進行疑難排解，請參閱 [對連線至 Amazon EC2 Linux 執行個體的問題進行疑難排解](TroubleshootingInstancesConnecting.md)。

# 使用 SSH 用戶端連接至 Linux 執行個體
<a name="connect-linux-inst-ssh"></a>

您可以使用 Secure Shell (SSH) 從本機電腦連線至 Linux 執行個體。如需關於其他選項的詳細資訊，請參閱 [連線至 EC2 執行個體](connect.md)。

**注意**  
如果您在嘗試連線至執行個體時收到錯誤訊息，請確認執行個體符合所有 [SSH 連線先決條件](#ssh-prereqs-linux-from-linux-macos)。如果其符合所有先決條件，但您仍然無法連線至 Linux 執行個體，請參閱 [對連線至 Amazon EC2 Linux 執行個體的問題進行疑難排解](TroubleshootingInstancesConnecting.md)。

**Topics**
+ [SSH 連線先決條件](#ssh-prereqs-linux-from-linux-macos)
+ [使用 SSH 用戶端連接至 Linux 執行個體](#connect-linux-inst-sshClient)

## SSH 連線先決條件
<a name="ssh-prereqs-linux-from-linux-macos"></a>

在使用 SSH 連線到 Linux 執行個體之前，請完成下列任務。

**完成一般先決條件。**  
+ 請確認您的執行個體已通過狀態檢查。執行個體可能需要幾分鐘的時間準備就緒，以接受連線要求。如需詳細資訊，請參閱[檢視狀態檢查](viewing_status.md)。
+ [取得必要的執行個體詳細資訊](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [找出私有金鑰並設定許可](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(選用) 取得執行個體指紋](connection-prereqs-general.md#connection-prereqs-fingerprint).

**允許來自 IP 位址的傳入 SSH 流量。**  
請確保與執行個體關聯的安全群組允許來自您的 IP 地址的傳入 SSH 流量。如需詳細資訊，請參閱[從您電腦連線到執行個體的規則](security-group-rules-reference.md#sg-rules-local-access)。

**視需要在本機電腦安裝 SSH 用戶端。**  
您的本機電腦可能已預設安裝 SSH 用戶端。您可以在終端機視窗輸入下列命令來驗證這一點。若您的電腦無法識別該命令，您必須安裝 SSH 用戶端。  

```
ssh
```
以下是 Windows 的一些可能選項。如果您的電腦執行不同的作業系統，請參閱該作業系統的文件以取得 SSH 用戶端選項。

## 在 Windows 安裝 OpenSSL
<a name="openssh"></a>

在 Windows 安裝 OpenSSH 後，您可以使用 SSH 從 Windows 電腦連線至 Linux 執行個體。開始之前，請確定符合下列要求。

**Windows 版本**  
電腦上的 Windows 版本必須是 Windows Server 2019 或更新版本。  
對於舊版 Windows，請下載並安裝 [Win32-OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki)。

**PowerShell 需求**  
若要使用 PowerShell 在您的 Windows 作業系統中安裝 OpenSSH，您必須執行 PowerShell 5.1 版或更高版本，並且您的帳戶必須是內建管理員群組的成員。從 PowerShell 執行 `$PSVersionTable.PSVersion` 以檢查您的 PowerShell 版本。  
若要檢查您是否是內建管理員群組的成員，請執行下列 PowerShell 命令：  

```
(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
```
如果您是內建管理員群組的成員，則輸出為 `True`。

若要使用 PowerShell 安裝適用於 Windows 的 OpenSSH，請執行下列 PowerShell 命令。

```
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
```

以下為範例輸出。

```
Path          :
Online        : True
RestartNeeded : False
```

若要使用 PowerShell 從 Windows 中解除安裝 OpenSSH，請執行下列 PowerShell 命令。

```
Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
```

以下為範例輸出。

```
Path          :
Online        : True
RestartNeeded : True
```

## 安裝適用於 Linux 的 Windows 子系統 (WSL)
<a name="WSL"></a>

在 Windows 安裝 WSL 之後，您可以使用 Linux 命令列工具，例如 SSH 用戶端，從 Windows 電腦連線至 Linux 執行個體。

請遵循中的說明進行[在 EC2 Windows 執行個體安裝適用於 Linux 的 Windows 子系統](install-wsl-on-ec2-windows-instance.md) 如果您遵循 Microsoft 安裝指南的指示，他們會安裝 Linux 的 Ubuntu 發行版本。您可以視需要安裝不同的 Linux 發行版本。

在 WSL 終端機視窗中，將 `.pem` 檔案 (針對您在啟動時為執行個體指定的金鑰對) 從 Windows 複製到 WSL。請記下 `.pem` 檔案在 WSL 上的完整路徑，以便於在連接至執行個體時使用。如需有關如何指定 Windows 硬碟路徑的資訊，請參閱[如何存取 C 磁碟機？](https://learn.microsoft.com/en-us/windows/wsl/faq#how-do-i-access-my-c--drive-)。

```
cp /mnt/<Windows drive letter>/path/my-key-pair.pem ~/WSL-path/my-key-pair.pem
```

如需有關解除安裝適用於 Linux 的 Windows 子系統的資訊，請參閱[如何解除安裝 WSL 發行版本？](https://learn.microsoft.com/en-us/windows/wsl/faq#how-do-i-uninstall-a-wsl-distribution-)。

## 使用 SSH 用戶端連接至 Linux 執行個體
<a name="connect-linux-inst-sshClient"></a>

請使用下列程序使用 SSH 用戶端連線至您的 Linux 執行個體。

**使用 SSH 用戶端連線至執行個體**

1. 在電腦開啟終端機視窗。

1. 若要連線至執行個體，請使用 **ssh** 命令。您需要在先決條件收集之執行個體的詳細資訊。例如，您需要私有金鑰 (`.pem` 檔案) 的位置、使用者名稱，以及公有 DNS 名稱或 IPv6 地址。下面是範例命令。
   + (公有 DNS) 若要使用公有 DNS 名稱，請輸入下列命令。

     ```
     ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name
     ```
   + (IPv6) 或者，如果您的執行個體具有 IPv6 地址，請輸入下列命令以使用 IPv6 地址。

     ```
     ssh -i /path/key-pair-name.pem instance-user-name@2001:db8::1234:5678:1.2.3.4
     ```

   以下是回應範例。

   ```
   The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (198-51-100-1)' can't be established.
   ECDSA key fingerprint is l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY.
   Are you sure you want to continue connecting (yes/no)?
   ```

1. (選用) 確認安全提醒中的指紋與指紋是否相符。如果這些指紋不符合，可能有人嘗試發動中間人攻擊。如果它們符合，請繼續下一個步驟。如需詳細資訊，請參閱[取得執行個體指紋](connection-prereqs-general.md#connection-prereqs-fingerprint)。

1. 輸入 **yes**。

   您會看到如下的回應：

   ```
   Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (ECDSA) to the list of known hosts.
   ```

# 使用 PuTTY 連線至您的 Linux 執行個體
<a name="connect-linux-inst-from-windows"></a>

您可以使用 PuTTY (適用於 Windows 的免費 SSH 用戶端) 連線到 Linux 執行個體。

如果執行的是 Windows Server 2019 或更高版本，建議您使用 OpenSSH，這是一種透過 SSH 通訊協定進行遠端登入的開放原始碼連線工具。

**注意**  
如果您在嘗試連線至執行個體時收到錯誤訊息，請確認執行個體符合所有 [SSH 連線先決條件](connect-linux-inst-ssh.md#ssh-prereqs-linux-from-linux-macos)。如果其符合所有先決條件，但您仍然無法連線至 Linux 執行個體，請參閱 [對連線至 Amazon EC2 Linux 執行個體的問題進行疑難排解](TroubleshootingInstancesConnecting.md)。

**Topics**
+ [先決條件](#putty-prereqs)
+ [使用 PuTTYgen 轉換私有金鑰](#putty-private-key)
+ [連接至您的 Linux 執行個體](#putty-ssh)

## 先決條件
<a name="putty-prereqs"></a>

在使用 PuTTY 連線到 Linux 執行個體之前，請先完成下列任務。

**完成一般先決條件。**  
+ 請確認您的執行個體已通過狀態檢查。執行個體可能需要幾分鐘的時間準備就緒，以接受連線要求。如需詳細資訊，請參閱[檢視狀態檢查](viewing_status.md)。
+ [取得必要的執行個體詳細資訊](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [找出私有金鑰並設定許可](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(選用) 取得執行個體指紋](connection-prereqs-general.md#connection-prereqs-fingerprint).

**允許來自 IP 位址的傳入 SSH 流量。**  
請確保與執行個體關聯的安全群組允許來自您的 IP 地址的傳入 SSH 流量。如需詳細資訊，請參閱[從您電腦連線到執行個體的規則](security-group-rules-reference.md#sg-rules-local-access)。

**視需要在本機電腦安裝 PuTTY。**  
從 [PuTTY 下載頁面](https://www.chiark.greenend.org.uk/~sgtatham/putty/)下載並安裝 PuTTY。如已安裝舊版的 PuTTY，建議您下載最新版本。務必安裝整個套件。

**使用 PuTTYgen 將私有金鑰轉換為 PPK 格式。**  
您必須為啟動執行個體時指定的金鑰對指定私有金鑰。如果您以 .pem 格式建立私有金鑰，則必須將其轉換為 PPK 檔案以與 PuTTY 搭配使用。找到私有金鑰 (.pem 檔案)，然後按照 [使用 PuTTYgen 轉換私有金鑰](#putty-private-key) 中的步驟操作。

## (選用) 使用 PuTTYgen 轉換私有金鑰
<a name="putty-private-key"></a>

PuTTY 原生並不支援 PEM 格式的 SSH 金鑰。PuTTY 提供一套名為 PuTTYgen 的工具，可將 PEM 金鑰轉換為 PuTTY 所需的 PPK 格式。如果您使用 PEM 格式而非 PPK 格式建立金鑰，則必須將私有金鑰 (.pem 檔案) 轉換為此格式 (.ppk 檔案)，才能搭配 PuTTY 使用。

**將私有私鑰從 PEM 格式轉換為 PPK 格式**

1. 從 **Start (開始)** 功能表中選擇 **All Programs (所有程式)**、**PuTTY**、**PuTTYgen**。

1. 在 **Type of key to generate (要產生的金鑰類型)** 下，選擇 **RSA (SSH-2 RSA)**。如果您的 PuTTYgen 版本不包含此選項，請選擇 **SSH-2 RSA**。  
![\[PuTTYgen 中的 RSA 金鑰。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/puttygen-key-type.png)

1. 選擇 **Load** (載入)。根據預設，PuTTYgen 只會顯示副檔名為 `.ppk` 的檔案。若要尋找您的 `.pem` 檔案，請選擇顯示所有類型之檔案的選項。  
![\[選取所有檔案類型。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/puttygen-load-key.png)

1. 為您在啟動執行個體時所指定的金鑰對選取 `.pem` 檔案，然後選取 **Open (開啟)**。PuTTYgen 會顯示一個通知，指出 `.pem` 檔案已成功匯入。選擇 **OK** (確定)。

1. 若要以 PuTTY 可使用的格式儲存金鑰，請選擇 **Save private key** (儲存私有金鑰)。PuTTYgen 會顯示有關儲存沒有密碼短語之金鑰的警告。選擇 **Yes (是)**。
**注意**  
私有金鑰上的複雜密碼是額外一層保護。即使有人探索到您的私有金鑰，在沒有複雜密碼的情況下就無法使用您的私有金鑰。使用複雜密碼的缺點是提高自動化的難度，因為需要人力介入登入執行個體，或將檔案複製到執行個體。

1. 為您用於金鑰對的金鑰指定相同名稱 (例如，`key-pair-name`)，然後選擇 **Save** (儲存)。PuTTY 會自動新增 `.ppk` 副檔名。

您的私有金鑰對現已有正確的格式可供 PuTTY 使用。您現在可以使用 PuTTY 的 SSH 用戶端連線至您的執行個體。

## 連接至您的 Linux 執行個體
<a name="putty-ssh"></a>

請使用下列程序使用 PuTTY 連線至您的 Linux 執行個體。需要您為私有金鑰建立的 `.ppk` 檔案。如需詳細資訊，請參閱上一節中的[(選用) 使用 PuTTYgen 轉換私有金鑰](#putty-private-key)。如果您在嘗試連線至執行個體時遇到錯誤，請參閱 [對連線至 Amazon EC2 Linux 執行個體的問題進行疑難排解](TroubleshootingInstancesConnecting.md)。

**最後測試的版本** – PuTTY .78

**使用 PuTTY 連線到您的執行個體**

1. 啟動 PuTTY (在**開始**選單搜尋 **PuTTY**，然後選擇**開啟**)。

1. 在 **Category (類別)** 窗格中選擇 **Session (工作階段)**，然後填妥下列欄位：

   1. 在 **Host Name (主機名稱)** 方塊中，執行下列其中一項作業：
      + (公有 DNS) 若要使用執行個體的公有 DNS 名稱連線，請輸入 *instance-user-name*@*instance-public-dns-name*。
      + (IPv6) 或者，如果您的執行個體具有 IPv6 位址，若要使用執行個體的 IPv6 位址進行連線，請輸入 *instance-user-name*@*2001:db8::1234:5678:1.2.3.4*。

      如需有關如何尋找您執行個體的使用者名稱，以及執行個體的公有 DNS 名稱或 IPv6 地址的詳細資訊，請參閱 [取得必要的執行個體詳細資訊](connection-prereqs-general.md#connection-prereqs-get-info-about-instance)。

   1. 確保 **Port (連接埠)** 值是 22。

   1. 在 **Connection type (連線類型)** 下，選取 **SSH**。  
![\[PuTTY 組態 - 工作階段。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/putty-session-config.png)

1. (選用) 您可設定 PuTTY 按定期間隔自動傳送保持連線資料，以保持工作階段持續作用。這對避免您執行個體因工作階段閒置而中斷連線很有幫助。在**類別**窗格中選擇**連線**，然後在**保持連線之間的秒數**中輸入所需間隔。例如，如果您的工作階段在閒置 10 分鐘後中斷連線，請輸入 180 以設定 PuTTY 每 3 分鐘傳送一次保持連線資料。

1. 在**類別**窗格中，展開**連線**、展開 **SSH**，然後選擇**身分驗證**。選擇**憑證**。

1. 在**要驗證的私有金鑰檔案**旁，選擇**瀏覽**。在**選取私有金鑰檔案**對話方塊中，選取您為金鑰對產生的 `.ppk` 檔案。您可以按兩下檔案，或在**選取私有金鑰檔案**對話方塊中選擇**開啟**。

1. (選用) 如果您打算稍後再次連線到此執行個體，可以儲存工作階段資訊以供日後使用。在**類別**窗格中，選擇**工作階段**。在**儲存的工作階段**中輸入工作階段的名稱，然後選擇**儲存**。

1. 若要連線至執行個體，請選擇**開啟**。

1. 如果這是您第一次連線到此執行個體，PuTTY 會顯示安全提醒對話方塊，詢問您是否信任要連線的主機。

   1. (選用) 確認安全提醒對話方塊中的指紋是否符合您之前在[(選用) 取得執行個體指紋](connection-prereqs-general.md#connection-prereqs-fingerprint)中取得的指紋。如果這些指紋不符合，可能有人嘗試發動中間人攻擊。如果它們符合，請繼續下一個步驟。

   1. 選擇 **Accept (接受)**。隨即開啟視窗，您會連線到您的執行個體。
**注意**  
當您將私有金鑰轉換成 PuTTY 格式時，如已指定複雜密碼，您必須在登入執行個體時提供該複雜密碼。

如果您在嘗試連線至執行個體時遇到錯誤，請參閱 [對連線至 Amazon EC2 Linux 執行個體的問題進行疑難排解](TroubleshootingInstancesConnecting.md)。

# 使用 SCP 將檔案傳輸至 Linux 執行個體
<a name="linux-file-transfer-scp"></a>

在本機電腦和 Linux 執行個體之間傳輸檔案的一種方式是使用安全複製通訊協定 (SCP)。SCP 是簡單操作的理想選項，例如一次性檔案複製。SCP 會使用您透過 SSH 連線至執行個體時所用的相同 .pem 檔案，以保障檔案傳輸的安全性。若您需要保持檔案同步，或者若檔案很大，則 **rsync** 比 SCP 更快、效率更高。為了安全起見，請透過 SSH 使用 **rsync**，因為 **rsync** 預設會使用純文字傳輸資料。

使用 SCP 連線到您的 Linux 執行個體之前，請先完成下列先決條件：
+ **完成一般先決條件。**
  + 請確認您的執行個體已通過狀態檢查。執行個體可能需要幾分鐘的時間準備就緒，以接受連線要求。如需詳細資訊，請參閱[檢視狀態檢查](viewing_status.md)。
  + [取得必要的執行個體詳細資訊](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
  + [找出私有金鑰並設定許可](connection-prereqs-general.md#connection-prereqs-private-key).
  + [(選用) 取得執行個體指紋](connection-prereqs-general.md#connection-prereqs-fingerprint).
+ **允許來自 IP 位址的傳入 SSH 流量。**

  請確保與執行個體關聯的安全群組允許來自您的 IP 地址的傳入 SSH 流量。如需詳細資訊，請參閱[從您電腦連線到執行個體的規則](security-group-rules-reference.md#sg-rules-local-access)。
+ **安裝 SCP 用戶端。**

  大部分的 Linux、Unix 和 Apple 電腦預設都包含 SCP 用戶端。如果您的電腦沒有 SCP 用戶端，OpenSSH 專案會提供 SSH 工具完整套件的免費實作，包括 SCP 用戶端。如需詳細資訊，請參閱 [https://www.openssh.com](https://www.openssh.com)。

下列程序會逐步引導您使用 SCP 使用執行個體的公有 DNS 名稱傳輸檔案，或是使用 IPv6 地址 (如果執行個體具備的話) 傳輸檔案。

**使用 SCP 在電腦和執行個體之間傳輸檔案**

1. 決定來源檔案在電腦上的位置，以及執行個體上的目的地路徑。在下列範例中，私有金鑰檔案的名稱為 `key-pair-name.pem`，要傳輸的檔案為 `my-file.txt`，執行個體的使用者名稱為 ec2-user，執行個體的公用 DNS 名稱為 `instance-public-dns-name`，而執行個體的 IPv6 地址為 `2001:db8::1234:5678:1.2.3.4`。
   + (公用 DNS) 若要將檔案傳輸到執行個體上的目的地，請從您的電腦輸入下列命令。

     ```
     scp -i /path/key-pair-name.pem /path/my-file.txt ec2-user@instance-public-dns-name:path/
     ```
   + (IPv6) 若要將檔案傳輸到執行個體上的目的地 (如果執行個體具有 IPv6 地址)，請從您的電腦輸入下列命令。IPv6 位址必須用方括號 (`[ ]`) 括住，必須逸出 (`\`)。

     ```
     scp -i /path/key-pair-name.pem /path/my-file.txt ec2-user@\[2001:db8::1234:5678:1.2.3.4\]:path/
     ```

1. 如果您尚未使用 SSH 連接到執行個體，則會看到如下所示的回應：

   ```
   The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (10.254.142.33)'
   can't be established.
   RSA key fingerprint is 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f.
   Are you sure you want to continue connecting (yes/no)?
   ```

   (選用) 您可以選用驗證安全性警示中的指紋是否符合執行個體指紋。如需詳細資訊，請參閱[(選用) 取得執行個體指紋](connection-prereqs-general.md#connection-prereqs-fingerprint)。

   輸入 **yes**。

1. 如果傳輸成功，則回應會和下列內容相似：

   ```
   Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (RSA) 
   to the list of known hosts.
   my-file.txt                                100%   480     24.4KB/s   00:00
   ```

1. 若要反向 (從 Amazon EC2 執行個體到您的電腦) 傳輸檔案，請反轉主機參數的順序。例如：您可以從 EC2 執行個體傳輸 `my-file.txt` 到本機電腦上的目的地 `my-file2.txt`，如下列範例所示。
   + (公用 DNS) 若要將檔案傳輸到電腦上的目的地，請從您的電腦輸入下列命令。

     ```
     scp -i /path/key-pair-name.pem ec2-user@instance-public-dns-name:path/my-file.txt path/my-file2.txt
     ```
   + (IPv6) 如果執行個體具有 IPv6 地址，欲將檔案傳輸到電腦上的目的地，請從您的電腦輸入下列命令。IPv6 位址必須用方括號 (`[ ]`) 括住，必須逸出 (`\`)。

     ```
     scp -i /path/key-pair-name.pem ec2-user@\[2001:db8::1234:5678:1.2.3.4\]:path/my-file.txt path/my-file2.txt
     ```

# 在您的 Amazon EC2 Linux 執行個體上管理系統使用者
<a name="managing-users"></a>

每個 Linux 執行個體都會使用預設 Linux 系統使用者來啟動。您可以將使用者新增至執行個體，並刪除使用者。

針對預設使用者，[預設使用者名稱](#ami-default-user-names)會取決於您啟動執行個體時所指定的 AMI。

**注意**  
預設情況下，密碼驗證和根登入會停用，而 sudo 會啟用。若要登入執行個體，您必須建立金鑰對。如需有關登入的詳細資訊，請參閱[使用 SSH 連線至您的 Linux 執行個體](connect-to-linux-instance.md)。  
您可以允許執行個體的密碼驗證和根登入。如需詳細資訊，請參閱適用於您作業系統的文件。

**注意**  
Linux 系統使用者不應和 IAM 使用者混淆。如需詳細資訊，請參閱「*IAM 使用者指南*」中的 [IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_iam-users)。

**Topics**
+ [預設使用者名稱](#ami-default-user-names)
+ [考量事項](#add-user-best-practice)
+ [建立使用者](#create-user-account)
+ [移除使用者](#delete-user-account)

## 預設使用者名稱
<a name="ami-default-user-names"></a>

EC2 執行個體的預設使用者名稱取決於您啟動執行個體時指定的 AMI。

預設使用者名稱為：
+ 針對 Amazon Linux AMI，使用者名稱為 `ec2-user`。
+ 針對 CentOS AMI，使用者名稱為 `centos` 或 `ec2-user`。
+ 針對 Debian AMI，使用者名稱為 `admin`。
+ 針對 Fedora AMI，使用者名稱為 `fedora` 或 `ec2-user`。
+ 針對 FreeBSD AMI，使用者名稱為 `ec2-user`。
+ 針對 RHEL AMI，使用者名稱為 `ec2-user` 或 `root`。
+ 針對 SUSE AMI，使用者名稱為 `ec2-user` 或 `root`。
+ 若為 Ubuntu AMI，使用者名稱為 `ubuntu`。
+ 針對 Oracle AMI，使用者名稱為 `ec2-user`。
+ 針對 Bitnami AMI，使用者名稱為 `bitnami`。

**注意**  
若要尋找其他 Linux 發行版本的預設使用者名稱，請向 AMI 供應商確認。

## 考量事項
<a name="add-user-best-practice"></a>

許多應用程式都適合使用預設使用者。不過，您可以選擇新增使用者，讓個人能有自己的檔案和工作空間。此外，為新使用者建立使用者也會比授予多名 (可能缺乏經驗) 預設使用者的存取權更安全，因為若預設使用者使用不當，可能會對系統造成重大傷害。如需詳細資訊，請參閱[保護 EC2 執行個體的要訣](https://aws.amazon.com/articles/tips-for-securing-your-ec2-instance/)。

若要讓使用者能夠使用 Linux 系統使用者，透過 SSH 存取您的 EC2 執行個體，您必須與使用者共用 SSH 金鑰。或者，您可以使用 EC2 Instance Connect 為使用者提供存取權限，如此就不需要共用和管理 SSH 金鑰。如需詳細資訊，請參閱[使用公有 IP 位址與 EC2 Instance Connect 連線至 Linux 執行個體](connect-linux-inst-eic.md)。

## 建立使用者
<a name="create-user-account"></a>

首先建立使用者，然後新增允許使用者連線至並登入執行個體的 SSH 公有金鑰。

**重要**  
在此程序的步驟 1 中，您會建立新的金鑰配對。由於金鑰配對的功能與密碼類似，因此安全地處理至關重要。如果您為使用者建立金鑰配對，則必須確保將私有金鑰安全地傳送給使用者。或者，使用者可以透過建立專屬金鑰配對，將私人金鑰安全地保存在其機器上，以完成步驟 1 和步驟 2，然後將公有金鑰傳送給您，以完成步驟 3 的流程。

**建立使用者**

1. [建立新的金鑰對](create-key-pairs.md#having-ec2-create-your-key-pair)。您必須將 `.pem` 檔案提供給您要為其建立使用者的使用者。他們必須使用此檔案來連接到執行個體。

1. 從您在上一個步驟中建立的金鑰對中，擷取公開金鑰。

   ```
   $ ssh-keygen -y -f /path_to_key_pair/key-pair-name.pem
   ```

   此命令會傳回公有金鑰，如下列範例所示。

   ```
   ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6Vhz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXrlsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZqaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3RbBQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
   ```

1. 連線到執行個體。

1. 使用 **adduser** 命令建立使用者並將其新增到系統 (在 `/etc/passwd` 檔案中具有項目)。此命令也會為使用者建立群組和主目錄。在此範例中，使用者命名為 `newuser`。
   + AL2023 和 Amazon Linux 2

     如果使用 AL2023 和 Amazon Linux 2，則在預設情況下，建立的使用者已停用密碼驗證。

     ```
     [ec2-user ~]$ sudo adduser newuser
     ```
   + Ubuntu

     包含 `--disabled-password` 參數，以建立已停用密碼驗證的使用者。

     ```
     [ubuntu ~]$ sudo adduser newuser --disabled-password
     ```

1. 切換到新的使用者，以便您建立的目錄和檔案可擁有適當的所有權。

   ```
   [ec2-user ~]$ sudo su - newuser
   ```

   此提示會從 `ec2-user` 變更為 `newuser`，表示您已將 shell 工作階段切換至新使用者。

1. 將 SSH 公有金鑰新增到使用者。首先在使用者的主目錄中建立 SSH 金鑰檔案的目錄、然後建立金鑰檔案，最後將公有金鑰貼到金鑰檔案中，如下列子步驟中所示。

   1. 在 `.ssh` 主目錄中建立 `newuser` 目錄，然後將其檔案許可變更為 `700` (只有擁有者能讀取、寫入和開啟目錄)。

      ```
      [newuser ~]$ mkdir .ssh
      ```

      ```
      [newuser ~]$ chmod 700 .ssh
      ```
**重要**  
若沒有這些明確的檔案許可，使用者將無法登入。

   1. 在 `.ssh` 目錄中建立名為 `authorized_keys` 的檔案，然後將其檔案許可變更為 `600` (只有擁有者能讀取和寫入檔案)。

      ```
      [newuser ~]$ touch .ssh/authorized_keys
      ```

      ```
      [newuser ~]$ chmod 600 .ssh/authorized_keys
      ```
**重要**  
若沒有這些明確的檔案許可，使用者將無法登入。

   1. <a name="edit_auth_keys"></a>使用您喜愛的文字編輯器 (例如 **vim** 或 **nano**) 來開啟 `authorized_keys` 檔案。

      ```
      [newuser ~]$ nano .ssh/authorized_keys
      ```

      將您在**步驟 2** 中擷取到的公開金鑰貼到檔案中，並儲存這些變更。
**重要**  
請確定將此公開金鑰貼成連續一行。此公開金鑰絕對不可分成多行。

      使用者現在應該能使用對應到您為 `authorized_keys` 檔案新增之公有金鑰的私有金鑰，在您的執行個體上登入 `newuser` 使用者。如需連接至 Linux 執行個體之不同方法的詳細資訊，請參閱[使用 SSH 連線至您的 Linux 執行個體](connect-to-linux-instance.md)。

## 移除使用者
<a name="delete-user-account"></a>

若不再需要使用者，您可以移除該使用者，使該使用者無法再被使用。

使用 **userdel** 命令來移除系統的使用者。當指定 `-r` 參數時，也會同時刪除使用者的主目錄和郵件多工緩衝處理。若要保留使用者的主目錄和郵件多工緩衝處理，請忽略 `-r` 參數。

```
[ec2-user ~]$ sudo userdel -r olduser
```

# 使用 RDP 連線至您的 Windows 執行個體
<a name="connecting_to_windows_instance"></a>

您可以使用遠端桌面，連接至從多數 Windows Amazon Machine Image (AMI) 建立的 Amazon EC2 執行個體。遠端桌面使用遠端桌面協定 (RDP)，可讓您以一般使用電腦的方式連接和使用執行個體，就像您使用坐在您面前的電腦 (本機電腦) 一樣。其適用於多數的 Windows 版本，也適用於 Mac OS。

Windows Server 作業系統的授權允許為了管理用途而同時有兩個遠端連線。Windows Server 的授權包含在您的 Windows 執行個體價格中。如果您同時需要超過兩個的遠端連線，就必須購買 Remote Desktop Services (RDS) 授權。如果您嘗試第三個連線，就會出現錯誤。

**提示**  
如果您需要連線到執行個體，以便對 [AWS Nitro 系統](https://aws.amazon.com/ec2/nitro/)上建置的執行個體，進行開機、網路設定和其他問題的疑難排解，您可以使用 [EC2 Serial Console for 執行個體](ec2-serial-console.md)。

**Topics**
+ [使用 RDP 用戶端連線至您的 Windows 執行個體。](connect-rdp.md)
+ [使用 Fleet Manager 連線到 Windows 執行個體](connect-rdp-fleet-manager.md)
+ [使用 RDP 將檔案傳輸至 Windows 執行個體](connect-to-linux-instanceWindowsFileTransfer.md)

# 使用 RDP 用戶端連線至您的 Windows 執行個體。
<a name="connect-rdp"></a>

您可以使用 RDP 用戶端連線至您的 Windows 執行個體，如下所示。

**提示**  
或者，您可以使用 [Systems Manager Fleet Manager](connect-rdp-fleet-manager.md) 或 [EC2 Instance Connect Endpoint](connect-with-ec2-instance-connect-endpoint.md) 連線到 Windows 執行個體。

## 先決條件
<a name="rdp-prereqs"></a>

您必須符合下列先決條件，才能使用 RDP 用戶端連線至 Windows 執行個體。
+ **完成一般先決條件。**
  + 請確認您的執行個體已通過狀態檢查。執行個體可能需要幾分鐘的時間準備就緒，以接受連線要求。如需詳細資訊，請參閱[檢視狀態檢查](viewing_status.md)。
  + [取得必要的執行個體詳細資訊](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
  + [找出私有金鑰並設定許可](connection-prereqs-general.md#connection-prereqs-private-key).
  + [(選用) 取得執行個體指紋](connection-prereqs-general.md#connection-prereqs-fingerprint).
+ **安裝 RDP 用戶端。**
  + (Windows) Windows 預設包含 RDP 用戶端。若要確認，請在命令提示視窗下輸入 **mstsc**。若您的電腦無法辨識此命令，請從 Microsoft Store 下載 [Microsoft Remote Desktop 應用程式](https://apps.microsoft.com/detail/9wzdncrfj3ps)。
  + (macOS X) 從 Mac App Store 下載 [Windows App for Mac (原名 Microsoft Remote Desktop)](https://apps.apple.com/us/app/windows-app/id1295203466?mt=12)。
  + (Linux) 使用 [Remmina](https://remmina.org/)。
+ **允許來自您 IP 位址的傳入 RDP 流量。**

  請確認與執行個體關聯的安全群組允許來自您 IP 位址的傳入 RDP 流量。如需詳細資訊，請參閱[從您電腦連線到執行個體的規則](security-group-rules-reference.md#sg-rules-local-access)。

## 擷取管理員密碼
<a name="retrieve-initial-admin-password"></a>

如果您已將執行個體加入網域，您可以使用來自 的網域登入資料連線至執行個體 Directory Service。在遠端桌面登入畫面上，不要使用本機電腦名稱和產生的密碼，而是使用系統管理員的合格使用者名稱 (例如 **corp.example.com\$1Admin**) 和此帳戶的密碼。

若要使用 RDP 連線到 Windows 執行個體，您必須擷取初始管理員密碼，然後在連線到執行個體時輸入此密碼。在執行個體啟動後，需要幾分鐘的時間處理才能提供密碼。您的帳戶必須擁有呼叫 [GetPasswordData](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetPasswordData.html) 動作的權限。如需詳細資訊，請參閱[控制 Amazon EC2 API 存取的政策範例](ExamplePolicies_EC2.md)。

管理員帳戶的預設使用者名稱取決於 AMI 包含的作業系統 (OS) 的語言。若要確定正確的使用者名稱，請識別作業系統的語言，然後選擇對應的使用者名稱。例如，對於英文作業系統，使用者名稱為 `Administrator`，對於法文作業系統，使用者名稱為 `Administrateur`，對於葡萄牙文作業系統，使用者名稱為 `Administrador`。如果作業系統的語言版本沒有相同語言的使用者名稱，請選擇使用者名稱 `Administrator (Other)`。如需詳細資訊，請參閱 Microsoft 網站中的[管理員帳戶在 Windows 中的當地語系化名稱](https://learn.microsoft.com/en-us/archive/technet-wiki/13813.localized-names-for-administrator-account-in-windows)。

**擷取初始管理員密碼**

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

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

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

1. 在**連線至執行個體**頁面，選擇 **RDP 用戶端**索引標籤。

1. 對於**使用者名稱**，選擇管理員帳戶的預設使用者名稱。您選擇的使用者名稱必須與您用於啟動執行個體的 AMI 所包含的作業系統 (OS) 的語言相符。若無與作業系統相同語言的使用者名稱，請選擇**管理員 (其他)**。

1. 選擇**取得密碼**。

1. 在**取得 Windows 密碼**頁面，執行下列動作：

   1. 選擇**上傳私有金鑰檔案**，然後導覽至您在啟動執行個體時指定的私有金鑰 (`.pem`) 檔案。選取檔案並選取 **Open** (開啟)，將檔案的完整內容複製至此視窗。

   1. 選擇**解密密碼**。**取得 Windows 密碼**頁面隨即關閉，執行個體的預設管理員密碼會顯示在**密碼**下，取代先前顯示的**取得密碼**連結。

   1. 複製密碼並將其保存在安全處。必須使用此密碼來連接至執行個體。

## 連線至 Windows 執行個體
<a name="connecting-to-windows-instance-rdp-client"></a>

以下程序使用適用於 Windows 的遠端桌面連線用戶端 (MSTSC)。如果您使用其他 RDP 用戶端，請下載 RDP 檔案，然後查看 RDP 用戶端的文件，了解建立 RDP 連線的步驟。

**使用 RDP 用戶端連線至 Windows 執行個體。**

1. 在**連線至執行個體**頁面，選擇**下載遠端桌面檔案**。檔案下載完成後，請選擇**取消**以返回**執行個體**頁面。RDP 檔案已下載至您的 `Downloads` 資料夾。

1. 執行 `mstsc.exe` 以開啟 RDP 用戶端。

1. 展開**顯示選項**，選擇**開啟**，然後從 `Downloads` 資料夾中選取 .rdp 檔案。

1. 依預設，**電腦**是執行個體的公有 IPv4 DNS 名稱，**使用者名稱**是管理員帳戶。若要改用 IPv6 連線至執行個體，請將執行個體的公有 IPv4 DNS 名稱替換為其 IPv6 地址。檢視預設設定並視需要進行變更。

1. 選擇**連線**。如果您收到遠端連線發布者不明的警告，請選擇**連線**以繼續。

1. 輸入先前儲存的密碼，然後選擇**確定**。

1. 由於自我簽署憑證的性質，您可能會收到安全憑證無法驗證的警告。執行以下任意一項：
   + 如果您信任憑證，請選擇**是**，以連線至您的執行個體。
   + [Windows] 在繼續之前，請將憑證指紋與系統日誌的值進行比較，以確認遠端電腦身分。選擇**檢視憑證**，然後從**詳細資料**索引標籤選擇**指紋**。將此值與**動作**、**監控和疑難排解**、**取得系統日誌**中的 `RDPCERTIFICATE-THUMBPRINT` 值進行比較。
   + [Mac OS X] 在繼續之前，請將憑證指紋與系統日誌的值進行比較，以確認遠端電腦身分。選擇**顯示憑證**、展開**詳細資訊**，然後選擇 **SHA1 指紋**。將此值與**動作**、**監控和疑難排解**、**取得系統日誌**中的 `RDPCERTIFICATE-THUMBPRINT` 值進行比較。

1. 如果 RDP 連線成功，RDP 用戶端會顯示 Windows 登入畫面，然後顯示 Windows 桌面。如果您收到錯誤訊息，請參閱 [遠端桌面無法連線到遠端電腦](troubleshoot-connect-windows-instance.md#rdp-issues)。完成 RDP 連線後，即可關閉 RDP 用戶端。

## 設定使用者帳戶
<a name="configure-admin-accounts"></a>

透過 RDP 連線至執行個體之後，建議您執行下列任務：
+ 變更預設的管理員密碼。您[可以在登入執行個體後變更密碼](https://support.microsoft.com/en-us/windows/change-or-reset-your-windows-password-8271d17c-9f9e-443f-835a-8318c8f68b9c)，就像使用任何其他執行 Windows 伺服器的電腦一樣。
+ 在執行個體上建立其他擁有管理員權限的使用者。如果您忘記管理員密碼或管理員帳戶發生問題，這可作為保護措施。新使用者必須具備可遠端存取執行個體的許可。在 Windows 桌面或檔案總管上，以滑鼠右鍵按一下**This PC (本機)**，選取**內容**，以開啟**系統內容**。選取**遠端設定**，然後選取**選取使用者**，將使用者新增至**遠端桌面使用者**群組。  
![\[「系統屬性」視窗。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/windows-connect-properties-rdp.png)

# 使用 Fleet Manager 連線到 Windows 執行個體
<a name="connect-rdp-fleet-manager"></a>

您可以使用 Fleet Manager 功能 AWS Systems Manager，使用遠端桌面通訊協定 (RDP) 連線至 Windows 執行個體，並在 的相同頁面上顯示最多四個 Windows 執行個體 AWS 管理主控台。您可以從 Amazon EC2 主控台的**執行個體**頁面中直接連線至 Fleet Manager 遠端桌面的第一個執行個體。如需有關 Fleet Manager 的詳細資訊，請參閱《*AWS Systems Manager 使用者指南*》中的[使用遠端桌面連線到受管執行個體](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-remote-desktop-connections.html)。

如果您使用 Fleet Manager 進行連線，則不需要特別允許來自您 IP 地址的傳入 RDP 流量。Fleet Manager 會為您處理。

**先決條件**  
在嘗試使用 Fleet Manager 連線至執行個體之前，您必須設定環境。如需詳細資訊，請參閱「AWS Systems Manager 使用者指南」**中的[設定您的環境](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-remote-desktop-connections.html#rdp-prerequisites)。

**使用 Fleet Manager 連線到 Windows 執行個體**

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

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

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

1. 在 **RDP 用戶端**索引標籤的**連線類型**，選擇**使用 Fleet Manager 連線**。

1. 選擇 **Fleet Manager 遠端桌面**。這將開啟 AWS Systems Manager 主控台中的 **Fleet Manager Remote Desktop** (Fleet Manager 遠端桌面) 頁面。

1. 輸入您的憑證，然後選擇**連線**。

1. 如果 RDP 連線成功，Fleet Manager 將顯示 Windows 桌面。當您完成工作階段時，請選擇**動作**、**結束工作階段**。

如需詳細資訊，請參閱「AWS Systems Manager 使用者指南」**中的[使用遠端桌面連線至 Windows Server 受管執行個體](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-remote-desktop-connections.html)。

# 使用 RDP 將檔案傳輸至 Windows 執行個體
<a name="connect-to-linux-instanceWindowsFileTransfer"></a>

您可用與任何 Windows 伺服器相同的使用方式來使用 Windows 執行個體。例如，您可使用 Microsoft Remote Desktop Connection (RDP) 的本機檔案共用功能在 Windows 執行個體和本機電腦之間傳輸檔案。本機檔案可以位在硬碟、DVD 光碟、可攜式媒體磁碟機和映射的網路磁碟機。

如要從 Windows 執行個體存取本機檔案，您必須透過將遠端工作階段磁碟機映射至您本機磁碟機來啟用本機檔案共享功能。這些步驟略有不同，取決於您的本機電腦作業系統是 Windows 還是 macOS X。

如需使用 RDP 連線先決條件的詳細資訊，請參閱 [先決條件](connect-rdp.md#rdp-prereqs)。

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

**如要將遠端工作階段磁碟機映射至您本機 Windows 電腦的本機磁碟機**

1. 開啟遠端桌面連線用戶端。

1. 選擇 **Show Options (顯示選項)**。

1. 將執行個體主機名稱新增至**電腦**欄位，並將使用者名稱新增至**使用者名稱**欄位，如下所示：

   1. 在 **Connection settings** (連線設定) 下，選擇 **Open...** (開啟...)，然後瀏覽您從 Amazon EC2 主控台下載的 RDP 捷徑檔案。該檔案包含標識執行個體的公有 IPv4 DNS 主機名稱和管理員使用者名稱。

   1. 選取檔案，然後選取 **Open** (開啟)。**Computer** (電腦) 和 **User name** (使用者名稱) 欄位使用 RDP 捷徑檔案的值進行填入。

   1. 選擇**儲存**。

1. 選擇 **Local Resources (本機資源)** 標籤。

1. 在 **Local Devices and resources (本機裝置和資源)** 下，選擇 **More... (更多...)**  
![\[「RDP 本機資源」視窗。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/windows-connect-rdp-local-resources.png)

1. 開啟 **Drives (磁碟機)** 並選取本機磁碟機，以映射到 Windows 執行個體。

1. 選擇 **OK** (確定)。  
![\[「RDP 本機裝置和資源」視窗。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/windows-connect-rdp-drives.png)

1. 選擇 **Connect (連接)** 以連接到您的 Windows 執行個體。

------
#### [ macOS X ]

**如要將遠端工作階段磁碟機映射至本機 macOS X 電腦上的本機資料夾**

1. 開啟遠端桌面連線用戶端。

1. 瀏覽至您從 Amazon EC2 主控台下載的 RDP 檔案 (在您最初連接到執行個體時)，然後將其拖曳至遠端桌面連線用戶端。

1. 以滑鼠右鍵按一下 RDP 檔案，選擇 **Edit** (編輯)。

1. 選取**資料夾**索引標籤，然後選取**重新引導資料夾**核取方塊。  
![\[Microsoft 遠端桌面編輯 PC 視窗。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/mac-map-folder-1.png)

1. 選擇左下方的 **\$1** 圖示，瀏覽至要映射的資料夾，然後選擇 **Open** (開啟)。為每個要映射的資料夾重複此步驟。

1. 選擇**儲存**。

1. 選擇 **Connect (連接)** 以連接到您的 Windows 執行個體。系統會提示您輸入密碼。

1. 在執行個體上的檔案總管中，展開 **This PC** (此 PC)，然後找出您可從中存取本機檔案的共用資料夾。於下列螢幕擷取畫面中，本機電腦上的 **Desktop** (桌面) 資料夾已映射至執行個體上的遠端工作階段磁碟機。  
![\[Microsoft 遠端桌面編輯 PC 視窗。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/mac-map-folder-2.png)

如需在 Mac 電腦上使本機裝置可用於遠端工作階段的詳細資訊，請參閱 [Mac 用戶端入門](https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-mac)。

------

# 使用 Session Manager 連線至 Amazon EC2 執行個體
<a name="connect-with-systems-manager-session-manager"></a>

Session Manager 是一種全受管 AWS Systems Manager 功能，可透過互動式、一鍵式、瀏覽器型 shell 或透過 來管理 Amazon EC2 執行個體 AWS CLI。您可以使用工作階段管理員，搭配您帳戶中的執行個體啟動工作階段。工作階段啟動之後，您可以像對任何其他連線類型一樣在執行個體執行互動式命令。如需工作階段管理員的詳細資訊，請參閱「AWS Systems Manager 使用者指南」**中的 [AWS Systems Manager 工作階段管理員](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)。

**先決條件**  
在嘗試使用 Session Manager 連線至執行個體之前，您必須完成必要的設定步驟。例如，執行個體必須由 SSM 管理，並且必須附加具有 **AmazonSSMManagedInstanceCore** 政策的 IAM 角色。如需詳細資訊，請參閱[設定工作階段管理員](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html)。

**在 Amazon EC2 主控台透過 Session Manager 連接到 Amazon EC2 執行個體**

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

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

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

1. 對於連線方法，選擇**工作階段管理員**。

1. 選取**連線**即可啟動工作階段。  
![\[Session Manager 索引標籤的連線按鈕。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/connect-method-session-manager.png)

**疑難排解**  
如果您收到未獲授權執行一或多個 Systems Manager 動作 (`ssm:command-name`) 的錯誤，則必須更新政策以允許您從 Amazon EC2 主控台啟動工作階段。如需詳細資訊和指示，請參閱「AWS Systems Manager 使用者指南」**中的[工作階段管理員的預設 IAM 政策快速入門](https://docs.aws.amazon.com/systems-manager/latest/userguide/getting-started-restrict-access-quickstart.html)。

# 使用公有 IP 位址與 EC2 Instance Connect 連線至 Linux 執行個體
<a name="connect-linux-inst-eic"></a>

Amazon EC2 Instance Connect 提供了一種透過 Secure Shell (SSH) 連線至 Linux 執行個體的安全方式。使用 EC2 Instance Connect，您可以使用 AWS Identity and Access Management (IAM) [政策和](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)[主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal)來控制執行個體的 SSH 存取，無需共用和管理 SSH 金鑰。所有使用 EC2 Instance Connect 的連線請求會[記錄在 AWS CloudTrail](monitor-with-cloudtrail.md#ec2-instance-connect-cloudtrail)，這樣您就可以稽核連接請求。

可以使用 Amazon EC2 主控台或您選擇的 SSH 用戶端，透過 EC2 Instance Connect 連線到執行個體。

當您使用 EC2 Instance Connect 連接至執行個體時，EC2 Instance Connect API 會將 SSH 公有金鑰推送至[執行個體中繼資料](ec2-instance-metadata.md)，此金鑰可保留 60 秒。連接至使用者的 IAM 政策會授權使用者將公有金鑰推送至執行個體中繼資料。SSH 常駐程式使用安裝 EC2 Instance Connect 時設定的 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser`，從執行個體中繼資料查詢身分驗證所用的公有金鑰並將您連接至執行個體。

**提示**  
EC2 Instance Connect 是連線到 Linux 執行個體的其中一個選項。如需有關其他選項的詳細資訊，請參閱 [使用 SSH 連線至您的 Linux 執行個體](connect-to-linux-instance.md)。連線至 Windows 執行個體，請參閱 [使用 RDP 連線至您的 Windows 執行個體](connecting_to_windows_instance.md)。

**定價**  
EC2 Instance Connect 可免費使用。

**區域可用性**  
EC2 Instance Connect 適用於所有 AWS 區域，但亞太區域 （台北） 除外。本地區域不支援。

**Topics**
+ [教學課程](ec2-instance-connect-tutorial.md)
+ [先決條件](ec2-instance-connect-prerequisites.md)
+ [許可](ec2-instance-connect-configure-IAM-role.md)
+ [安裝 EC2 Instance Connect](ec2-instance-connect-set-up.md)
+ [連接至執行個體](ec2-instance-connect-methods.md)
+ [解除安裝 EC2 Instance Connect](ec2-instance-connect-uninstall.md)

如需討論如何使用 EC2 Instance Connect 來改善堡壘主機安全性的部落格文章，請參閱[使用 Amazon EC2 Instance Connect 保護您的堡壘主機](https://aws.amazon.com/blogs/infrastructure-and-automation/securing-your-bastion-hosts-with-amazon-ec2-instance-connect/)。

# 教學課程：使用 EC2 Instance Connect 完成連線執行個體所需的設定
<a name="ec2-instance-connect-tutorial"></a>

若要在 Amazon EC2 主控台使用 EC2 Instance Connect 連線到執行個體，您必須先完成先決條件設定，才能成功連線至執行個體。本教學課程的目的是指導您完成任務以完成先決條件設定。

**教學課程概觀**

在本教學課程中，您將完成下列四項任務：
+ [任務 1：授予使用 EC2 Instance Connect 所需的許可](#eic-tut1-task1)

  首先，您將建立包含 IAM 許可的 IAM 政策，允許您將公有金鑰推送至執行個體中繼資料。您可以將此政策連接至您的 IAM 身分 (使用者、使用者群組或角色)，以便您的 IAM 身分取得這些許可。
+ [任務 2：允許從 EC2 Instance Connect 服務到執行個體的傳入流量](#eic-tut1-task2)

  然後，您將建立安全群組，允許從 EC2 Instance Connect 服務到執行個體的流量。當您在 Amazon EC2 主控台使用 EC2 Instance Connect 連線到執行個體時，必須執行此動作。
+ [任務 3：啟動您的執行個體](#eic-tut1-task3)

  然後，您將使用預先安裝 EC2 Instance Connect 的 AMI 啟動 EC2 執行個體，並新增上一個步驟所建立的安全群組。
+ [任務 4：連線到您的執行個體](#eic-tut1-task4)

  最後，您將在 Amazon EC2 主控台使用 EC2 Instance Connect 來連線至執行個體。如果您可以連線，則可以確定您在任務 1、2 和 3 完成的先決條件組態已成功。

## 任務 1：授予使用 EC2 Instance Connect 所需的許可
<a name="eic-tut1-task1"></a>

當您使用 EC2 Instance Connect 連接至執行個體時，EC2 Instance Connect API 會將 SSH 公有金鑰推送至[執行個體中繼資料](ec2-instance-metadata.md)，此金鑰可保留 60 秒。您需要將 IAM 政策連接至 IAM 身分 (使用者、使用者群組或角色)，才能授予您將公有金鑰推送至執行個體中繼資料所需的許可。

**任務目標**

您將建立 IAM 政策，授予將公有金鑰推送至執行個體的許可。要允許的特定動作是 `ec2-instance-connect:SendSSHPublicKey`。您還必須允許 `ec2:DescribeInstances` 動作，以便在 Amazon EC2 主控台檢視及選取執行個體。

建立政策後，您將政策連接至您的 IAM 身分 (使用者、使用者群組或角色)，以便您的 IAM 身分取得許可。

您要建立的政策設定如下：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        }
    ]
}
```

------

**重要**  
本教學課程建立的 IAM 政策是高度寬鬆政策，可讓您使用任何 AMI 使用者名稱連線到任何執行個體。我們使用此高度寬鬆政策，讓教學課程保持簡單，並專注於本教學課程所教導的特定組態。不過，在生產環境，建議將 IAM 政策設定為提供[最低權限許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。如需 IAM 政策的範例，請參閱[為 EC2 Instance Connect 授予 IAM 許可](ec2-instance-connect-configure-IAM-role.md)。

**建立並連接可讓您使用 EC2 Instance Connect 連線至執行個體的 IAM 政策**

1. **首先建立 IAM 政策**

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

   1. 在導覽窗格中，選擇**政策**。

   1. 選擇 **Create policy** (建立政策)。

   1. 在**新增許可**頁面，執行以下作業：

      1. 針對**服務類別**，請選擇 **EC2 Instance Connect**。

      1. 在**允許的動作**下方，在搜尋欄位輸入 **send** 以顯示相關動作，然後選取 **SendSSHPublicKey**。

      1. 在**資源**，選擇**全部**。對於生產環境，我們建議您依其 ARN 指定執行個體，但在本教學課程，您允許所有執行個體。

      1. 選擇**新增其他許可**。

      1. 針對**服務**，選擇 **EC2**。

      1. 在**允許的動作**下，在搜尋欄位中開始輸入 **describein** 以顯示相關動作，然後選取 **DescribeInstances**。

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

   1. 在**檢閱和建立**頁面，執行以下作業：

      1. 針對 **Policy Name (政策名稱)**，請輸入政策的名稱。

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

1. **然後將政策連接至您的身分**

   1. 在 IAM 主控台的導覽窗格中，選擇 **Policies (政策)**。

   1. 在政策清單中，選取您建立的政策名稱旁的選項按鈕。您可以使用搜尋方塊來篩選政策清單。

   1. 選擇 **Actions** (動作)、**Attach** (連接)。

   1. 在 **IAM 實體**，選取身分 (使用者、使用者群組或角色) 旁的核取方塊。您可以使用搜尋方塊來篩選實體清單。

   1. 選擇**連接政策**。

### 檢視動畫：建立 IAM 政策
<a name="eic-tut1-task1-animation1"></a>

![\[此動畫展示如何建立 IAM 政策。如需此動畫的文字版本，請參閱前面程序中的步驟。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/eic-tut1-task1-create-iam-policy.gif)


### 檢視動畫：連接 IAM 政策
<a name="eic-tut1-task1-animation2"></a>

![\[此動畫說明如何將 IAM 政策連接至 IAM 身分。如需此動畫的文字版本，請參閱前面程序中的步驟。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/eic-tut1-task1-attach-iam-policy.gif)


## 任務 2：允許從 EC2 Instance Connect 服務到執行個體的傳入流量
<a name="eic-tut1-task2"></a>

當您在 Amazon EC2 主控台使用 EC2 Instance Connect 連線到執行個體時，必須允許到達執行個體的流量來自 EC2 Instance Connect 服務。這與從本機電腦連線到執行個體不同；在這種情況下，您必須允許從本機電腦到執行個體的流量。若要允許來自 EC2 Instance Connect 服務的流量，您必須建立安全群組，允許來自 EC2 Instance Connect 服務的 IP 位址範圍內的傳入 SSH 流量。

AWS 使用字首清單來管理 IP 地址範圍。EC2 Instance Connect 字首清單的名稱如下所示，並以區域代碼取代*區域*：
+ IPv4 字首清單名稱：`com.amazonaws.region.ec2-instance-connect`
+ IPv6 字首清單名稱：`com.amazonaws.region.ipv6.ec2-instance-connect`

**任務目標**

您將建立安全群組，允許來自執行個體所在區域 IPv4 字首清單的連接埠 22 上的傳入 SSH 流量。

**建立安全群組，允許從 EC2 Instance Connect 服務到執行個體的傳入流量**

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

1. 在導覽窗格中，選擇 **Security Groups** (安全群組)。

1. 選擇 **Create Security Group** (建立安全群組)。

1. 在 **Basic details (基本詳細資料)** 下，執行下列動作：

   1. 在**安全群組名稱**，輸入有意義的安全群組名稱。

   1. 為**描述**輸入有意義的安全群組說明。

1. 在**輸入規則**，執行下列動作：

   1. 選擇**新增規則**。

   1. 針對 **Type** (類型)，選擇 **SSH**。

   1. 對於**來源**，請離開**自訂**。

   1. 在**來源**旁的欄位，選取 EC2 Instance Connect 的字首清單。

      例如，如果您的執行個體位於美國東部 (維吉尼亞北部) (`us-east-1`) 區域，且您的使用者將連線到其公有 IPv4 地址，請選擇下列字首清單：**com.amazonaws.us-east-1.ec2-instance-connect**

1. 選擇**建立安全群組**。

### 檢視動畫：建立安全群組
<a name="eic-tut1-task2-animation"></a>

![\[此動畫說明如何設定安全群組。如需此動畫的文字版本，請參閱前面程序中的步驟。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/tut1-task2-eic-security-group.gif)


## 任務 3：啟動您的執行個體
<a name="eic-tut1-task3"></a>

當啟動執行個體時，您必須指定包含啟動執行個體所需資訊的 AMI。您可以選擇啟動預先安裝或未預先安裝 EC2 Instance Connect 的執行個體。在此任務，我們會指定預先安裝 EC2 Instance Connect 的 AMI。

如果您在未預先安裝 EC2 Instance Connect 的情況啟動執行個體，並且想要使用 EC2 Instance Connect 連線到執行個體，則需要執行其他組態步驟。這些步驟已超出本教學課程範圍。

**任務目標**

您將使用 Amazon Linux 2023 AMI 啟動執行個體，該 AMI 已預先安裝 EC2 Instance Connect。您也將指定您先前建立的安全群組，以便可以在 Amazon EC2 主控台使用 EC2 Instance Connect 連線到執行個體。由於您將使用 EC2 Instance Connect 連線至執行個體，將公有金鑰推送至執行個體的中繼資料，因此啟動執行個體時不需要指定 SSH 金鑰。

**啟動可在 Amazon EC2 主控台使用 EC2 Instance Connect 進行連線的執行個體**

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

1. 在畫面頂端的導覽列中，會顯示目前的 AWS 區域 （例如**愛爾蘭**)。選取要在其中啟動執行個體的區域。此選項非常重要，因為您建立了允許特定區域流量的安全群組，因此您必須選取要啟動執行個體的相同區域。

1. 從 Amazon EC2 主控台儀表板選擇 **Launch Instance (啟動執行個體)**。

1. (選用) 在 **Name and tags** (名稱和標籤) 下，針對 **Name** (名稱)，輸入執行個體的描述性名稱。

1. 在**應用程式和作業系統映像 (Amazon Machine Image)** 下，選擇**快速啟動**。預設會選取 **Amazon Linux**。在 **Amazon Machine Image (AMI)**，預設選取 **Amazon Linux 2023 AMI**。保留此任務的預設選擇。

1. 在**執行個體類型**，針對**執行個體類型**，保留預設選擇，或選擇不同的執行個體類型。

1. 在**金鑰對 (登入)** 中，針對**金鑰對名稱**，選擇**不使用金鑰對繼續 (不建議)**。當使用 EC2 Instance Connect 連線到執行個體時，EC2 Instance Connect 會將金鑰對推送到執行個體的中繼資料，而這是用於連線的金鑰對。

1. 在**Network settings** (網路設定) 中，執行下列操作：

   1. 對於**自動指派公有 IP**，保留**啟用**。
**注意**  
若要在 Amazon EC2 主控台使用 EC2 Instance Connect 連線到執行個體，執行個體必須具有公有 IPv4 或 IPv6 位址。

   1. 針對**防火牆 (安全群組)**，選擇**選取現有的安全群組**。

   1. 在**一般安全群組**下方，選擇您先前建立的安全群組。

1. 在 **Summary** (摘要) 面板中，選擇 **Launch instance** (啟動執行個體)。

### 檢視動畫：啟動執行個體
<a name="eic-tut1-task3-animation"></a>

![\[此動畫示範如何啟動執行個體。如需此動畫的文字版本，請參閱前面程序中的步驟。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/tut1-task3-launch-an-instance.gif)


## 任務 4：連線到您的執行個體
<a name="eic-tut1-task4"></a>

當您使用 EC2 Instance Connect 連接至執行個體時，EC2 Instance Connect API 會將 SSH 公有金鑰推送至[執行個體中繼資料](ec2-instance-metadata.md)，此金鑰可保留 60 秒。SSH 常駐程式使用 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser` 從執行個體中繼資料查詢身分驗證所用的公有金鑰並將您連線至執行個體。

**任務目標**

在此任務，您將使用 Amazon EC2 主控台的 EC2 Instance Connect 連線到執行個體。如果您已完成先決任務 1、2 和 3，則連線應會成功。

**連結執行個體的步驟**

使用下列步驟連線至您的執行個體。若要檢視步驟動畫，請參閱 [檢視動畫：連線至您的執行個體](#eic-tut1-task4-animation)。

**在 Amazon EC2 主控台使用 EC2 Instance Connect 連線執行個體**

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

1. 在畫面頂端的導覽列中，會顯示目前的 AWS 區域 （例如**愛爾蘭**)。選取執行個體所在的區域。

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

1. 選取執行個體，然後選擇**連線**。

1. 選擇 **EC2 Instance Connect** 索引標籤。

1. 請選擇**使用公有 IP 建立連線**。

1. 選擇**連線**。

   瀏覽器將開啟終端機視窗，並且您會連線到您的執行個體。

### 檢視動畫：連線至您的執行個體
<a name="eic-tut1-task4-animation"></a>

![\[此動畫說明如何使用 EC2 Instance Connect 連線執行個體。如需此動畫的文字版本，請參閱前面程序中的步驟。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/eic-tut1-task4-connect.gif)


# EC2 Instance Connect 的先決條件
<a name="ec2-instance-connect-prerequisites"></a>

**Topics**
+ [安裝 EC2 Instance Connect](#eic-prereqs-install-eic-on-instance)
+ [確保網路連線](#eic-prereqs-network-access)
+ [允許傳入 SSH 流量](#ec2-instance-connect-setup-security-group)
+ [授予許可](#eic-prereqs-grant-permissions)
+ [在本機電腦安裝 SSH 用戶端](#eic-prereqs-install-ssh-client)
+ [符合使用者名稱需求](#eic-prereqs-username)

## 安裝 EC2 Instance Connect
<a name="eic-prereqs-install-eic-on-instance"></a>

若要使用 EC2 Instance Connect 連線至執行個體，請務必安裝 EC2 Instance Connect。您可以使用預先安裝 EC2 Instance Connect 的 AMI 啟動執行個體，也可以在使用支援的 AMI 啟動之執行個體上安裝 EC2 Instance Connect。如需詳細資訊，請參閱[在 EC2 執行個體上安裝 EC2 Instance Connect](ec2-instance-connect-set-up.md)。

## 確保網路連線
<a name="eic-prereqs-network-access"></a>

執行個體可設定為允許使用者透過網際網路或執行個體的私有 IP 地址連線至您的執行個體。視您的使用者透過 EC2 Instance Connect 連線到執行個體的方式而定，您必須設定以下網路存取：
+ 如果使用者將透過網際網路連線到執行個體，則該執行個體必須具有公有 IPv4 或 IPv6 位址，並且必須位於具有到網際網路路由的公有子網路。如果您尚未修改預設公有子網路，則它包含僅針對 IPv4 的網際網路路由，而不是針對 IPv6。如需詳細資訊，請參閱「Amazon VPC 使用者指南」**中的[使用網際網路閘道啟用 VPC 網際網路存取權](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#vpc-igw-internet-access)。
+ 如果您的使用者將透過執行個體的私有 IPv4 地址連線到您的執行個體，則您必須建立與 VPC 的私有網路連線，例如使用 AWS Direct Connect AWS Site-to-Site VPN或 VPC 對等互連，以便您的使用者可以連線到執行個體的私有 IP 地址。

如果您的執行個體沒有公有 IPv4 或 IPv6 位址，且您不想按上述說明設定網路存取權，則可將 EC2 Instance Connect 端點視為 EC2 Instance Connect 的替代方案。透過 EC2 Instance Connect 端點，您可以使用 SSH 或 RDP 連線到執行個體，即使執行個體沒有公有 IPv4 或 IPv6 位址。如需詳細資訊，請參閱[使用 Amazon EC2 主控台連線至 Linux 執行個體](connect-using-eice.md#connect-using-the-ec2-console)。

## 允許傳入 SSH 流量
<a name="ec2-instance-connect-setup-security-group"></a>

**當使用 Amazon EC2 主控台連線至執行個體時**  
當使用者使用 Amazon EC2 主控台連線至執行個體時，必須允許到達執行個體的流量來自 EC2 Instance Connect 服務。該服務由特定的 IP 地址範圍識別，該範圍透過字首清單進行 AWS 管理。您必須建立允許來自 EC2 Instance Connect 服務的傳入 SSH 流量的安全群組。若要設定此項目，請針對傳入規則，在**來源**旁的欄位選取 EC2 Instance Connect 字首清單。

AWS 為每個區域提供不同的 IPv4 和 IPv6 地址受管字首清單。EC2 Instance Connect 字首清單的名稱如下所示，並以區域代碼取代*區域*：
+ IPv4 字首清單名稱：`com.amazonaws.region.ec2-instance-connect`
+ IPv6 字首清單名稱：`com.amazonaws.region.ipv6.ec2-instance-connect`

有關建立安全群組的說明，請參閱 [任務 2：允許從 EC2 Instance Connect 服務到執行個體的傳入流量](ec2-instance-connect-tutorial.md#eic-tut1-task2)。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[可用 AWS受管字首清單](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html#available-aws-managed-prefix-lists)。

**當使用 CLI 或 SSH 連線到執行個體時**  
請確認與執行個體關聯的安全群組在連接埠 22 上[允許來自您 IP 地址或網路的傳入 SSH 流量](security-group-rules-reference.md#sg-rules-local-access)。VPC 的預設安全群組根據預設並不允許傳入 SSH 流量。啟動執行個體精靈建立的安全群組預設會允許傳入 SSH 流量。如需詳細資訊，請參閱[從您電腦連線到執行個體的規則](security-group-rules-reference.md#sg-rules-local-access)。

## 授予許可
<a name="eic-prereqs-grant-permissions"></a>

您必須將所需許可授予給每個將使用 EC2 Instance Connect 連線到執行個體的 IAM 使用者。如需詳細資訊，請參閱[為 EC2 Instance Connect 授予 IAM 許可](ec2-instance-connect-configure-IAM-role.md)。

## 在本機電腦安裝 SSH 用戶端
<a name="eic-prereqs-install-ssh-client"></a>

如果您的使用者將使用 SSH 進行連線，則必須確保其本機電腦具有 SSH 用戶端。

使用者的本機電腦很可能預設已安裝 SSH 用戶端。他們可以在命令列鍵入 **ssh** 來檢查 SSH 用戶端。若本機電腦無法識別該命令，可以安裝 SSH 用戶端。如需在 Linux 或 macOS X 上安裝 SSH 用戶端的相關資訊，請參閱 [http://www.openssh.com](http://www.openssh.com/)。如需在 Windows 10 上安裝 SSH 用戶端的相關資訊，請參閱 [Windows 中的 OpenSSH](https://learn.microsoft.com/en-us/windows-server/administration/OpenSSH/openssh-overview)。

如果使用者僅使用 Amazon EC2 主控台連線至執行個體，就無需在本機電腦安裝 SSH 用戶端。

## 符合使用者名稱需求
<a name="eic-prereqs-username"></a>

使用 EC2 Instance Connect 連線至執行個體時，使用者名稱必須符合下列先決條件：
+ 第一個字元：必須是字母 (`A-Z`、`a-z`)、數字 (`0-9`) 或底線 (`_`)
+ 後續字元：可以是字母 (`A-Z`、`a-z`)、數字 (`0-9`) 或 `@ . _ -` 這些字元
+ 長度下限：1 個字元
+ 長度上限：31 個字元

# 為 EC2 Instance Connect 授予 IAM 許可
<a name="ec2-instance-connect-configure-IAM-role"></a>

若要使用 EC2 Instance Connect 連線至執行個體，請務必建立 IAM 政策來授予使用者執行下列動作和條件的許可：
+ `ec2-instance-connect:SendSSHPublicKey` 動作 – 准許將公有金鑰推送至執行個體。
+ `ec2:osuser` 條件 – 指定可將公有金鑰推送至執行個體的 OS 使用者名稱。使用針對啟動執行個體的 AMI 的預設使用者名稱。AL2023 和 Amazon Linux 2 的預設使用者名稱為 `ec2-user`，而 Ubuntu 的名稱為 `ubuntu`。
+ `ec2:DescribeInstances` 動作 – 使用 EC2 主控台時必需，因為包裝函數會呼叫此動作。使用者可能已有從另一個政策呼叫此動作的許可。
+ `ec2:DescribeVpcs` 動作 – 連線至 IPv6 地址時為必要。

考慮限制對特定 EC2 執行個體的存取。否則，具有 `ec2-instance-connect:SendSSHPublicKey` 動作許可的所有 IAM 主體都可以連線到所有 EC2 執行個體。您可以指定資源 ARN 或將資源標籤做為[條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2instanceconnect.html#amazonec2instanceconnect-policy-keys)使用，來限制存取。

如需詳細資訊，請參閱[適用於 Amazon EC2 Instance Connect 的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2instanceconnect.html)。

如需有關建立和編輯 IAM 政策的資訊，請參閱「IAM 使用者指南」**中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

## 允許使用者連線至特定執行個體
<a name="eic-permissions-allow-users-to-connect-to-specific-instances"></a>

下列 IAM 政策會授予連線至特定執行個體的許可，由其資源 ARN 識別。

在下列 IAM 政策範例中，指定了下列動作和條件：
+ 此 `ec2-instance-connect:SendSSHPublicKey` 動作准許使用者連線至兩個執行個體，由資源 ARN 指定。若要准許使用者連線至*所有* EC2 執行個體，請以 `*` 萬用字元取代資源 ARN。
+ 只有在連線時指定 *ami-username*，`ec2:osuser` 條件才會准許連線至執行個體。
+ 指定 `ec2:DescribeInstances` 動作，准許使用主控台的使用者連線至執行個體。如果使用者僅使用 SSH 用戶端連線至執行個體，則可以省略 `ec2:DescribeInstances`。注意，`ec2:Describe*` API 動作不支援資源層級許可。因此，在 `Resource` 元素中必須包含 `*` 萬用字元。
+ 指定 `ec2:DescribeVpcs` 動作，准許使用主控台透過 IPv6 地址連線至執行個體。如果您的使用者只會使用公有 IPv4 地址，可以省略 `ec2:DescribeVpcs`。注意，`ec2:Describe*` API 動作不支援資源層級許可。因此，在 `Resource` 元素中必須包含 `*` 萬用字元。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-1234567890abcdef0",
                "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ami-username"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 允許使用者連線至具有特定標籤的執行個體
<a name="eic-permissions-allow-users-to-connect-to-instances-with-specific-tags"></a>

屬性型存取控制 (ABAC) 是一種授權策略，可根據可連接到使用者 AWS 和資源的標籤定義許可。您可使用資源標籤來控制對執行個體的存取。如需使用標籤控制對 AWS 資源的存取的詳細資訊，請參閱《*IAM 使用者指南*》中的[控制對 AWS 資源的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)。

在下列 IAM 政策範例中，`ec2-instance-connect:SendSSHPublicKey` 動作准許使用者連線至任何執行個體 (由資源 ARN 中的 `*` 萬用字元表示)，條件是執行個體的資源標記中 key=`tag-key` 和 value=`tag-value`。

指定 `ec2:DescribeInstances` 動作，准許使用主控台的使用者連線至執行個體。如果使用者僅使用 SSH 用戶端連線至執行個體，則可以省略 `ec2:DescribeInstances`。注意，`ec2:Describe*` API 動作不支援資源層級許可。因此，在 `Resource` 元素中必須包含 `*` 萬用字元。

指定 `ec2:DescribeVpcs` 動作，准許使用主控台透過 IPv6 地址連線至執行個體。如果您的使用者只會使用公有 IPv4 地址，可以省略 `ec2:DescribeVpcs`。注意，`ec2:Describe*` API 動作不支援資源層級許可。因此，在 `Resource` 元素中必須包含 `*` 萬用字元。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey", 
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/tag-key": "tag-value"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# 在 EC2 執行個體上安裝 EC2 Instance Connect
<a name="ec2-instance-connect-set-up"></a>

若要使用 EC2 Instance Connect 連線至 Linux 執行個體，則該執行個體必須安裝 EC2 Instance Connect。安裝 EC2 Instance Connect 會在執行個體上設定 SSH 常駐程式。

如需 EC2 Instance Connect 套件的詳細資訊，請參閱 GitHub 網站上的[aws/aws-ec2-instance-connect-config](https://github.com/aws/aws-ec2-instance-connect-config)。

**注意**  
如果您對 SSH 身分驗證設定 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser`，則 EC2 Instance Connect 安裝不會進行更新。因此，您無法使用 EC2 Instance Connect。

## 安裝先決條件
<a name="ec2-instance-connect-install-prerequisites"></a>

在安裝 EC2 Instance Connect 之前，請確定您符合下列先決條件。
+ **確認執行個體使用下列其中一項：**
  + Amazon Linux 2 在 2.0.20190618 之前的版本 \$1
  + AL2023 最小 AMI 或 Amazon ECS 最佳化 AMI
  + CentOS Stream 8 和 9
  + 14.2.1 之前的 macOS Sonoma、13.6.3 之前的 Ventura，以及 12.7.2 之前的 Monterey \$1
  + Red Hat Enterprise Linux (RHEL) 8 和 9
  + Ubuntu 16.04 和 18.04 \$1
**提示**  
\$1 針對 Amazon Linux 2、macOS 與 Ubuntu：若使用比上述更新的版本來啟動執行個體，EC2 Instance Connect 已預先安裝，無須手動安裝。
+ **驗證 EC2 Instance Connect 的一般先決條件。**

  如需詳細資訊，請參閱[EC2 Instance Connect 的先決條件](ec2-instance-connect-prerequisites.md)。
+ **確認在本機電腦上使用 SSH 用戶端連線至執行個體的先決條件。**

  如需詳細資訊，請參閱[使用 SSH 連線至您的 Linux 執行個體](connect-to-linux-instance.md)。
+ **取得執行個體的 ID。**

  您可以使用 Amazon EC2 主控台取得執行個體的 ID (從**執行個體 ID** 資料欄中)。如果您願意的話，可以使用 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) (AWS CLI) 或 [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) (AWS Tools for Windows PowerShell) 命令。

## 手動安裝 EC2 Instance Connect
<a name="ec2-instance-connect-install"></a>

**注意**  
如果您使用下列其中一個 AMI 啟動執行個體，則會預先安裝 EC2 Instance Connect，您可以略過此程序：  
AL2023 標準 AMI
Amazon Linux 2 2.0.20190618 或更新版本
macOS Sonoma 14.2.1 或更新版本
macOS Ventura 13.6.3 或更新版本
macOS Monterey 12.7.2 或更新版本
Ubuntu 20.04 或更新版本

根據執行個體的作業系統，使用以下其中一種程序來安裝 EC2 Instance Connect。

------
#### [ Amazon Linux 2 ]

**若要在使用 Amazon Linux 2 啟動的執行個體上安裝 EC2 Instance Connect**

1. 使用 SSH 連接至您的執行個體。

   將以下命令中的範例值取代為您自己的值。使用在您啟動執行個體時指派至該執行個體的 SSH 金鑰對與您在啟動執行個體所用的 AMI 預設使用者名稱。Amazon Linux 2 的預設使用者名稱為 `ec2-user`。

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   如需連線至執行個體的詳細資訊，請參閱[使用 SSH 用戶端連接至 Linux 執行個體](connect-linux-inst-ssh.md)。

1. 在執行個體上安裝 EC2 Instance Connect 套件。

   ```
   [ec2-user ~]$ sudo yum install ec2-instance-connect
   ```

   您應會在 `/opt/aws/bin/` 資料夾中看到三個新指令碼：

   ```
   eic_curl_authorized_keys
   eic_parse_authorized_keys
   eic_run_authorized_keys
   ```

1. (選用) 確認 EC2 Instance Connect 是否已順利安裝在您的執行個體上。

   ```
   [ec2-user ~]$ sudo less /etc/ssh/sshd_config
   ```

   如果 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser` 行包含以下值，則 EC2 Instance Connect 的安裝已順利完成：

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand` 會設定 `eic_run_authorized_keys` 指令碼來從執行個體中繼資料查閱金鑰
   + `AuthorizedKeysCommandUser` 會將系統使用者設為 `ec2-instance-connect`
**注意**  
如果您先前已設定 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser`，EC2 Instance Connect 安裝不會變更這些值且您將無法使用 EC2 Instance Connect。

------
#### [ CentOS ]

**若要在使用 CentOS 啟動的執行個體上安裝 EC2 Instance Connect**

1. 使用 SSH 連接至您的執行個體。

   將以下命令中的範例值取代為您自己的值。使用在您啟動執行個體時指派至該執行個體的 SSH 金鑰對與您在啟動執行個體所用的 AMI 預設使用者名稱。若使用 CentOS，使用者名稱預設為 `centos` 或 `ec2-user`。

   ```
   $ ssh -i my_ec2_private_key.pem centos@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   如需連線至執行個體的詳細資訊，請參閱[使用 SSH 用戶端連接至 Linux 執行個體](connect-linux-inst-ssh.md)。

1. 如果您使用 HTTP 或 HTTPS 代理伺服器，則必須在目前的 Shell 工作階段中設定 `http_proxy` 或 `https_proxy` 環境變數。

   如果您不使用代理伺服器，則可以略過此步驟。
   + 若使用 HTTP 代理伺服器，請執行下列命令：

     ```
     $ export http_proxy=http://hostname:port
     $ export https_proxy=http://hostname:port
     ```
   + 若使用 HTTPS 代理伺服器，請執行下列命令：

     ```
     $ export http_proxy=https://hostname:port
     $ export https_proxy=https://hostname:port
     ```

1. 執行下列命令，在執行個體上安裝 EC2 Instance Connect 套件。

   適用於 CentOS 的 EC2 執行個體 Connect 組態檔案是以 Red Hat Package Manager (RPM) 套件提供，搭配以下項目適用的不同 RPM 套件：CentOS 8 和 CentOS 9，以及在 Intel /AMD (x86\$164) 或 ARM (AArch64) 上執行的執行個體類型。

   為您的作業系統和 CPU 架構使用命令區塊。
   + CentOS 8

     Intel/AMD (x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel8.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM (AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel8.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```
   + CentOS 9

     Intel/AMD (x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel9.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM (AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel9.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

   您應會在 `/opt/aws/bin/` 資料夾中看到以下新指令碼：

   ```
   eic_run_authorized_keys
   ```

1. (選用) 確認 EC2 Instance Connect 是否已順利安裝在您的執行個體上。
   + CentOS 8：

     ```
     [ec2-user ~]$ sudo less /lib/systemd/system/sshd.service.d/ec2-instance-connect.conf
     ```
   + CentOS 9：

     ```
     [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf
     ```

   如果 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser` 行包含以下值，則 EC2 Instance Connect 的安裝已順利完成：

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand` 會設定 `eic_run_authorized_keys` 指令碼來從執行個體中繼資料查閱金鑰
   + `AuthorizedKeysCommandUser` 會將系統使用者設為 `ec2-instance-connect`
**注意**  
如果您先前已設定 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser`，EC2 Instance Connect 安裝不會變更這些值且您將無法使用 EC2 Instance Connect。

------
#### [ macOS ]

**若要在使用 macOS 啟動的執行個體上安裝 EC2 Instance Connect**

1. 使用 SSH 連接至您的執行個體。

   將以下命令中的範例值取代為您自己的值。使用在您啟動執行個體時指派至該執行個體的 SSH 金鑰對與您在啟動執行個體所用的 AMI 預設使用者名稱。macOS 執行個體的預設使用者名稱為 `ec2-user`。

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   如需連線至執行個體的詳細資訊，請參閱[使用 SSH 用戶端連接至 Linux 執行個體](connect-linux-inst-ssh.md)。

1. 使用以下命令更新 Homebrew。更新將列出 Homebrew 已知的軟體。EC2 Instance Connect 套件透過 macOS 執行個體上的 Homebrew 提供。如需詳細資訊，請參閱 [更新 Amazon EC2 Mac 執行個體上的作業系統和軟體](mac-instance-updates.md)。

   ```
   [ec2-user ~]$ brew update
   ```

1. 在執行個體上安裝 EC2 Instance Connect 套件。這會安裝軟體，並設定 sshd 以使用該軟體。

   ```
   [ec2-user ~]$ brew install ec2-instance-connect
   ```

   您應會在 `/opt/aws/bin/` 資料夾中看到以下新指令碼：

   ```
   eic_run_authorized_keys
   ```

1. (選用) 確認 EC2 Instance Connect 是否已順利安裝在您的執行個體上。

   ```
   [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf
   ```

   如果 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser` 行包含以下值，則 EC2 Instance Connect 的安裝已順利完成：

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand` 會設定 `eic_run_authorized_keys` 指令碼來從執行個體中繼資料查閱金鑰
   + `AuthorizedKeysCommandUser` 會將系統使用者設為 `ec2-instance-connect`
**注意**  
如果您先前已設定 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser`，EC2 Instance Connect 安裝不會變更這些值且您將無法使用 EC2 Instance Connect。

------
#### [ RHEL ]

**若要在使用 Red Hat Enterprise Linux (RHEL) 啟動的執行個體上安裝 EC2 Instance Connect**

1. 使用 SSH 連接至您的執行個體。

   將以下命令中的範例值取代為您自己的值。使用在您啟動執行個體時指派至該執行個體的 SSH 金鑰對與您在啟動執行個體所用的 AMI 預設使用者名稱。RHEL 的預設使用者名稱為 `ec2-user` 或 `root`。

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   如需連線至執行個體的詳細資訊，請參閱[使用 SSH 用戶端連接至 Linux 執行個體](connect-linux-inst-ssh.md)。

1. 如果您使用 HTTP 或 HTTPS 代理伺服器，則必須在目前的 Shell 工作階段中設定 `http_proxy` 或 `https_proxy` 環境變數。

   如果您不使用代理伺服器，則可以略過此步驟。
   + 若使用 HTTP 代理伺服器，請執行下列命令：

     ```
     $ export http_proxy=http://hostname:port
     $ export https_proxy=http://hostname:port
     ```
   + 若使用 HTTPS 代理伺服器，請執行下列命令：

     ```
     $ export http_proxy=https://hostname:port
     $ export https_proxy=https://hostname:port
     ```

1. 執行下列命令，在執行個體上安裝 EC2 Instance Connect 套件。

   適用於 RHEL 的 EC2 執行個體 Connect 組態檔案是以 Red Hat Package Manager (RPM) 套件提供，搭配以下項目適用的不同 RPM 套件：RHEL 8 和 RHEL 9，以及在 Intel /AMD (x86\$164) 或 ARM (AArch64) 上執行的執行個體類型。

   為您的作業系統和 CPU 架構使用命令區塊。
   + RHEL 8

     Intel/AMD (x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel8.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM (AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel8.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```
   + RHEL 9

     Intel/AMD (x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel9.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM (AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel9.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

   您應會在 `/opt/aws/bin/` 資料夾中看到以下新指令碼：

   ```
   eic_run_authorized_keys
   ```

1. (選用) 確認 EC2 Instance Connect 是否已順利安裝在您的執行個體上。
   + 針對 RHEL 8：

     ```
     [ec2-user ~]$ sudo less /lib/systemd/system/sshd.service.d/ec2-instance-connect.conf
     ```
   + 針對 RHEL 9：

     ```
     [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf
     ```

   如果 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser` 行包含以下值，則 EC2 Instance Connect 的安裝已順利完成：

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand` 會設定 `eic_run_authorized_keys` 指令碼來從執行個體中繼資料查閱金鑰
   + `AuthorizedKeysCommandUser` 會將系統使用者設為 `ec2-instance-connect`
**注意**  
如果您先前已設定 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser`，EC2 Instance Connect 安裝不會變更這些值且您將無法使用 EC2 Instance Connect。

------
#### [ Ubuntu ]

**若要在使用 Ubuntu 16.04 或更新版本啟動的執行個體上安裝 EC2 Instance Connect**

1. 使用 SSH 連接至您的執行個體。

   將以下命令中的範例值取代為您自己的值。使用在您啟動執行個體時指派至該執行個體的 SSH 金鑰對並使用您在啟動執行個體所用的 AMI 預設使用者名稱。若為 Ubuntu AMI，使用者名稱為 `ubuntu`。

   ```
   $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   如需連線至執行個體的詳細資訊，請參閱[使用 SSH 用戶端連接至 Linux 執行個體](connect-linux-inst-ssh.md)。

1. (選用) 請確認您的執行個體具有最新的 Ubuntu AMI。

   執行下列命令以更新您的執行個體上的所有套件。

   ```
   ubuntu:~$ sudo apt-get update
   ```

   ```
   ubuntu:~$ sudo apt-get upgrade
   ```

1. 在執行個體上安裝 EC2 Instance Connect 套件。

   ```
   ubuntu:~$ sudo apt-get install ec2-instance-connect
   ```

   您應會在 `/usr/share/ec2-instance-connect/` 資料夾中看到三個新指令碼：

   ```
   eic_curl_authorized_keys
   eic_parse_authorized_keys
   eic_run_authorized_keys
   ```

1. (選用) 確認 EC2 Instance Connect 是否已順利安裝在您的執行個體上。

   ```
   ubuntu:~$ sudo less /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf
   ```

   如果 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser` 行包含以下值，則 EC2 Instance Connect 的安裝已順利完成：

   ```
   AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys %%u %%f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand` 會設定 `eic_run_authorized_keys` 指令碼來從執行個體中繼資料查閱金鑰
   + `AuthorizedKeysCommandUser` 會將系統使用者設為 `ec2-instance-connect`
**注意**  
如果您先前已設定 `AuthorizedKeysCommand` 和 `AuthorizedKeysCommandUser`，EC2 Instance Connect 安裝不會變更這些值且您將無法使用 EC2 Instance Connect。

------

# 使用 EC2 Instance Connect 連線至 Linux 執行個體
<a name="ec2-instance-connect-methods"></a>

下列指示說明如何透過 Amazon EC2 主控台 AWS CLI、 或 SSH 用戶端，使用 EC2 Instance Connect 連線至 Linux 執行個體。 Amazon EC2 

當您透過主控台或 使用 EC2 Instance Connect 連線到執行個體時 AWS CLI，EC2 Instance Connect API 會自動將 SSH 公有金鑰推送至[執行個體中繼資料](ec2-instance-metadata.md)，並在其中保留 60 秒。連接至您使用者的 IAM 政策會授權此動作。如果您偏好使用自己的 SSH 金鑰，則可以使用 SSH 用戶端，並使用 EC2 Instance Connect 將 SSH 金鑰明確推送至執行個體。

**考量事項**  
在使用 EC2 Instance Connect 連線至執行個體之後，SSH 工作階段終止之前，連線會持續存在。連線的持續時間並不是由 IAM 憑證的持續時間決定。若 IAM 憑證到期，連線會繼續存在。使用 EC2 Instance Connect 主控台體驗時，若 IAM 憑證到期，可藉由關閉瀏覽器頁面來終止連線。若使用您自己的 SSH 用戶端與 EC2 Instance Connect 來推送金鑰，您可設定 SSH 逾時值，以自動終止 SSH 工作階段。

**要求**  
在開始之前，請務必檢閱[先決條件](ec2-instance-connect-prerequisites.md)。

**Topics**
+ [使用 Connect Amazon EC2 主控台進行連線](#ec2-instance-connect-connecting-console)
+ [使用 連線 AWS CLI](#connect-linux-inst-eic-cli-ssh)
+ [使用您自己的金鑰和 SSH 用戶端來進行連接](#ec2-instance-connect-connecting-aws-cli)
+ [疑難排解](#ic-troubleshoot)

## 使用 Connect Amazon EC2 主控台進行連線
<a name="ec2-instance-connect-connecting-console"></a>

您可以透過 Amazon EC2 主控台使用 EC2 Instance Connect 連線到執行個體。

**要求**  
若要使用 Amazon EC2 主控台進行連線，執行個體必須具有公用 IPv4 或 IPv6 位址。如果執行個體只有私有 IPv4 地址，您可以使用 [ec2-instance-connect AWS CLI](#connect-linux-inst-eic-cli-ssh) 進行連線。

**要使用 Amazon EC2 主控台連線至執行個體**

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

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

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

1. 選擇 **EC2 Instance Connect** 索引標籤。

1. 請選擇**使用公有 IP 建立連線**。

1. 如果有選擇，請選取要連線的 IP 位址。否則，系統會自動選取 IP 位址。

1. 針對**使用者名稱**，請驗證使用者名稱。

1. 選擇**連線**以建立連線。瀏覽器內的終端機視窗隨即開啟。

## 使用 連線 AWS CLI
<a name="connect-linux-inst-eic-cli-ssh"></a>

您可以使用 [ec2-instance-connect](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/index.html) AWS CLI 透過 SSH 用戶端連線至執行個體。EC2 Instance Connect 會根據指定的連線類型，嘗試以預先定義的順序使用可用的 IP 位址建立連線。如果 IP 位址無法使用，系統會自動嘗試排序的下一個 IP 位址。連線類型

`auto` (default)  
EC2 Instance Connect 會嘗試依下列順序使用執行個體的 IP 位址並使用對應的連線類型進行連線：  

1. 公有 IPv4：`direct`

1. 私有 IPv4：`eice`

1. IPv6：`direct`

`direct`  
EC2 Instance Connect 會嘗試依下列順序使用執行個體的 IP 位址進行連線：  

1. 公有 IPv4

1. IPv6

1. 私有 IPv4 (不會透過 EC2 Instance Connect 端點連線)

`eice`  
EC2 Instance Connect 會嘗試使用執行個體的私有 IPv4 地址及 [EC2 Instance Connect 端點](connect-with-ec2-instance-connect-endpoint.md)進行連線。

**注意**  
將來，我們可能會變更 `auto` 連線類型的行為。若要確保使用您想要的連線類型，建議您明確地將 `--connection-type` 設定為 `direct` 或 `eice`。

**要求**  
您必須使用第 2 AWS CLI 版。如需詳細資訊，請參閱[安裝或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

**使用執行個體 ID 連線到執行個體**  
如果您只知道執行個體 ID，並希望讓 EC2 Instance Connect 決定連線到執行個體時要使用的連線類型，則請使用執行個體 ID 並搭配 [ec2-instance-connect ssh](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/ssh.html) CLI 命令。

```
aws ec2-instance-connect ssh --instance-id i-1234567890example
```

**使用執行個體 ID 和 EC2 Instance Connect 端點連線至執行個體**  
如果要透過 [EC2 Instance Connect 端點](connect-with-ec2-instance-connect-endpoint.md)連線到執行個體，則請使用上述命令並指定具有 `eice` 值的 `--connection-type` 參數。

```
aws ec2-instance-connect ssh --instance-id i-1234567890example --connection-type eice
```

**使用執行個體 ID 和您自己的私有金鑰檔案連線至執行個體**  
如果想透過 EC2 Instance Connect 端點使用自己的私有金鑰連線到執行個體，則請指定執行個體 ID 和私有金鑰檔案的路徑。請勿在路徑中包含 *file://*；下列範例會無效：*file:///path/to/key*。

```
aws ec2-instance-connect ssh --instance-id i-1234567890example --private-key-file /path/to/key.pem
```

**提示**  
如果您在使用這些命令時發生錯誤，請確定您使用的是第 2 AWS CLI 版，因為該`ssh`命令僅適用於此主要版本。我們也建議定期更新至 AWS CLI 版本 2 的最新次要版本，以存取最新功能。如需相關資訊，請參閱「AWS Command Line Interface 使用者指南」**中的[關於 AWS CLI 第 2 版](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html#welcome-versions-v2)。

## 使用您自己的金鑰和 SSH 用戶端來進行連接
<a name="ec2-instance-connect-connecting-aws-cli"></a>

當您使用 EC2 Instance Connect API 時，您可以使用自己的 SSH 金鑰和從您選擇的 SSH 用戶端連接執行個體。這可讓您從 EC2 Instance Connect 發佈公有的金鑰至執行個體。此連線方法適用於具有公有和私有 IP 地址的執行個體。

**要求**
+ 金鑰對的需求
  + 支援的類型：RSA (OpenSSH 和 SSH2) 和 ED25519
  + 支援的長度：2048 和 4096
  + 如需詳細資訊，請參閱[使用第三方工具來建立金鑰對，然後將公有金鑰匯入 Amazon EC2](create-key-pairs.md#how-to-generate-your-own-key-and-import-it-to-aws)。
+ 連線到僅具有私有 IP 位址的執行個體時，從中起始 SSH 工作階段的本機電腦必須具有連線到 EC2 Instance Connect 服務端點的能力 (以將 SSH 公有金鑰推送至執行個體)，以及透過網路連線到執行個體私有 IP 位址的能力，以建立 SSH 工作階段。EC2 Instance Connect 服務端點可透過網際網路或 Direct Connect 公有虛擬界面存取。若要連線到執行個體的私有 IP 地址，您可以使用服務，例如 [Direct Connect](https://aws.amazon.com/directconnect/)、[AWS Site-to-Site VPN](https://aws.amazon.com/vpn/) 或 [VPC 互連](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)。

**使用您自己的金鑰和任何 SSH 用戶端來連接制執行個體**

1. 

**(選用) 產生新 SSH 私有和公有金鑰**

   您可以使用以下命令來產生新 SSH 私有和公有金鑰 (`my_key` 和 `my_key.pub`)：

   ```
   ssh-keygen -t rsa -f my_key
   ```

1. 

**將 SSH 公有金鑰推送至執行個體**

   使用 [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/send-ssh-public-key.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/send-ssh-public-key.html) 命令將 SSH 公開金鑰推送至執行個體。如果使用 AL2023 或 Amazon Linux 2 啟動執行個體，AMI 的預設使用者名稱為 `ec2-user`。如果您是使用 Ubuntu 啟動執行個體，AMI 的預設使用者名稱為 `ubuntu`。

   下列範例將公開金鑰推送至特定可用區域的特定執行個體，若要認證 `ec2-user`。

   ```
   aws ec2-instance-connect send-ssh-public-key \
       --region us-west-2 \
       --availability-zone us-west-2b \
       --instance-id i-001234a4bf70dec41EXAMPLE \
       --instance-os-user ec2-user \
       --ssh-public-key file://my_key.pub
   ```

1. 

**使用私有金鑰連線至執行個體**

   使用 **ssh** 命令，來使用私有金鑰連接至執行個體，之後系統會將公有金鑰從執行個體中繼資料中移除 (在系統移除金鑰前您有 60 秒的時間)。指定對應於公有金鑰應的私有金鑰、用於啟動執行個體之 AMI 的預設使用者名稱，以及執行個體的公有 DNS 名稱 (如果透過私有網路連線，請指定私有 DNS 名稱或 IP 位址)。新增該 `IdentitiesOnly=yes` 選項以確保連線只使用 ssh 組態中的檔案和指定的金鑰。

   ```
   ssh -o "IdentitiesOnly=yes" -i my_key ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
   ```

   下列範例使用 `timeout 3600` 將 SSH 工作階段設定為 1 小時後終止。工作階段終止之後，工作階段期間啟動的程序可能會在執行個體上繼續執行。

   ```
   timeout 3600 ssh -o “IdentitiesOnly=yes” -i my_key ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
   ```

## 疑難排解
<a name="ic-troubleshoot"></a>

如果您在嘗試連線至執行個體時遇到錯誤，請參閱下文：
+ [對連線至 Amazon EC2 Linux 執行個體的問題進行疑難排解](TroubleshootingInstancesConnecting.md)
+ [如何對使用 EC2 Instance Connect 連線至 EC2 執行個體的問題進行疑難排解？](https://repost.aws/knowledge-center/ec2-instance-connect-troubleshooting)

# 解除安裝 EC2 Instance Connect
<a name="ec2-instance-connect-uninstall"></a>

若要停用 EC2 Instance Connect，連接至您的 Linux 執行個體並解除安裝在 OS 上的 `ec2-instance-connect` 套件。如果 `sshd` 組態與您安裝在 EC2 Instance Connect 設定的內容相符，解除安裝 `ec2-instance-connect` 也會移除 `sshd` 組態。如果您在安裝 EC2 Instance Connect 之後修改 `sshd` 組態，您必須手動更新。

------
#### [ Amazon Linux ]

您可以在 AL2023 和 Amazon Linux 2 2.0.20190618 或更新版本中 (EC2 Instance Connect 已預先設定) 解除安裝 EC2 Instance Connect。

**若要在使用 Amazon Linux 啟動的執行個體解除安裝 EC2 Instance Connect**

1. 使用 SSH 連接至您的執行個體。指定啟動執行個體時所使用的 SSH 金鑰對，以及 AL2023 或 Amazon Linux 2 AMI 的預設使用者名稱，即 `ec2-user`。

   例如，以下 **ssh** 命令會使用 `my_ec2_private_key.pem` 金鑰對連接到公有 DNS 名稱為 `ec2-a-b-c-d.us-west-2.compute.amazonaws.com` 的執行個體。

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

1. 使用 **yum** 指令，解除安裝 `ec2-instance-connect` 套件。

   ```
   [ec2-user ~]$ sudo yum remove ec2-instance-connect
   ```

------
#### [ Ubuntu ]

**若要在使用 Ubuntu AMI 啟動的執行個體上解除安裝 EC2 Instance Connect**

1. 使用 SSH 連接至您的執行個體。當您啟動且為 Ubuntu AMI 為預設使用者名稱時，為您的執行個體指定您所使用的 SSH 金鑰對 `ubuntu`。

   例如，以下 **ssh** 命令會使用 `my_ec2_private_key.pem` 金鑰對連接到公有 DNS 名稱為 `ec2-a-b-c-d.us-west-2.compute.amazonaws.com` 的執行個體。

   ```
   $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

1. 使用 **apt-get** 指令，解除安裝 `ec2-instance-connect` 套件。

   ```
   ubuntu:~$ sudo apt-get remove ec2-instance-connect
   ```

------

# 使用私有 IP 位址與 EC2 Instance Connect 端點連線至您的執行個體
<a name="connect-with-ec2-instance-connect-endpoint"></a>

EC2 Instance Connect 端點可讓您安全地從網際網路連線至執行個體，而無需使用堡壘主機，您的虛擬私有雲端 (VPC) 也無須具備直接網際網路連線。

**優勢**
+ 您可以連線到執行個體，而無需執行個體擁有公有 IPv4 或 IPv6 地址。 會收取所有公有 IPv4 地址 AWS 的費用，包括與執行中執行個體相關聯的公有 IPv4 地址和彈性 IP 地址。如需詳細資訊，請參閱 [Amazon VPC 定價頁面](https://aws.amazon.com/vpc/pricing/)中的**公有 IPv4 地址**。
+ 您可以從網際網路連線至執行個體，VPC 無須具有直接網際網路連線的[網際網路閘道](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)。
+ 您可以控制對建立和使用 EC2 Instance Connect 端點的存取，以連線至使用[ IAM 政策和許可](permissions-for-ec2-instance-connect-endpoint.md)的執行個體。
+ 連線到您執行個體的所有嘗試 (無論是成功還是失敗) 都會記錄到 [CloudTrail](log-ec2-instance-connect-endpoint-using-cloudtrail.md)。

**定價**  
使用 EC2 Instance Connect 端點無需額外費用。如果使用 EC2 Instance Connect 端點連線至位於不同可用區域中的執行個體，則跨可用區域的[資料傳輸需額外付費](https://aws.amazon.com/ec2/pricing/on-demand/#Data_Transfer_within_the_same_AWS_Region)。

**Topics**
+ [運作方式](#how-eice-works)
+ [考量事項](#ec2-instance-connect-endpoint-prerequisites)
+ [許可](permissions-for-ec2-instance-connect-endpoint.md)
+ [Security groups (安全群組)](eice-security-groups.md)
+ [建立 EC2 Instance Connect 端點](create-ec2-instance-connect-endpoints.md)
+ [修改 EC2 Instance Connect 端點](modify-ec2-instance-connect-endpoint.md)
+ [刪除 EC2 Instance Connect 端點](delete-ec2-instance-connect-endpoint.md)
+ [連接至執行個體](connect-using-eice.md)
+ [記錄連線](log-ec2-instance-connect-endpoint-using-cloudtrail.md)
+ [服務連結角色](eice-slr.md)
+ [配額](eice-quotas.md)

## 運作方式
<a name="how-eice-works"></a>

EC2 Instance Connect 端點是身分感知的 TCP 代理。EC2 Instance Connect 端點服務會使用 IAM 實體的登入資料，從您的電腦建立連接至端點的私有通道。流量會在到達 VPC 之前經過身分驗證和授權。

您可以[設定其他安全群組規則](eice-security-groups.md)，以限制傳入至執行個體的流量。例如，您可以使用傳入規則，以允許來自 EC2 Instance Connect 端點的管理連接埠上的流量。

您可以設定路由表規則，以允許端點連線到 VPC 任何子網路中的任何執行個體。

下圖顯示使用者如何使用 EC2 Instance Connect 端點從網際網路連線至其執行個體。首先，在子網路 A 中建立 **EC2 Instance Connect 端點**。我們將為子網路中的端點建立網路介面，並以該介面做為流量進入點，目的地是您 VPC 中執行個體。如果子網路 B 的路由表允許來自子網路 A 的流量，則您可以使用端點來連接子網路 B 中的執行個體。

![\[EC2 Instance Connect 端點流程概觀。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ec2-instance-connect-endpoint.png)


## 考量事項
<a name="ec2-instance-connect-endpoint-prerequisites"></a>

開始之前，請考慮以下項目。
+ EC2 Instance Connect 端點特別適用於管理流量使用案例，而不適用於大量資料傳輸。系統會限流大量資料傳輸。
+ 您可建立 EC2 Instance Connect 端點，以便為擁有私有 IPv4 位址或 IPv6 位址的執行個體的流量提供支援。端點的 IP 位址類型必須與執行個體的 IP 位址相符。您可建立支援全部 IP 位址類型的端點。
+ (Linux 執行個體) 若使用自己的金鑰對，則可以使用任何 Linux AMI。否則，您的執行個體必須安裝 EC2 Instance Connect。如需哪些 AMI 包含 EC2 Instance Connect，以及如何在其他支援的 AMI 上進行安裝的相關資訊，請參閱[安裝 EC2 Instance Connect](ec2-instance-connect-set-up.md)。
+ 您可指派安全群組至 EC2 Instance Connect 端點。否則，VPC 將使用我們的預設安全群組。EC2 Instance Connect 端點的安全群組必須允許傳出流量到目的地執行個體。如需詳細資訊，請參閱[EC2 Instance Connect 端點的安全群組](eice-security-groups.md)。
+ 您可以設定 EC2 Instance Connect 端點，以便在請求路由至執行個體時，保留用戶端的來源 IP 位址。否則，網路介面的 IP 位址會成為所有傳入流量的用戶端 IP 位址。
  + 如果您開啟用戶端 IP 保留，執行個體的安全群組必須允許來自用戶端的流量。此外，執行個體必須與 EC2 Instance Connect 端點位於相同的 VPC 中。
  + 如果您關閉用戶端 IP 保留，執行個體的安全群組必須允許來自 VPC 的流量。這是預設值。
  + 僅在 IPv4 EC2 Instance Connect 端點上支援用戶端 IP 保留。如需使用用戶端 IP 保留，EC2 Instance Connect 端點的 IP 位址類型必須為 IPv4。若 IP 位址類型為雙重堆疊或 IPv6，則用戶端 IP 保留不受支援。
  + 以下執行個體類型不支援用戶端 IP 保留：C1、CG1、CG2、G1、HI1、M1、M2、M3 和 T1。如果您開啟用戶端 IP 保留，並嘗試使用 EC2 Instance Connect 端點連線到以上類型的執行個體，連線會失敗。
  + 當透過傳輸閘道傳送流量時，不支援用戶端 IP 保留。
+ 當您建立 EC2 Instance Connect Endpoint 時，會自動為 AWS Identity and Access Management (IAM) 中的 Amazon EC2 服務建立服務連結角色。Amazon EC2 使用服務連結角色在網路介面中佈建帳戶，這在建立 EC2 Instance Connect 端點時是必需的。如需詳細資訊，請參閱[EC2 Instance Connect 端點的服務連結角色](eice-slr.md)。
+ 每個 VPC 和每個子網路只能建立 1 個 EC2 Instance Connect 端點。如需詳細資訊，請參閱[EC2 Instance Connect 端點配額](eice-quotas.md)。如果您需要在相同 VPC 的不同可用區域中建立另一個 EC2 Instance Connect 端點，您必須先刪除現有的 EC2 Instance Connect 端點。否則，您將收到配額錯誤。
+ 每個 EC2 執行個體連線端點最多可支援 20 個並行連線。
+ 已建立 TCP 連線的持續時間上限是 1 小時 (3600 秒)。您可以在 IAM 政策中指定允許的持續時間上限，上限為 3600 秒。如需詳細資訊，請參閱[使用 EC2 Instance Connect 端點連線到執行個體所需的許可](permissions-for-ec2-instance-connect-endpoint.md#iam-OpenTunnel)。

  連線的持續時間並不是由 IAM 憑證的持續時間決定。若 IAM 憑證到期，達到指定持續時間上限之前，連線會繼續存在。若使用 EC2 Instance Connect 端點主控台體驗連線至執行個體，則將**通道持續時間上限 (秒)** 設定為小於 IAM 憑證持續時間的值。若 IAM 憑證提前到期，可藉由關閉瀏覽器頁面來終止執行個體連線。

# 授予許可以使用 EC2 Instance Connect 端點
<a name="permissions-for-ec2-instance-connect-endpoint"></a>

依預設，IAM 實體沒有建立、描述或修改 EC2 Instance Connect 端點的許可。IAM 管理員可以建立 IAM 政策，授予在所需資源上執行特定動作所需的權限。

如需有關建立和編輯 IAM 政策的資訊，請參閱「IAM 使用者指南」**中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

下列範例政策示範您如何控制使用者對 EC2 Instance Connect 端點所需的許可。

**Topics**
+ [建立、描述、修改和刪除 EC2 Instance Connect 端點所需的許可](#iam-CreateInstanceConnectEndpoint)
+ [使用 EC2 Instance Connect 端點連線到執行個體所需的許可](#iam-OpenTunnel)
+ [僅從特定 IP 位址範圍連線的許可](#iam-sourceip)

## 建立、描述、修改和刪除 EC2 Instance Connect 端點所需的許可
<a name="iam-CreateInstanceConnectEndpoint"></a>

若要建立及修改 EC2 Instance Connect 端點，使用者需要下列動作的許可：
+ `ec2:CreateInstanceConnectEndpoint`
+ `ec2:CreateNetworkInterface`
+ `ec2:CreateTags`
+ `ec2:ModifyInstanceConnectEndpoint`
+ `iam:CreateServiceLinkedRole`

若要描述和刪除 EC2 Instance Connect 端點，使用者需要下列動作的許可：
+ `ec2:DescribeInstanceConnectEndpoints` 
+ `ec2:DeleteInstanceConnectEndpoint`

您可以建立一個政策，以准許在所有子網路中建立、描述、修改和刪除 EC2 Instance Connect 端點。或者，僅將子網路 ARN 指定為允許的 `Resource` 或使用 `ec2:SubnetID` 條件索引鍵，來限制指定子網路的動作。您也可以使用 `aws:ResourceTag` 條件索引鍵來明確允許或拒絕具有特定標籤的端點建立。如需詳細資訊，請參閱「 IAM 使用者指南」**中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

**IAM 政策範例**

在下列 IAM 政策範例中，`Resource` 區段准許在所有子網路中建立、修改和刪除端點，以星號 (`*`) 指定。`ec2:Describe*` API 動作不支援資源層級許可。因此，在 `Resource` 元素中必須包含 `*` 萬用字元。

## 使用 EC2 Instance Connect 端點連線到執行個體所需的許可
<a name="iam-OpenTunnel"></a>

`ec2-instance-connect:OpenTunnel` 動作准許建立執行個體的 TCP 連線，以便透過 EC2 Instance Connect 端點進行連線。您可以指定要使用的 EC2 Instance Connect 端點。或者，帶有星號 (`*`) 的 `Resource` 允許使用者使用任何可用的 EC2 Instance Connect 端點。您也可以根據是否存在作為條件索引鍵的資源標籤來限制執行個體的存取。

**條件**
+ `ec2-instance-connect:remotePort` – 執行個體上可用來建立 TCP 連線的連接埠。使用此條件索引鍵時，嘗試連線到政策中指定的連接埠以外的任何其他連接埠上的執行個體會導致失敗。
+ `ec2-instance-connect:privateIpAddress` – 與您要建立 TCP 連線的執行個體相關聯的目的地私有 IP 位址。您可以指定單一 IP 位址 (例如 `10.0.0.1/32`) 或透過 CIDR 指定 IP 範圍 (例如 `10.0.1.0/28`)。使用此條件索引鍵時，嘗試連線至具有不同私有 IP 位址或超出 CIDR 範圍的執行個體會導致失敗。
+ `ec2-instance-connect:maxTunnelDuration` – 已建立的 TCP 連線的持續時間上限。單位為秒，持續時間範圍為至少 1 秒至最多 3600 秒 (1 小時)。如果未指定條件，則預設持續時間會設為 3600 秒 (1 小時)。嘗試連線至執行個體的時間超過 IAM 政策中指定的持續時間，或超過預設最大值時，會導致失敗。連線會在指定的持續時間後中斷。

  如果在 IAM 政策中指定 `maxTunnelDuration`，且指定的值少於 3,600 秒 (預設值)，則您必須在連線至執行個體時在命令中指定 `--max-tunnel-duration`。如需有關如何連線至執行個體的資訊，請參閱 [使用 EC2 Instance Connect 端點連線至 Amazon EC2 執行個體](connect-using-eice.md)。

您也可以根據 EC2 Instance Connect 端點上的資源標籤存在情況，授予使用者建立執行個體連線的存取權。如需詳細資訊，請參閱「 IAM 使用者指南」**中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

針對 Linux 執行個體，`ec2-instance-connect:SendSSHPublicKey` 動作准許將公有金鑰推送至執行個體。`ec2:osuser` 條件指定可將公有金鑰推送至執行個體的 OS (作業系統) 使用者名稱。使用針對啟動執行個體的 [AMI 的預設使用者名稱](connection-prereqs-general.md#connection-prereqs-get-info-about-instance)。如需詳細資訊，請參閱[為 EC2 Instance Connect 授予 IAM 許可](ec2-instance-connect-configure-IAM-role.md)。

**IAM 政策範例**

以下 IAM 政策範例允許 IAM 主體僅使用指定的 EC2 Instance Connect 端點(由指定的端點 ID `eice-123456789abcdef` 識別) 連線到執行個體。必須滿足所有條件，連線才會成功建立。

**注意**  
`ec2:Describe*` API 動作不支援資源層級許可。因此，在 `Resource` 元素中必須包含 `*` 萬用字元。

------
#### [ Linux ]

此範例會評估連接埠 22 (SSH) 是否已與執行個體建立連線，如果執行個體的私有 IP 位址位於 `10.0.1.0/31` (介於 `10.0.1.0`和 之間`10.0.1.1`) 的範圍內，且 `maxTunnelDuration` 小於或等於 `3600` 秒。連線會在 `3600` 秒 (1 小時) 後中斷。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                },
                "IpAddress": {
                    "ec2-instance-connect:privateIpAddress": "10.0.1.0/31"
                },
                "NumericLessThanEquals": {
                    "ec2-instance-connect:maxTunnelDuration": "3600"
                }
            }
        },
        {
            "Sid": "SSHPublicKey",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ami-username"
                }
            }
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

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

此範例會評估連接埠 3389 (RDP) 是否已與執行個體建立連線，如果執行個體的私有 IP 位址位於 `10.0.1.0/31` (介於 `10.0.1.0`和 之間`10.0.1.1`) 的範圍內，且 `maxTunnelDuration` 小於或等於 `3600` 秒。連線會在 `3600` 秒 (1 小時) 後中斷。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "3389"
                },
                "IpAddress": {
                    "ec2-instance-connect:privateIpAddress": "10.0.1.0/31"
                },
                "NumericLessThanEquals": {
                    "ec2-instance-connect:maxTunnelDuration": "3600"
                }
            }
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

------

## 僅從特定 IP 位址範圍連線的許可
<a name="iam-sourceip"></a>

下列 IAM 政策範例允許 IAM 主體連線到執行個體，條件是它們從政策中指定的 IP 位址範圍內的 IP 位址進行連線。如果 IAM 主體從不在 `192.0.2.0/24` 範圍內的 IP 位址呼叫 `OpenTunnel` (此政策中的範例 IP 位址範圍)，則回應為 `Access Denied`。如需詳細資訊，請參閱「*IAM 使用者指南*」中的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "192.0.2.0/24"
                },
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                }
            }
        },
        {
            "Sid": "SSHPublicKey",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ami-username"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# EC2 Instance Connect 端點的安全群組
<a name="eice-security-groups"></a>

安全群組負責控制允許到達和離開其關聯資源的流量。例如，除非與執行個體相關聯的安全群組特別允許，否則我們會拒絕往返 Amazon EC2 執行個體的流量。

下列範例示範如何設定 EC2 Instance Connect 端點和目標執行個體的安全群組規則。

**Topics**
+ [EC2 Instance Connect 端點安全群組規則](#eice-security-group-rules)
+ [目標執行個體安全群組規則](#resource-security-group-rules)

## EC2 Instance Connect 端點安全群組規則
<a name="eice-security-group-rules"></a>

EC2 Instance Connect 端點的安全群組規則必須允許目標執行個體的傳出流量離開端點。您可以指定執行個體安全群組或 VPC 的 IPv4 或 IPv6 位址範圍做為目的地。

到端點的流量來自 EC2 Instance Connect 端點服務，無論端點安全群組的傳入規則為何，都會獲得允許。若要控制誰可以使用 EC2 Instance Connect 端點連線到執行個體，請使用 IAM 政策。如需詳細資訊，請參閱[使用 EC2 Instance Connect 端點連線到執行個體所需的許可](permissions-for-ec2-instance-connect-endpoint.md#iam-OpenTunnel)。

**傳出規則範例：安全群組參考**  
下列範例使用安全群組參考，這表示目的地是與目標執行個體相關聯的安全群組。此規則允許從端點向使用此安全群組的所有執行個體的傳出流量。


| 通訊協定 | 目標 | 連接埠範圍 | Comment | 
| --- | --- | --- | --- | 
| TCP | 執行個體安全群組的 ID | 22 | 允許與執行個體安全群組相關的所有執行個體的傳出 SSH 流量 | 

**傳出規則範例：IPv4 地址範圍**  
下列範例允許傳出流量到指定的 IPv4 地址範圍。執行個體的 IPv4 地址是從其子網路指派，因此您可以使用 VPC 的 IPv4 地址範圍。


| 通訊協定 | 目標 | 連接埠範圍 | Comment | 
| --- | --- | --- | --- | 
| TCP | VPC A IPv4 CIDR | 22 | 允許傳出 SSH 流量到 VPC | 

**傳出規則範例：IPv6 地址範圍**  
下列範例允許傳出流量到指定的 IPv6 地址範圍。執行個體的 IPv6 地址是從其子網路指派，因此您可以使用 VPC 的 IPv6 地址範圍。


| 通訊協定 | 目標 | 連接埠範圍 | Comment | 
| --- | --- | --- | --- | 
| TCP | VPC A IPv6 CIDR | 22 | 允許傳出 SSH 流量到 VPC | 

## 目標執行個體安全群組規則
<a name="resource-security-group-rules"></a>

目標執行個體的安全群組規則必須允許來自 EC2 Instance Connect 端點的傳入流量。您可以指定端點安全群組或 IPv4 或 IPv6 位址範圍做為來源。如果您指定 IPv4 地址範圍，來源將取決於用戶端 IP 保留是否關閉或開啟。如需詳細資訊，請參閱[考量事項](connect-with-ec2-instance-connect-endpoint.md#ec2-instance-connect-endpoint-prerequisites)。

由於安全群組具有狀態，因此無論執行個體安全群組的傳出規則為何，回應流量都可以離開 VPC。

**傳入規則範例：安全群組參考**  
下列範例使用安全群組參考，這表示來源是與端點相關聯的安全群組。此規則允許從端點到所有使用此安全群組的執行個體的傳入 SSH 流量，不論用戶端 IP 保留為開啟或關閉。如果沒有 SSH 的其他傳入安全群組規則，則執行個體只會接受來自端點的 SSH 流量。


| 通訊協定 | 來源 | 連接埠範圍 | Comment | 
| --- | --- | --- | --- | 
| TCP | 端點安全群組的 ID | 22 | 允許來自與端點安全群組相關聯資源的傳入 SSH 流量 | 

**傳入規則範例：用戶端 IP 保留關閉**  
下列範例允許傳入 SSH 流量自指定的 IPv4 地址範圍。由於用戶端 IP 保留已關閉，來源 IPv4 地址會是端點網路介面的地址。端點網路介面的地址是由其子網路指派，因此您可以使用 VPC 的 IPv4 地址範圍來允許與 VPC 中所有執行個體的連線。


| 通訊協定 | 來源 | 連接埠範圍 | Comment | 
| --- | --- | --- | --- | 
| TCP | VPC A IPv4 CIDR | 22 | 允許來自 VPC 的傳入 SSH 流量。 | 

**傳入規則範例：用戶端 IP 保留開啟**  
下列範例允許傳入 SSH 流量自指定的 IPv4 地址範圍。由於用戶端 IP 保留已開啟，來源 IPv4 地址會是用戶端的地址。


| 通訊協定 | 來源 | 連接埠範圍 | Comment | 
| --- | --- | --- | --- | 
| TCP | 公用 IPv4 地址範圍 | 22 | 允許傳入流量自指定的用戶端 IPv4 地址範圍 | 

# 建立 EC2 Instance Connect 端點
<a name="create-ec2-instance-connect-endpoints"></a>

您可以建立 EC2 Instance Connect 端點，以允許安全連線至您的執行個體。

**考量事項**
+ **共用子網路** – 您可以在與您共用的子網路中建立 EC2 Instance Connect 端點。然而，您不能在與您共用的子網路中使用 VPC 擁有者建立的 EC2 Instance Connect 端點。
+ **IP 位址類型** – EC2 Instance Connect 端點支援以下位址類型，且必須與您的子網路相容：
  + `ipv4` – 僅透過私有 IPv4 位址連接至 EC2 執行個體。
  + `dualstack` – 透過私有 IPv4 位址或 IPv6 位址連線至 EC2 執行個體。
  + `ipv6` – 僅透過私有 IPv6 位址連接至 EC2 執行個體。

**先決條件**  
您必須具有必要的 IAM 許可才能建立 EC2 Instance Connect 端點。如需詳細資訊，請參閱[建立、描述、修改和刪除 EC2 Instance Connect 端點所需的許可](permissions-for-ec2-instance-connect-endpoint.md#iam-CreateInstanceConnectEndpoint)。

------
#### [ Console ]

**建立 EC2 Instance Connect 端點**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在左側導覽窗格中選擇 **Endpoints** (端點)。

1. 選擇**建立端點**，然後指定端點設定，如下所示：

   1. (選用) 針對**名稱標籤**，請輸入端點的名稱。

   1. 針對**類別**，請選擇 **EC2 Instance Connect 端點**。

   1. 在**網路設定**下，針對 **VPC**，選取包含目標執行個體的 VPC。

   1. (選用) 若要保留用戶端 IP 位址，展開**額外設定**，然後選取**保留用戶端 IP** 核取方塊。否則，預設為使用端點網路介面做為用戶端 IP 位址。
**注意**  
僅當端點的 IP 位址類型設定為 IPv4 時，方可使用此選項。

   1. (選用) 針對**安全群組**，選取要與端點產生關聯的安全群組。否則，會依預設使用 VPC 的預設安全群組。如需詳細資訊，請參閱[EC2 Instance Connect 端點的安全群組](eice-security-groups.md)。

   1. 針對**子網路**，請選取要在其中建立端點的子網路。

   1. 針對 **IP 位址類型**，選擇端點的 IP 位址類型。若需要同時支援執行個體的 IPv4 與 IPv6 連線，選擇 **Dualstack**。若需要支援用戶端 IP 保留，選擇 **IPv4**。

   1. (選用) 若要新增標籤，請選擇 **Add new tag (新增標籤)**，然後輸入標籤的鍵和值。

1. 檢閱您的設定，然後選擇 **Create endpoint (建立端點)**。

   端點的最初狀態是 **Pending (擱置中)**。在使用此端點連線至執行個體之前，您必須等待端點狀態變為**可用**。這可能需要幾分鐘的時間。

1. 若要使用端點連線至執行個體，請參閱 [連接至執行個體](connect-using-eice.md)。

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

**建立 EC2 Instance Connect 端點**  
使用 [https://docs.aws.amazon.com/cli/latest/reference/ec2/create-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-instance-connect-endpoint.html) 命令。

```
aws ec2 create-instance-connect-endpoint \
    --subnet-id subnet-0123456789example
```

如需指定端點支援的流量類型，可納入 `--ip-address-type` 參數。有效值為 `ipv4`、`dualstack` 或 `ipv6`。子網路必須支援您指定的 IP 位址類型。若省略 `--ip-address-type` 參數，預設值由子網路支援的 IP 位址類型確定。

```
aws ec2 create-instance-connect-endpoint \
    --subnet-id subnet-0123456789example \
    --ip-address-type ipv4
```

以下為範例輸出。

```
{
        "OwnerId": "111111111111",
        "InstanceConnectEndpointId": "eice-0123456789example",
        "InstanceConnectEndpointArn": "arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example",
        "State": "create-complete",
        "StateMessage": "",
        "DnsName": "eice-0123456789example.0123abcd.ec2-instance-connect-endpoint.us-east-1.amazonaws.com",
        "FipsDnsName": "eice-0123456789example.0123abcd.fips.ec2-instance-connect-endpoint.us-east-1.amazonaws.com",
        "NetworkInterfaceIds": [
            "eni-0123abcd"
        ],
        "VpcId": "vpc-0123abcd",
        "AvailabilityZone": "us-east-1a",
        "AvailabilityZoneId": "use1-az4",
        "CreatedAt": "2023-04-07T15:43:53.000Z",
        "SubnetId": "subnet-0123abcd",
        "PreserveClientIp": false,
        "SecurityGroupIds": [
            "sg-0123abcd"
        ],
        "Tags": [],
        "IpAddressType": "ipv4"
}
```

**如要監控建立狀態**  
`State` 欄位的初始值為 `create-in-progress`。在您可使用此端點連線至執行個體之前，請等待狀態變為 `create-complete`。使用 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html) 命令來監控 EC2 Instance Connect 端點的狀態。`--query` 參數可篩選 `State` 欄位的結果。

```
aws ec2 describe-instance-connect-endpoints --instance-connect-endpoint-ids eice-0123456789example --query InstanceConnectEndpoints[*].State --output text
```

以下為範例輸出。

```
create-complete
```

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

**如需建立 EC2 Instance Connect 端點**  
使用 [https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2InstanceConnectEndpoint.html) cmdlet。

```
New-EC2InstanceConnectEndpoint -SubnetId subnet-0123456789example
```

如需指定端點支援的流量類型，可納入 `-IpAddressType` 參數。有效值為 `ipv4`、`dualstack` 或 `ipv6`。子網路必須支援您指定的 IP 位址類型。若省略 `-IpAddressType` 參數，預設值由子網路支援的 IP 位址類型確定。

```
New-EC2InstanceConnectEndpoint -SubnetId subnet-0123456789example -IpAddressType ipv4
```

以下為範例輸出。

```
OwnerId                     : 111111111111
InstanceConnectEndpointId   : eice-0123456789example
InstanceConnectEndpointArn  : arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example
State                       : create-complete
StateMessage                : 
DnsName                     : eice-0123456789example.0123abcd.ec2-instance-connect-endpoint.us-east-1.amazonaws.com
FipsDnsName                 : eice-0123456789example.0123abcd.fips.ec2-instance-connect-endpoint.us-east-1.amazonaws.com
NetworkInterfaceIds         : {eni-0123abcd}
VpcId                       : vpc-0123abcd
AvailabilityZone            : us-east-1a
AvailabilityZoneId          : use1-az4
CreatedAt                   : 4/7/2023 3:43:53 PM
SubnetId                    : subnet-0123abcd
PreserveClientIp            : False
SecurityGroupIds            : {sg-0123abcd}
Tags                        : {}
IpAddressType               : ipv4
```

**如要監控建立狀態**  
`State` 欄位的初始值為 `create-in-progress`。在您可使用此端點連線至執行個體之前，請等待狀態變為 `create-complete`。使用 [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html) cmdlet 來監控 EC2 Instance Connect 端點的狀態。`.State.Value` 可篩選 `State` 欄位的結果。

```
(Get-EC2InstanceConnectEndpoint -InstanceConnectEndpointId "eice-0123456789example").State.Value
```

以下為範例輸出。

```
create-complete
```

------

# 修改 EC2 Instance Connect 端點
<a name="modify-ec2-instance-connect-endpoint"></a>

您可以使用 AWS CLI 或 SDK 修改現有的 EC2 Instance Connect Endpoints。Amazon EC2 主控台不支援端點修改。

開始之前，您必須擁有必要的 IAM 許可。如需詳細資訊，請參閱[建立、描述、修改和刪除 EC2 Instance Connect 端點所需的許可](permissions-for-ec2-instance-connect-endpoint.md#iam-CreateInstanceConnectEndpoint)。

## 您可修改的參數
<a name="eice-modify-parameters"></a>

您可修改下面的 EC2 Instance Connect 端點參數：

**安全群組**  
您可針對 EC2 Instance Connect 端點指定新安全群組。新安全群組可取代目前的安全群組。  
若修改安全群組，必須指定：  
+ 至少一個安全群組，即使該安全群組只是 VPC 中的預設安全群組。
+ 安全群組的 ID，而非名稱。

**IP 地址類型**  
您可針對 EC2 Instance Connect 端點，指定一個新 IP 位址類型。  
有效值：`ipv4` \$1 `dualstack` \$1 `ipv6`

**保留用戶端 IP 設定**  
您可指定是否將用戶端 IP 位址保留為來源。  
僅在 IPv4 EC2 Instance Connect 端點上支援保留用戶端 IP。若啟用 `PreserveClientIp`，端點的現有 IP 位址類型必須為 `ipv4`，或者，若在同一請求中修改 IP 位址類型，新的值必須為 `ipv4`。

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

**如需修改 EC2 Instance Connect 端點**  
使用 [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-connect-endpoint.html) 命令並指定要修改的 EC2 Instance Connect 端點與參數。在下面的範例中，修改了單一請求中的全部參數。

```
aws ec2 modify-instance-connect-endpoint \
    --instance-connect-endpoint-id eice-0123456789example \
    --security-group-ids sg-0123456789example \
    --ip-address-type dualstack \
    --no-preserve-client-ip
```

以下為範例輸出。

```
{
    "Return": true
}
```

**如需監控更新狀況**  
修改期間，EC2 Instance Connect 端點狀態將變更為 `update-in-progress`。更新程序以非同步方式執行，且以 `update-complete` 或 `update-failed` 狀態完成。狀態變更為 `update-complete` 之前，端點使用其舊的組態。

請使用 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html) 命令來監控更新狀態。`--query` 參數可篩選 `State` 欄位的結果。

```
aws ec2 describe-instance-connect-endpoints \
    --instance-connect-endpoint-ids eice-0123456789example \
    --query InstanceConnectEndpoints[*].State --output text
```

以下為範例輸出。

```
update-complete
```

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

**如需修改 EC2 Instance Connect 端點**  
請使用 [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceConnectEndpoint.html) cmdlet，然後指定 EC2 Instance Connect 端點及待修改參數。在下面的範例中，修改了單一請求中的全部參數。

```
Edit-EC2InstanceConnectEndpoint `
    -InstanceConnectEndpointId eice-0123456789example `
    -SecurityGroupIds sg-0123456789example `
    -IpAddressType dualstack `
    -PreserveClientIp $false
```

以下為範例輸出。

```
True
```

**如需監控更新狀況**  
修改期間，EC2 Instance Connect 端點狀態將變更為 `update-in-progress`。更新程序以非同步方式執行，且以 `update-complete` 或 `update-failed` 狀態完成。狀態變更為 `update-complete` 之前，端點使用其舊的組態。

請使用 [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html) 命令來監控更新狀態。`.State.Value` 可篩選 `State` 欄位的結果。

```
(Get-EC2InstanceConnectEndpoint -InstanceConnectEndpointId "eice-0123456789example").State.Value
```

以下為範例輸出。

```
update-complete
```

------

# 刪除 EC2 Instance Connect 端點
<a name="delete-ec2-instance-connect-endpoint"></a>

EC2 Instance Connect 端點結束使用後即可刪除。

您必須具有必要的 IAM 許可才能建立 EC2 Instance Connect 端點。如需詳細資訊，請參閱[建立、描述、修改和刪除 EC2 Instance Connect 端點所需的許可](permissions-for-ec2-instance-connect-endpoint.md#iam-CreateInstanceConnectEndpoint)。

使用主控台刪除 EC2 Instance Connect 端點時，其會進入**刪除**狀態。如果刪除成功，刪除的端點將不會再出現。若刪除失敗，則狀態為 **delete-failed**，且**狀態訊息**將提供失敗原因。

當您使用 刪除 EC2 Instance Connect Endpoint 時 AWS CLI，它會進入 `delete-in-progress` 狀態。如果刪除成功，則會進入 `delete-complete` 狀態。如果刪除失敗，則狀態為 `delete-failed`，而 `StateMessage` 將提供失敗原因。

------
#### [ Console ]

**刪除 EC2 Instance Connect 端點**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在左側導覽窗格中選擇 **Endpoints** (端點)。

1. 選取端點。

1. 選擇 **Actions** (動作)、**Delete VPC endpoints** (刪除 VPC 端點)。

1. 出現確認提示時，請按一下 **delete**。

1. 選擇 **刪除**。

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

**刪除 EC2 Instance Connect 端點**  
使用 [https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html) 命令並指定要刪除的 EC2 Instance Connect 端點的 ID。

```
aws ec2 delete-instance-connect-endpoint --instance-connect-endpoint-id eice-03f5e49b83924bbc7
```

以下為範例輸出。

```
{
    "InstanceConnectEndpoint": {
        "OwnerId": "111111111111",
        "InstanceConnectEndpointId": "eice-0123456789example",
        "InstanceConnectEndpointArn": "arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example",
        "State": "delete-in-progress",
        "StateMessage": "",
        "NetworkInterfaceIds": [],
        "VpcId": "vpc-0123abcd",
        "AvailabilityZone": "us-east-1d",
        "AvailabilityZoneId": "use1-az2",
        "CreatedAt": "2023-02-07T12:05:37+00:00",
        "SubnetId": "subnet-0123abcd"
    }
}
```

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

**刪除 EC2 Instance Connect 端點**  
使用 [https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html) cmdlet 並指定要刪除的 EC2 Instance Connect 端點的 ID。

```
Remove-EC2InstanceConnectEndpoint -InstanceConnectEndpointId eice-03f5e49b83924bbc7
```

以下為範例輸出。

```
@{
    InstanceConnectEndpoint = @{
        OwnerId = "111111111111"
        InstanceConnectEndpointId = "eice-0123456789example"
        InstanceConnectEndpointArn = "arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example"
        State = "delete-in-progress"
        StateMessage = ""
        NetworkInterfaceIds = @()
        VpcId = "vpc-0123abcd"
        AvailabilityZone = "us-east-1d"
        AvailabilityZoneId = "use1-az2"
        CreatedAt = "2023-02-07T12:05:37+00:00"
        SubnetId = "subnet-0123abcd"
    }
}
```

------

# 使用 EC2 Instance Connect 端點連線至 Amazon EC2 執行個體
<a name="connect-using-eice"></a>

您可以使用 EC2 Instance Connect 端點連線到支援 SSH 或 RDP 的 Amazon EC2 執行個體。

**先決條件**
+ 您必須具有必要的 IAM 許可才能連線至 EC2 Instance Connect 端點。如需詳細資訊，請參閱[使用 EC2 Instance Connect 端點連線到執行個體所需的許可](permissions-for-ec2-instance-connect-endpoint.md#iam-OpenTunnel)。
+ EC2 Instance Connect 端點必須為以下狀態之一：
  + 新端點的 **create-complete**
  + 正在修改現有端點的 **update-in-progress**、**update-complete** 或 **update-failed**。修改端點時，狀態變更為 **update-complete** 之前，端點會繼續使用其原始組態。

    若沒有 VPC 的 EC2 Instance Connect 端點，您可建立一個。如需詳細資訊，請參閱[建立 EC2 Instance Connect 端點](create-ec2-instance-connect-endpoints.md)。
+ EC2 Instance Connect 端點 IP 位址類型必須與執行個體的 IP 位址類型相容。若端點 IP 位址類型為雙重堆疊，則可同時適用於 IPv4 與 IPv6 位址。
+ (Linux 執行個體) 若要使用 Amazon EC2 主控台連線至您的執行個體，或使用 CLI 來連接，並讓 EC2 Instance Connect 處理暫時性金鑰，則您的執行個體必須安裝 EC2 Instance Connect。如需詳細資訊，請參閱[安裝 EC2 Instance Connect](ec2-instance-connect-set-up.md)。
+ 確保執行個體的安全群組允許來自 EC2 Instance Connect 端點的傳入 SSH 流量。如需詳細資訊，請參閱[目標執行個體安全群組規則](eice-security-groups.md#resource-security-group-rules)。

**Topics**
+ [使用 Amazon EC2 主控台連線至 Linux 執行個體](#connect-using-the-ec2-console)
+ [使用 SSH 連線至您的 Linux 執行個體](#eic-connect-using-ssh)
+ [使用 以執行個體 ID 連線到您的 Linux 執行個體 AWS CLI](#eic-connect-using-cli)
+ [使用 RDP 連線至您的 Windows 執行個體](#eic-connect-using-rdp)
+ [疑難排解](#troubleshoot-eice)

## 使用 Amazon EC2 主控台連線至 Linux 執行個體
<a name="connect-using-the-ec2-console"></a>

您可以使用 Amazon EC2 主控台 (瀏覽器型用戶端) 連線到執行個體，如下所示。

**要使用 Amazon EC2 主控台連線至執行個體**

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

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

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

1. 選擇 **EC2 Instance Connect** 索引標籤。

1. 針對**連線類型**，請選擇**使用私有 IP 建立連線**。

1. 選擇**私有 IPv4 位址**還是 **IPv6 位址**。依據指派給您的執行個體的 IP 位址提供選項。若選項灰顯，則表示執行個體沒有指派給該類型的 IP 位址。

1. 針對 **EC2 Instance Connect 端點**，請選擇 EC2 Instance Connect 端點的 ID。
**注意**  
EC2 Instance Connect 端點必須與您在上一步驟中選擇的 IP 位址相容。若端點 IP 位址類型為雙重堆疊，則可同時適用於 IPv4 與 IPv6 位址。如需詳細資訊，請參閱[建立 EC2 Instance Connect 端點](create-ec2-instance-connect-endpoints.md)。

1. 針對**使用者名稱**，如果您用來啟動執行個體的 AMI 使用 `ec2-user` 以外的使用者名稱，請輸入正確的使用者名稱。

1. 針對**通道持續時間上限 (秒)**，輸入允許的 SSH 連線持續時間上限。

   持續時間必須符合 IAM 政策中指定的任何 `maxTunnelDuration` 條件。如果您無權存取 IAM 政策，請聯絡您的管理員。

1. 選擇**連線**。這會開啟執行個體的終端視窗。

## 使用 SSH 連線至您的 Linux 執行個體
<a name="eic-connect-using-ssh"></a>

您可以使用 SSH 連線到 Linux 執行個體，並使用 `open-tunnel` 命令建立私有通道。可以在單一連線或多重連線模式下使用 `open-tunnel`。您可指定執行個體 ID、私有 IPv4 位址，或者 IPv6 位址。

如需使用 AWS CLI 以使用 SSH 連線至執行個體的詳細資訊，請參閱 [使用 連線 AWS CLI](ec2-instance-connect-methods.md#connect-linux-inst-eic-cli-ssh)。

以下範例使用 [OpenSSH](https://www.openssh.com/)。您可以使用支援代理模式的任何其他 SSH 用戶端。

### 單一連接
<a name="ssh-single-connection"></a>

**使用 SSH 和 `open-tunnel` 命令僅允許單一連線至執行個體**

使用 `ssh`和 [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html) AWS CLI 命令，如下所示。`-o` 代理命令包含 `open-tunnel` 命令，它可建立執行個體的私有通道。

```
ssh -i my-key-pair.pem ec2-user@i-1234567890abcdef0 \
    -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-id i-1234567890abcdef0'
```

對於：
+ `-i` – 指定用來啟動執行個體的金鑰對。
+ `ec2-user@i-1234567890abcdef0` – 指定用來啟動執行個體的 AMI 使用者名稱，以及執行個體 ID。若是使用 IPv6 位址的執行個體，必須指定 IPv6 位址，而非執行個體 ID。
+ `--instance-id` – 指定要連線之執行個體的 ID。或者，指定 `%h`，其可從使用者中擷取執行個體 ID。若是使用 IPv6 位址的執行個體，使用 `--instance-id i-1234567890abcdef0` 來取代 `--private-ip-address 2001:db8::1234:5678:1.2.3.4`。

### 多重連線
<a name="ssh-multi-connection"></a>

若要允許執行個體的多個連線，請先執行 [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html) AWS CLI 命令以開始接聽新的 TCP 連線，然後使用 `ssh` 建立新的 TCP 連線和執行個體的私有通道。

**允許使用 SSH 和 `open-tunnel` 命令多重連線至執行個體**

1. 執行下列命令來開始偵聽本機電腦上指定連接埠上的新 TCP 連線。

   ```
   aws ec2-instance-connect open-tunnel \
       --instance-id i-1234567890abcdef0 \
       --local-port 8888
   ```

   預期的輸出結果：

   ```
   Listening for connections on port 8888.
   ```

1. 在*新終端視窗*中，執行下列 `ssh` 命令，為執行個體建立新的 TCP 連線和私有通道。

   ```
   ssh -i my-key-pair.pem ec2-user@localhost -p 8888
   ```

   預期輸出 – 在*第一個*終端視窗中，您會看到以下內容：

   ```
   [1] Accepted new tcp connection, opening websocket tunnel.
   ```

   您可能會看到以下內容：

   ```
   [1] Closing tcp connection.
   ```

## 使用 以執行個體 ID 連線到您的 Linux 執行個體 AWS CLI
<a name="eic-connect-using-cli"></a>

如果您只知道執行個體 ID，您可以使用 [ec2-instance-connect ssh](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/ssh.html) AWS CLI 命令，使用 SSH 用戶端連線至執行個體。如需詳細資訊，請參閱[使用 連線 AWS CLI](ec2-instance-connect-methods.md#connect-linux-inst-eic-cli-ssh)。

**先決條件**
+ 安裝第 2 AWS CLI 版，並使用您的登入資料進行設定。如需詳細資訊，請參閱「AWS Command Line Interface 使用者指南」**中的[安裝或更新 AWS CLI的最新版本](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)和[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
+ 或者，在預先驗證的 shell 中開啟 AWS CloudShell 和執行 AWS CLI 命令。

**使用執行個體 ID 和 EC2 Instance Connect 端點連線至執行個體**  
如果您僅知道執行個體 ID，請使用 [ec2-instance-connect ssh](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/ssh.html) CLI 命令，並使用 `eice` 值來指定 `ssh` 命令、執行個體 ID 和 `--connection-type` 參數，以使用 EC2 Instance Connect 端點。若執行個體僅擁有 IPv6 位址，還必須連同 IPv6 位址一起納入 `--instance-ip` 參數。
+ 若執行個體擁有私有 IPv4 位址 (也可有 IPv6 位址)，請使用下面的命令與參數：

  ```
  aws ec2-instance-connect ssh \
      --instance-id i-1234567890example \
      --os-user ec2-user \
      --connection-type eice
  ```
+ 若執行個體僅擁有 IPv6 位址，請在 IPv6 位址中納入 `--instance-ip` 參數：

  ```
  aws ec2-instance-connect ssh \
      --instance-id i-1234567890example \
      --instance-ip 2001:db8::1234:5678:1.2.3.4 \
      --os-user ec2-user \
      --connection-type eice
  ```

**提示**  
如果您收到錯誤，請確定您使用的是第 2 AWS CLI 版。`ssh` 參數僅適用於第 2 AWS CLI 版。如需相關資訊，請參閱「AWS Command Line Interface 使用者指南」**中的[關於 AWS CLI 第 2 版](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html#welcome-versions-v2)。

## 使用 RDP 連線至您的 Windows 執行個體
<a name="eic-connect-using-rdp"></a>

您可以透過 EC2 Instance Connect 端點，使用遠端桌面通訊協定 (RDP)，在沒有公有 IPv4 地址或公有 DNS 名稱的情況下連線到 Windows 執行個體。

**使用 RDP 用戶端連線至您的 Windows 執行個體。**

1. 完成[使用 RDP 連線至 Windows 執行個體](connect-rdp.md)中的步驟 1 – 8。在步驟 8 下載 RDP 桌面檔案之後，您會收到**無法連線**訊息，這是預期訊息，因為您的執行個體沒有公有 IP 位址。

1. 執行下列命令，為執行個體所在的 VPC 建立私有通道。`--remote-port` 必須為 `3389`，因為 RDP 預設會使用連接埠 3389。

   ```
   aws ec2-instance-connect open-tunnel \
       --instance-id i-1234567890abcdef0 \
       --remote-port 3389 \
       --local-port any-port
   ```

1. 在**下載**資料夾中，尋找您下載的 RDP 桌面檔案，然後將其拖曳至 RDP 用戶端視窗。

1. 以滑鼠右鍵按一下 RDP 桌面檔案，並選擇**編輯**。

1. 在**編輯電腦**視窗中，針對**電腦名稱** (要連線的執行個體)，輸入 `localhost:local-port`，其中 `local-port` 使用您在步驟 2 中所指定的值，然後選擇**儲存**。

   請注意，**編輯電腦**視窗的以下螢幕截取畫面來自 Mac 中的 Microsoft 遠端桌面。如果使用 Windows 用戶端，則該視窗可能會有所不同。  
![\[在電腦名稱欄位中具有 "localhost:5555" 範例的 RDP 用戶端。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ec2-instance-connect-endpoint-rdp.png)

1. 在 RDP 用戶端中，以滑鼠右鍵按一下電腦 (您剛設定)，然後選擇**連線**以連線至您的執行個體。

1. 出現提示時，輸入管理員帳戶的解密密碼。

## 疑難排解
<a name="troubleshoot-eice"></a>

請使用以下資訊來協助您診斷並修正使用 EC2 Instance Connect 端點連線執行個體時可能遇到的問題。

### 無法連線至執行個體
<a name="troubleshoot-eice-1"></a>

以下是您可能無法連線至執行個體的常見原因。
+ 安全群組：檢查指派給 EC2 Instance Connect 端點和執行個體的安全群組。有關所需安全群組規則的詳細資訊，請參閱 [EC2 Instance Connect 端點的安全群組](eice-security-groups.md)。
+ 執行個體狀態：驗證您的執行個體處於 `running` 狀態。
+ 金鑰對：如果用來連線的命令需要私有金鑰，請確認執行個體具有公有金鑰，且您擁有對應的私有金鑰。
+ IAM 許可：確認您具有所需的 IAM 許可。如需詳細資訊，請參閱[授予許可以使用 EC2 Instance Connect 端點](permissions-for-ec2-instance-connect-endpoint.md)。

如需 Linux 執行個體的更多疑難排解秘訣，請參閱 [對連線至 Amazon EC2 Linux 執行個體的問題進行疑難排解](TroubleshootingInstancesConnecting.md)。如需 Windows 執行個體的疑難排解秘訣，請參閱 [對連線至 Amazon EC2 Windows 執行個體的問題進行疑難排解](troubleshoot-connect-windows-instance.md)。

### 錯誤代碼：AccessDeniedException
<a name="troubleshoot-eice-2"></a>

如果您收到 `AccessDeniedException` 錯誤，且 IAM 政策中已指定 `maxTunnelDuration` 條件，則請務必在連線至執行個體時指定 `--max-tunnel-duration` 參數。如需有關此參數的詳細資訊，請參閱「AWS CLI 命令參考」**中的 [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html)。

# 記錄透過 EC2 Instance Connect 端點建立的連線
<a name="log-ec2-instance-connect-endpoint-using-cloudtrail"></a>

您可以使用 日誌記錄透過 EC2 Instance Connect Endpoint 建立的資源操作和稽核連線 AWS CloudTrail 。

如需 AWS CloudTrail 搭配 Amazon EC2 使用 的詳細資訊，請參閱 [使用 記錄 Amazon EC2 API 呼叫 AWS CloudTrail](monitor-with-cloudtrail.md)。

## 使用 記錄 EC2 Instance Connect Endpoint API 呼叫 AWS CloudTrail
<a name="ec2-instance-connect-endpoint-api-calls-cloudtrail"></a>

EC2 Instance Connect 端點資源操作會以管理事件的形式記錄到 CloudTrail。進行下列 API 呼叫時，活動會作為 CloudTrail 事件記錄在**事件歷史記錄**中：
+ `CreateInstanceConnectEndpoint`
+ `DescribeInstanceConnectEndpoints`
+ `DeleteInstanceConnectEndpoint`

您可以在 中檢視、搜尋和下載最近的事件 AWS 帳戶。如需詳細資訊，請參閱 *AWS CloudTrail 使用者指南*中的 [使用 CloudTrail 事件歷史記錄檢視事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

## 使用 AWS CloudTrail 來稽核使用 EC2 Instance Connect Endpoint 連線至執行個體的使用者
<a name="ec2-instance-connect-endpoint-audit-users-cloudtrail"></a>

透過 EC2 Instance Connect 端點的執行個體連線嘗試會記錄在 CloudTrail 的**事件歷史記錄**中。當透過 EC2 Instance Connect 端點啟動執行個體的連線時，連線會記錄為 CloudTrail 管理事件，具有 `OpenTunnel` 的 `eventName`。

您可以建立將 CloudTrail 事件路由到目標的 Amazon EventBridge 規則。如需詳細資訊，請參閱[「Amazon EventBridge 使用者指南」](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)。

以下是 CloudTrail 中記錄的 `OpenTunnel` 管理事件範例。

```
{
     "eventVersion": "1.08",
     "userIdentity": {
         "type": "IAMUser",
         "principalId": "ABCDEFGONGNOMOOCB6XYTQEXAMPLE",
         "arn": "arn:aws:iam::1234567890120:user/IAM-friendly-name",
         "accountId": "123456789012",
         "accessKeyId": "ABCDEFGUKZHNAW4OSN2AEXAMPLE",
         "userName": "IAM-friendly-name"
     },
     "eventTime": "2023-04-11T23:50:40Z",
     "eventSource": "ec2-instance-connect.amazonaws.com",
     "eventName": "OpenTunnel",
     "awsRegion": "us-east-1",
     "sourceIPAddress": "1.2.3.4",
     "userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60",
     "requestParameters": {
         "instanceConnectEndpointId": "eici-0123456789EXAMPLE",
         "maxTunnelDuration": "3600",
         "remotePort": "22",
         "privateIpAddress": "10.0.1.1"
     },
     "responseElements": null,
     "requestID": "98deb2c6-3b3a-437c-a680-03c4207b6650",
     "eventID": "bbba272c-8777-43ad-91f6-c4ab1c7f96fd",
     "readOnly": false,
     "resources": [{
         "accountId": "123456789012",
         "type": "AWS::EC2::InstanceConnectEndpoint",
         "ARN": "arn:aws:ec2:us-east-1:123456789012:instance-connect-endpoint/eici-0123456789EXAMPLE"
     }],
     "eventType": "AwsApiCall",
     "managementEvent": true,
     "recipientAccountId": "123456789012",
     "eventCategory": "Management"
}
```

# EC2 Instance Connect 端點的服務連結角色
<a name="eice-slr"></a>

Amazon EC2 使用 AWS Identity and Access Management (IAM) [服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)。服務連結角色是直接連結至 Amazon EC2 的一種特殊 IAM 角色類型。服務連結角色是由 Amazon EC2 預先定義，並包含 Amazon EC2 AWS 服務 代表您呼叫其他 所需的所有許可。如需詳細資訊，請參閱「IAM 使用者指南」**中的[服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html)。

## EC2 Instance Connect 端點的服務連結角色許可
<a name="slr-permissions"></a>

Amazon EC2 使用 **AWSServiceRoleForEC2InstanceConnect** 來在您的帳戶中建立和管理 EC2 Instance Connect 端點所需的網路介面。

**AWSServiceRoleForEC2InstanceConnect** 服務連結角色信任下列服務擔任該角色：
+ `ec2-instance-connect.amazonaws.com`

**AWSServiceRoleForEC2InstanceConnect** 服務連結角色使用下列受管政策：
+ **Ec2InstanceConnectEndpoint**

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [Ec2InstanceConnectEndpoint](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2InstanceConnectEndpoint.html)。

## 建立 EC2 Instance Connect 端點的服務連結角色
<a name="create-slr"></a>

您不需要手動建立這個服務連結角色。當您建立EC2 Instance Connect 端點時，Amazon EC2 會為您建立服務連結角色。

## 編輯 EC2 Instance Connect 端點的服務連結角色
<a name="edit-slr"></a>

EC2 Instance Connect 端點不允許您編輯 **AWSServiceRoleForEC2InstanceConnect** 服務連結角色。

## 刪除 EC2 Instance Connect 端點的服務連結角色
<a name="delete-slr"></a>

如果不再需要使用 EC2 Instance Connect 端點，建議您刪除 **AWSServiceRoleForEC2InstanceConnect** 服務連結角色。

您必須刪除所有 EC2 Instance Connect 端點資源，才可以刪除服務連結角色。

若要刪除服務連結角色，請參閱《IAM 使用者指南》**中的[刪除服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete-slr)。

您必須設定許可，IAM 實體 (使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如需詳細資訊，請參閱 *IAM 使用者指南*中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html#service-linked-role-permissions)。

# EC2 Instance Connect 端點配額
<a name="eice-quotas"></a>

您的 AWS 帳戶 具有每個 AWS 服務的預設配額，先前稱為限制。除非另有說明，否則每個配額都是區域特定的。

您的 AWS 帳戶 具有下列與 EC2 Instance Connect Endpoint 相關的配額。


| 名稱 | 預設 | 可調整 | 
| --- | --- | --- | 
|  AWS 帳戶 每個 的 EC2 Instance Connect 端點數目上限 AWS 區域 | 5 | 否 | 
| 每個 VPC 的 EC2 Instance Connect 端點數目上限 | 1 | 否 | 
| 每個子網路的 EC2 Instance Connect 端點數目上限 | 1 | 否 | 
| 每個 EC2 Instance Connect 端點的並行連線數量上限 | 20 | 否 | 