

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

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