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

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

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

您可以使用快速設定或手動設定方法來建立通道。本教學課程說明如何使用快速設定方法開啟通道,並使用瀏覽器型 SSH 連線至遠端裝置。如需查看如何使用手動設定方法來開啟通道的範例,請參閱 使用手動設定開啟通道並連線至遠端裝置

您可以透過快速設定方法,使用可編輯的預設組態建立新的通道。已為您設定 Web 型本機代理,並使用 MQTT 將存取權杖自動傳遞到您的遠端目的地裝置。建立通道後,您可以使用主控台內的命令列介面開始與遠端裝置互動。

若採用快速設定方法,您必須使用 SSH 作為目的地服務才能存取遠端裝置。如需不同設定方法的詳細資訊,請參閱 通道設定方法

快速設定方法的先決條件

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

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

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

開啟通道

您可以使用 AWS Management Console AWS IoT API 參考或 AWS CLI. 您可以選擇設定目的地名稱,但這並非本教學課程的必要步驟。如果您設定目的地,安全通道會使用 MQTT 自動將存取權杖傳遞至遠端裝置。如需詳細資訊,請參閱 AWS IoT 控制台中的隧道創建方法

若要使用主控台中開啟通道
  1. 前往 AWS IoT 主控台的 Tunnels hub (通道中樞),然後選擇 Create job (建立通道)。

    AWS IoT 控制台顯示通道的空列表,其中包含創建,關閉或刪除隧道的選項。
  2. 在本教學課程中,請選擇 Quick setup (快速設定) 作為通道建立方法,然後選擇 Next (下一步)。

    注意

    如果您從建立物件的詳細資訊頁面建立安全通道,您可以選擇要建立新通道或使用現有通道。如需詳細資訊,請參閱 開啟遠端裝置的通道並使用瀏覽器型 SSH

    設置方法部分包含使用 SSH 或手動設置快速設置的選項,解釋了快速設置自動配置代理和訪問令牌。
  3. 檢閱並確認通道組態詳細資訊。若要建立通道,請選擇 Confirm and create (確認並建立)。如果您要編輯這些詳細資訊,請選擇 Previous (上一步) 返回上一頁,然後確認並建立通道。

    注意

    使用快速設定時,將無法編輯服務名稱。您必須使用 SSH 作為服務

  4. 若要建立通道,請選擇 Done (完成)。

    在本教學課程中,您無需下載來源或目的地存取權杖。這些權杖只能用於連接通道一次。如果您的通道中斷連線,您可以產生新權杖並將其傳送到遠端裝置,以重新連線至通道。如需詳細資訊,請參閱 重新傳送通道存取權杖

    一個對話框,顯示用於創建安全隧道連接的源和目的地訪問令牌,並在需要時提供有關旋轉和重新發送令牌的說明。
若要使用主控台中開啟通道

若要開啟新的通道,您可以使用 OpenTunnelAPI 作業。

注意

您只能從 AWS IoT 主控台使用快速設定方法建立通道。當您使用 AWS IoT API 參考 API 或時 AWS CLI,它將使用手動設定方法。您可以開啟您所建立的現有通道,然後變更通道的設定方法,即可使用快速設定。如需詳細資訊,請參閱 開啟現有的通道並使用瀏覽器型 SSH

關於如何執行此 API 操作的範例如下所示。如果您要指定物件名稱和目的地服務,也可以選擇使用 DestinationConfig 參數。如需示範如何使用這個參數的範例,請參閱 為遠端裝置開啟新通道

aws iotsecuretunneling open-tunnel

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

{ "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

在使用快速設定方法建立通道並且目的地裝置已連線至通道後,您就可以使用瀏覽器型 SSH 存取遠端裝置。透過瀏覽器型 SSH,您可以在主控台內的上下文命令列介面中輸入命令,即可直接與遠端裝置進行通訊。此功能可讓您更輕鬆地與遠端裝置互動,因為您不必在主控台外開啟終端或設定本機代理。

若要使用瀏覽器型 SSH
  1. 前往 AWS IoT 主控台的 Tunnels hub (通道中樞),然後選擇您建立的通道以檢視其詳細資訊。

  2. 展開 Secure Shell (SSH) 區段,然後選擇 Connect (連線)。

  3. 選擇是否要提供您的使用者名稱和密碼來驗證 SSH 連線,或者如需更安全的驗證,則可以使用裝置的私有金鑰。如果您使用私密金鑰進行驗證,您可以使用 PEM (PKCS#1, PKCS#8) 和 OpenSSH 格式的 RSA、DSA、ECDSA (nistp-*) 和 ED25519 金鑰類型。

    • 若要使用使用者名稱和密碼進行連線,請選擇 Use password (使用密碼)。然後,您可以輸入使用者名稱和密碼,並開始使用瀏覽器內的 CLI。

    • 若要使用目的地裝置的私有金鑰進行連線,請選擇 Use private key (使用私有金鑰)。指定您的使用者名稱並上傳裝置的私有金鑰檔案,然後選擇 Connect (連線) 以開始使用瀏覽器內 CLI。

      [表單] 對話方塊可透過瀏覽器 CLI 與私密金鑰連線,顯示使用者名稱欄位以及選擇或使用預先選取的私密金鑰檔案的選項。

在通過 SSH 連接驗證後,您即可迅速開始使用瀏覽器 CLI 輸入命令並與裝置進行互動,因為系統已為您設定本機代理。

顯示 React 掛鉤的代碼片段,用於管理應 JavaScript 用程序中的狀態和首選項。

如果瀏覽器 CLI 在通道持續時間之後保持開啟狀態,則可能會發生逾時,導致命令列介面中斷連線。您可以複製通道並啟動另一工作階段,以便在主控台本身內部與遠端裝置互動。

解決使用瀏覽器型 SSH 時發生的問題

以下介紹如何解決使用瀏覽器型 SSH 時可能發生的一些問題。

  • 系統顯示錯誤,而不是命令列介面

    您可能會看到錯誤,原因是目的地裝置中斷連線。您可以選擇 Generate new access tokens (產生新的存取權杖) 來產生新的存取權杖,並使用 MQTT 將權杖傳送到遠端裝置。新的權杖可以用來重新連線至通道。重新連線至通道會清除歷程記錄並重新整理命令列工作階段。

  • 使用私有金鑰進行驗證時,您會看到通道中斷連線的錯誤

    您可能會看到錯誤訊息,原因可能是目的地裝置尚未接受您的私有金鑰。若要解決此錯誤,請檢查您上傳用於進行驗證的私有金鑰檔案。如果仍然看到錯誤,請檢查您的裝置日誌。您也可以向遠端裝置發送新的存取權杖,藉此嘗試重新連線至通道。

  • 您的通道已在使用工作階段時關閉

    如果您的通道因保持開啟超過指定持續時間而關閉,則您的命令列工作階段可能會中斷連線。通道一旦關閉就不能重新開放。若要重新連線,您必須開啟另一個連往裝置的通道。

    您可以複製通道,以建立與已關閉通道相同組態的新通道。您可以從 AWS IoT 主控台複製封閉的通道。若要複製通道,請選擇已關閉的通道以檢視其詳細資訊,然後選擇 Duplicate tunnel (複製通道)。指定您要使用的通道持續時間,然後建立新通道。

清除

  • 關閉通道

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

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

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

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

    您可以從您的 AWS 帳戶.

    警告

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

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

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

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