

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

# 開啟遠端裝置的通道並使用瀏覽器型 SSH
<a name="tunneling-tutorial-existing-tunnel"></a>

從 AWS IoT 主控台，您可以從 **Tunnels 中樞**或您所建立 IoT 物件的詳細資訊頁面建立通道。當您從 **Tunnel** hub (通道中樞)建立通道，可以指定要使用快速設定或手動設定來建立通道。如需教學課程範例，請參閱[開啟通道並啟動遠端裝置的 SSH 工作階段](secure-tunneling-tutorial-open-tunnel.md)。

當您從 AWS IoT 主控台的物件詳細資訊頁面建立通道時，您也可以指定要為該物件建立新通道或開啟現有的通道，如本教學課程所示。如果您選擇現有通道，則可以存取您為此裝置建立的最新開放通道。然後，您可以使用終端中的命令行介面 SSH 進入設備。

## 先決條件
<a name="tunneling-tutorial-existing-prerequisites"></a>
+ 遠端裝置所在的防火牆必須允許連接埠 443 上的傳出流量。您建立的通道將使用此通訊埠連線至遠端裝置。
+ 您已在 AWS IoT 登錄檔中建立 IoT 物件 （例如 `RemoteDevice1`)。此物件對應於您遠端裝置在雲端中的表示法。如需詳細資訊，請參閱[在 AWS IoT 登錄檔中註冊裝置](https://docs.aws.amazon.com/iot/latest/developerguide/register-device.html)。
+ 您有 IoT 裝置代理程式 （請參閱 [IoT Agent Snippet](configure-remote-device.md#agent-snippet)) 在連線至 AWS IoT 裝置閘道的遠端裝置上執行，並使用 MQTT 主題訂閱設定。如需詳細資訊，請參閱[將裝置連線至 AWS IoT 裝置閘道](https://docs.aws.amazon.com/iot/latest/developerguide/sdk-tutorials.html)。
+ 您必須具有一個在遠端裝置上執行的 SSH 常駐程式。

## 為遠端裝置開啟新通道
<a name="tunneling-tutorial-existing-open-tunnel"></a>

假設您要開啟通道進入遠端裝置：`RemoteDevice1`。首先，在 AWS IoT 登錄檔中建立名為 `RemoteDevice1` 的IoT 物件。然後，您可以使用 AWS 管理主控台、 AWS IoT API 參考 API 或 建立通道 AWS CLI。

如果您在鍵例通道時設定目的地，安全通道服務會透過 MQTT 和保留的 MQTT 主題 (`$aws/things/RemoteDeviceA/tunnels/notify`)，將目的地用戶端存取權杖傳遞給遠端裝置。如需詳細資訊，請參閱[AWS IoT 主控台中的通道建立方法](secure-tunneling-tutorial-open-tunnel.md#tunneling-tutorial-flows)。

**若要從主控台建立遠端裝置的通道**

1. 選擇物件 `RemoteDevice1` 以檢視其詳細資訊，然後選擇 **Create secure tunnel** (建立安全通道)。  
![顯示名為「RemoteDevice1」且其 Amazon Resource Name (ARN) 的裝置詳細資訊。](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/images/tunnel-create-thing.PNG)

1. 選擇要建立新通道或是開啟現有通道。若要建立新通道，請選擇 **Create new tunnel** (建立新通道)。然後，您可以選擇要用快速設定或手動設定方法來建立通道。如需詳細資訊，請參閱[使用手動設定開啟通道並連線至遠端裝置](tunneling-tutorial-manual-setup.md)及[開啟通道並使用瀏覽器型 SSH 來存取遠端裝置](tunneling-tutorial-quick-setup.md)。

**若要使用 API 為遠端裝置建立通道**  
若要開放新的通道，您可以使用 [OpenTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_OpenTunnel.html) API 操作。以下程式碼顯示執行此命令的範例。

```
aws iotsecuretunneling open-tunnel \ 
    --region {{us-east-1}} \ 
    --endpoint https://api.{{us-east-1}}.tunneling.iot.amazonaws.com
    --cli-input-json {{file://input.json}}
```

下列下顯示 `input.json` 檔案的內容。您可以使用 `destinationConfig` 參數來指定目的地裝置的名稱 (例如 `{{RemoteDevice1}}`) 以及要用來存取目的地裝置的服務，例如 `{{SSH}}`。您亦可選擇指定其他參數，如通道描述和標籤。

**input.json 的內容**

```
{
   "description": "{{Tunnel to remote device1}}",
   "destinationConfig": { 
      "services": [ "{{SSH}}" ],
      "thingName": "{{RemoteDevice1}}"
   }
}
```

執行此命令會建立新的通道，並提供您來源和目的地存取權杖。

```
{
    "tunnelId": "01234567-89ab-0123-4c56-789a01234bcd",
    "tunnelArn": "arn:aws:iot:{{us-east-1}}:{{123456789012}}:tunnel/01234567-89ab-0123-4c56-789a01234bcd",
    "sourceAccessToken": "{{<SOURCE_ACCESS_TOKEN>}}",
    "destinationAccessToken": "{{<DESTINATION_ACCESS_TOKEN>}}"
}
```

## 開啟現有的通道並使用瀏覽器型 SSH
<a name="tunneling-tutorial-existing-convert-tunnel"></a>

假設您已`RemoteDevice1`使用手動設定方法或使用 AWS IoT API 參考 API，為遠端裝置 建立通道。此時您即可開啟裝置的現有通道，並選擇 **Quick setup** (快速設定) 以使用瀏覽器型 SSH 功能。現有通道的組態無法編輯，因此您無法使用手動設定方法。

若要使用瀏覽器型 SSH 功能，您不必下載來源存取權杖或設定本機代理。Web 型本機代理將為您自動設定，以便您開始與遠端裝置進行互動。

**若要使用快速設定方法和瀏覽器型 SSH**

1. 前往您所建立物件 `RemoteDevice1` 的詳細資訊頁面，然後**Create secure tunnel** ( 建立安全通道)。

1. 選擇 **Use existing tunnel** (使用現有通道)，開啟您為遠端裝置所建立的最新開放通道。無法編輯通道組態，因此您無法對通道使用手動設定方法。若要使用快速設定方法，請選擇 **Quick setup** (快速設定)。

1. 繼續檢閱，確認通道組態詳細資訊，並建立通道。通道組態不可編輯。

   當您建立通道時，安全通道會使用 [RotateTunnelAccessToken](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_RotateTunnelAccessToken.html) API 操作來撤銷原始存取權杖並產生新的存取權杖。如果您的遠端裝置使用 MQTT，這些權杖會自動傳遞至其所訂閱 MQTT 主題的遠端裝置。您也可以選擇手動將這些權杖下載到來源裝置。

建立通道之後，您可以使用瀏覽器型 SSH，透過上下文命令列介面，直接從主控台與遠端裝置互動。若要使用此命令行介面，請選擇您所建立物件的通道，然後在詳細資訊頁面中展開 **Command-line interface** (命令行介面) 區段。由於已為您配置本機代理，因此您可以開始輸入命令以迅速開始存取遠端裝置並與其進行互動`RemoteDevice1`。

如需進一步了解快速設定方法和如何使用瀏覽器型 SSH，請參閱 [開啟通道並使用瀏覽器型 SSH 來存取遠端裝置](tunneling-tutorial-quick-setup.md)。

## 清除
<a name="tunnel-cleanup-existing"></a>
+ 

**關閉通道**  
我們建議您在使用完通道後關閉通道。如果開放時間超過指定的通道持續時間，通道也可能會關閉。通道一旦關閉就不能重新開放。您仍然可以開啟已關閉的通道，然後選擇 **Duplicate tunnel** (複製通道) 來複製通道。指定您要使用的通道持續時間，然後建立新通道。
  + 若要從 AWS IoT 主控台關閉個別通道或多個通道，請移至 [Tunnels hub](https://console.aws.amazon.com/iot/home#/tunnels) (通道中樞)，選擇您要關閉的通道，然後選擇**Close tunnel** (關閉通道)。
  + 若要使用 AWS IoT API 參考 API 關閉個別通道或多個通道，請使用 [CloseTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html) API。

    ```
    aws iotsecuretunneling close-tunnel \ 
        --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd"
    ```
+ 

**刪除通道**  
您可以從 永久刪除通道 AWS 帳戶。
**警告**  
刪除動作為永久性動作，且無法還原。
  + 若要從 AWS IoT 主控台刪除個別通道或多個通道，請移至 [Tunnels hub](https://console.aws.amazon.com/iot/home#/tunnels) (通道中樞)，選擇您要刪除的通道，然後選擇**Delete tunnel** (刪除通道)。
  + 若要使用 AWS IoT API 參考 API 刪除個別通道或多個通道，請使用 [CloseTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html) API。使用 API 時，請將 `delete` 旗標設定為 `true`。

    ```
    aws iotsecuretunneling close-tunnel \ 
        --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd"
        --delete true
    ```