開啟遠端裝置的通道並使用瀏覽器型 SSH - AWS IoT Core

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

開啟遠端裝置的通道並使用瀏覽器型 SSH

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

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

先決條件

  • 遠端裝置所在的防火牆必須允許連接埠 443 上的傳出流量。您建立的通道將使用此通訊埠連線至遠端裝置。

  • 您已在 AWS IoT 登錄檔中建立 IoT 物件 (例如 RemoteDevice1)。此物件對應於您遠端裝置在雲端中的表示法。如需詳細資訊,請參閱在 AWS IoT 登錄檔中註冊裝置

  • 您有 IoT 裝置代理程式 (請參閱 IoT Agent Snippet) 在連線至 AWS IoT 裝置閘道的遠端裝置上執行,並使用 MQTT 主題訂閱進行設定。如需詳細資訊,請參閱將裝置連線至 AWS IoT 裝置閘道

  • 您必須具有一個在遠端裝置上執行的 SSH 常駐程式。

為遠端裝置開啟新通道

假設您要開啟通道進入遠端裝置:RemoteDevice1。首先,在 AWS IoT 登錄檔中建立名為 RemoteDevice1 的IoT 物件。然後,您可以使用 AWS Management Console、 AWS IoT API 參考 API 或 建立通道 AWS CLI。

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

若要從主控台建立遠端裝置的通道
  1. 選擇物件 RemoteDevice1 以檢視其詳細資訊,然後選擇 Create secure tunnel (建立安全通道)。

    顯示名為「RemoteDevice1」且其 Amazon Resource Name (ARN) 的裝置詳細資訊。
  2. 選擇要建立新通道或是開啟現有通道。若要建立新通道,請選擇 Create new tunnel (建立新通道)。然後,您可以選擇要用快速設定或手動設定方法來建立通道。如需詳細資訊,請參閱使用手動設定開啟通道並連線至遠端裝置開啟通道並使用瀏覽器型 SSH 來存取遠端裝置

若要使用 API 為遠端裝置建立通道

若要開放新的通道,您可以使用 OpenTunnel 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

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

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

若要使用快速設定方法和瀏覽器型 SSH
  1. 前往您所建立物件 RemoteDevice1 的詳細資訊頁面,然後Create secure tunnel ( 建立安全通道)。

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

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

    當您建立通道時,安全通道會使用 RotateTunnelAccessToken API 操作來撤銷原始存取權杖並產生新的存取權杖。如果您的遠端裝置使用 MQTT,這些權杖會自動傳遞至其所訂閱 MQTT 主題的遠端裝置。您也可以選擇手動將這些權杖下載到來源裝置。

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

如需進一步了解快速設定方法和如何使用瀏覽器型 SSH,請參閱 開啟通道並使用瀏覽器型 SSH 來存取遠端裝置

清除

  • 關閉通道

    我們建議您在使用完通道後關閉通道。如果開放時間超過指定的通道持續時間,通道也可能會關閉。通道一旦關閉就不能重新開放。您仍然可以開啟已關閉的通道,然後選擇 Duplicate tunnel (複製通道) 來複製通道。指定您要使用的通道持續時間,然後建立新通道。

    • 若要從 AWS IoT 主控台關閉個別通道或多個通道,請移至 Tunnels hub (通道中樞),選擇您要關閉的通道,然後選擇Close tunnel (關閉通道)。

    • 若要使用 AWS IoT API 參考 API 關閉個別通道或多個通道,請使用 CloseTunnel API。

      aws iotsecuretunneling close-tunnel \ --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd"
  • 刪除通道

    您可以從 永久刪除通道 AWS 帳戶。

    警告

    刪除動作為永久性動作,且無法還原。

    • 若要從 AWS IoT 主控台刪除個別通道或多個通道,請移至 Tunnels hub (通道中樞),選擇您要刪除的通道,然後選擇Delete tunnel (刪除通道)。

    • 若要使用 AWS IoT API 參考 API 刪除個別通道或多個通道,請使用 CloseTunnel API。使用 API 時,請將 delete 旗標設定為 true

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