

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

# 使用 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)。