Öffnen Sie mithilfe der manuellen Einrichtung einen Tunnel und stellen Sie eine Verbindung zum Remote-Gerät her - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Öffnen Sie mithilfe der manuellen Einrichtung einen Tunnel und stellen Sie eine Verbindung zum Remote-Gerät her

Wenn Sie einen Tunnel öffnen, können Sie die Quick Setup Methode oder die manuelle Einrichtungsmethode wählen, um einen Tunnel zum Remote-Gerät zu öffnen. Dieses Tutorial zeigt, wie Sie einen Tunnel mithilfe der manuellen Einrichtungsmethode öffnen und den lokalen Proxy konfigurieren und starten, um eine Verbindung zum Remote-Gerät herzustellen.

Wenn Sie die manuelle Einrichtungsmethode verwenden, müssen Sie die Tunnelkonfigurationen bei der Erstellung des Tunnels manuell angeben. Nachdem Sie den Tunnel erstellt haben, können Sie SSH im Browser verwenden oder ein Terminal außerhalb der AWS IoT Konsole öffnen. Dieses Tutorial zeigt, wie Sie das Terminal außerhalb der Konsole verwenden, um auf das Remote-Gerät zuzugreifen. Sie erfahren auch, wie Sie den lokalen Proxy konfigurieren und dann eine Verbindung zum lokalen Proxy herstellen, um mit dem Remote-Gerät zu interagieren. Um eine Verbindung zum lokalen Proxy herzustellen, müssen Sie beim Erstellen des Tunnels das Quellzugriffstoken herunterladen.

Sie können diese Methode verwenden, um über andere Dienste als SSH eine Verbindung zum Remote-Gerät herzustellen. Weitere Informationen zu den verschiedenen Einrichtungsmethoden finden Sie unter Methoden zur Tunneleinrichtung.

Voraussetzungen für die manuelle Einrichtungsmethode

  • Die Firewalls, hinter denen sich das Remote-Gerät befindet, müssen ausgehenden Datenverkehr an Port 443 zulassen. Der Tunnel, den Sie erstellen, verwendet diesen Port, um eine Verbindung zum Remote-Gerät herzustellen.

  • Auf dem Remote-Gerät läuft ein IoT-Geräteagent (sieheIoT-Agent-Snippet), der eine Verbindung zum AWS IoT Gerätegateway herstellt und mit einem MQTT-Themenabonnement konfiguriert ist. Weitere Informationen finden Sie unter Ein Gerät mit dem AWS IoT Geräte-Gateway verbinden.

  • Auf dem Remote-Gerät muss ein SSH-Daemon ausgeführt werden.

  • Sie haben den lokalen Proxy-Quellcode von der Plattform Ihrer Wahl heruntergeladen GitHubund ihn für die Plattform Ihrer Wahl erstellt. In diesem Tutorial verweisen wir auf die erstellte lokale ausführbare Proxy-Datei als localproxy.

Tunnel öffnen

Sie können einen sicheren Tunnel mit dem AWS Management Console, der AWS IoT API-Referenz oder dem öffnen AWS CLI. Sie können optional einen Zielnamen konfigurieren, der für dieses Tutorial jedoch nicht erforderlich ist. Wenn Sie das Ziel konfigurieren, übermittelt Secure Tunneling das Zugriffstoken automatisch mithilfe von MQTT an das Remote-Gerät. Weitere Informationen finden Sie unter Methoden zur Tunnelerstellung in der AWS IoT Konsole.

Um einen Tunnel mit der Konsole zu öffnen,
  1. Gehen Sie zum Tunnel-Hub der AWS IoT -Konsole und wählen Sie Tunnel erstellen.

    AWS IoT Konsole mit einer leeren Liste von Tunneln mit Optionen zum Erstellen, Schließen oder Löschen von Tunneln.
  2. Wählen Sie für dieses Tutorial Manuelle Einrichtungsmethode zur Erstellung des Tunnels und wählen Sie dann Weiter. Informationen zur Verwendung der Quick Setup Methode zum Erstellen eines Tunnels finden Sie unter Öffnen Sie einen Tunnel und verwenden Sie browserbasiertes SSH, um auf das Remote-Gerät zuzugreifen.

    Anmerkung

    Wenn Sie auf der Detailseite eines von Ihnen erstellten Objekts einen sicheren Tunnel erstellen, können Sie wählen, ob Sie einen neuen Tunnel erstellen oder einen vorhandenen verwenden möchten. Weitere Informationen finden Sie unter Öffnen Sie einen Tunnel und verwenden Sie browserbasiertes SSH, um auf das Remote-Gerät zuzugreifen.

    Zwei Optionen für die Einrichtung einer Tunnelverbindung: Quick Setup (SSH) oder Manuelles Setup, das die Konfiguration eines lokalen Proxys und die Verwaltung von Zugriffstoken erfordert.
  3. (Optional) Geben Sie die Konfigurationseinstellungen für Ihren Tunnel ein. Sie können diesen Schritt auch überspringen und mit dem nächsten Schritt fortfahren, um einen Tunnel zu erstellen.

    Geben Sie eine Tunnelbeschreibung, eine Dauer des Tunnel-Timeouts und Ressourcen-Tags als Schlüssel-Wert-Paare ein, um Ihre Ressource leichter identifizieren zu können. Für dieses Tutorial können Sie die Zielkonfiguration überspringen.

    Anmerkung

    Für die Dauer der Offenhaltung eines Tunnels werden Ihnen keine Gebühren in Rechnung gestellt. Gebühren fallen nur an, wenn Sie einen neuen Tunnel erstellen. Preisinformationen finden Sie im Abschnitt Secure Tunneling unter AWS IoT Device Management -Preise.

  4. Laden Sie die Client-Zugriffstoken herunter und wählen Sie dann Fertig aus. Die Token können nicht heruntergeladen werden, nachdem Sie Fertig ausgewählt haben.

    Diese Token können nur einmal verwendet werden, um eine Verbindung zum Tunnel herzustellen. Wenn Sie die Token verlegen oder die Verbindung zum Tunnel unterbrochen wird, können Sie neue Token erzeugen und an Ihr Remote-Gerät senden, um die Verbindung zum Tunnel wiederherzustellen.

    Quell- und Zielzugriffstoken zum Erstellen einer sicheren Tunnelverbindung mit Anweisungen zum Rotieren und erneuten Senden von Token, falls erforderlich.
So öffnen Sie einen Tunnel über die API

Um einen neuen Tunnel zu öffnen, können Sie die OpenTunnelAPI-Operation verwenden. Sie können mithilfe der API auch zusätzliche Konfigurationen angeben, z. B. die Tunneldauer und die Zielkonfiguration.

aws iotsecuretunneling open-tunnel \ --region us-east-1 \ --endpoint https://api.us-east-1.tunneling.iot.amazonaws.com

Wenn Sie diesen Befehl ausführen, wird ein neuer Tunnel erstellt und Sie erhalten die Quell- und Zielzugriffstoken.

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

Tunnelzugriffstoken erneut senden

Die Token, die Sie beim Erstellen eines Tunnels erhalten haben, können nur einmal verwendet werden, um eine Verbindung zum Tunnel herzustellen. Wenn Sie das Zugriffstoken verlegen oder der Tunnel unterbrochen wird, können Sie neue Zugriffstoken mit MQTT ohne zusätzliche Kosten erneut an das Remote-Gerät senden. AWS IoT Sicheres Tunneling widerruft die aktuellen Token und gibt neue Zugriffstoken zurück, um die Verbindung zum Tunnel wiederherzustellen.

Um die Token von der Konsole aus zu rotieren,
  1. Gehen Sie zum Tunnel-Hub der AWS IoT Konsole und wählen Sie den Tunnel aus, den Sie erstellt haben.

  2. Wählen Sie auf der Seite mit den Tunneldetails die Option Neue Zugriffstoken generieren und dann Weiter aus.

  3. Laden Sie die neuen Zugriffstoken für Ihren Tunnel herunter und wählen Sie Fertig. Diese Token können nur einmal verwendet werden. Wenn Sie die Token verlegen oder der Tunnel unterbrochen wird, können Sie neue Zugriffstoken senden, um die Verbindung zum Tunnel wiederherzustellen.

    Zugriffstoken für Quell- und Zielgeräte mit Optionen zum Kopieren oder Herunterladen. In Text wird erklärt, dass durch rotierende Token aktuelle Token gesperrt und neue Einmal-Tokens für die Wiederverbindung eines unterbrochenen Tunnels generiert werden.
So rotieren Sie Zugriffstokens über die API

Um die Tunnelzugriffstoken rotieren zu lassen, können Sie den RotateTunnelAccessTokenAPI-Vorgang verwenden, um die aktuellen Token zu widerrufen und neue Zugriffstoken für die erneute Verbindung mit dem Tunnel zurückzugeben. Mit dem folgenden Befehl werden beispielsweise die Zugriffstoken für das Zielgerät rotiert, RemoteThing1.

aws iotsecuretunneling rotate-tunnel-access-token \ --tunnel-id <tunnel-id> \ --client-mode DESTINATION \ --destination-config thingName=<RemoteThing1>,services=SSH \ --region <region>

Wenn Sie diesen Befehl ausführen, wird das neue Zugriffstoken generiert, siehe folgendes Beispiel. Das Token wird dann über MQTT an das Gerät übermittelt, um eine Verbindung zum Tunnel herzustellen, sofern der Geräteagent korrekt eingerichtet ist.

{ "destinationAccessToken": "destination-access-token", "tunnelArn": "arn:aws:iot:region:account-id:tunnel/tunnel-id" }

Beispiele, die zeigen, wie und wann die Zugriffstoken rotiert werden müssen, finden Sie unter Lösung von Verbindungsproblemen beim AWS IoT sicheren Tunneling durch rotierende Client-Zugriffstoken.

Konfigurieren und Starten des lokalen Proxys

Um eine Verbindung zum Remote-Gerät herzustellen, öffnen Sie ein Terminal auf Ihrem Laptop und konfigurieren und starten Sie den lokalen Proxy. Der lokale Proxy überträgt Daten, die von der auf dem Quellgerät ausgeführten Anwendung gesendet werden, mithilfe von sicherem Tunneling über eine WebSocket sichere Verbindung. Sie können die lokale Proxyquelle von herunterladen. GitHub

Öffnen Sie ein Terminal auf Ihrem Laptop, kopieren Sie das Zugriffstoken für den Quell-Client und starten Sie den lokalen Proxy im Quellmodus. Im Folgenden finden Sie einen Beispielbefehl zum Starten des lokalen Proxys. Im folgenden Befehl ist der lokale Proxy so konfiguriert, dass er auf neue Verbindungen an Port 5555 wartet. In diesem Befehl gilt Folgendes:

  • -rgibt die an AWS-Region, was dieselbe Region sein muss, in der Ihr Tunnel erstellt wurde.

  • -s gibt den Port an, zu dem der Proxy eine Verbindung herstellen soll.

  • -t gibt den Client-Token-Text an.

./localproxy -r us-east-1 -s 5555 -t source-client-access-token

Wenn Sie diesen Befehl ausführen, wird der lokale Proxy im Quellmodus gestartet. Wenn Sie nach der Ausführung des Befehls die folgende Fehlermeldung erhalten, richten Sie den CA-Pfad ein. Weitere Informationen finden Sie unter Lokaler Proxy für sicheres Tunneling auf. GitHub

Could not perform SSL handshake with proxy server: certificate verify failed

Im Folgenden finden Sie eine Beispielausgabe für die Ausführung des lokalen Proxys im source-Modus.

... ... Starting proxy in source mode Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-east-1.amazonaws.com:443 Resolved proxy server IP: 10.10.0.11 Connected successfully with proxy server Performing SSL handshake with proxy server Successfully completed SSL handshake with proxy server HTTP/1.1 101 Switching Protocols ... Connection: upgrade channel-id: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456 upgrade: websocket ... Web socket session ID: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456 Web socket subprotocol selected: aws.iot.securetunneling-2.0 Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-east-1.amazonaws.com:443 Setting up web socket pings for every 5000 milliseconds Scheduled next read: ... Starting web socket read loop continue reading... Resolved bind IP: 127.0.0.1 Listening for new connection on port 5555

Starten einer SSH-Sitzung

Öffnen Sie ein anderes Terminal und verwenden Sie den folgenden Befehl, um eine neue SSH-Sitzung zu starten, indem Sie eine Verbindung zum lokalen Proxy auf Port 5555 herstellen.

ssh username@localhost -p 5555

Möglicherweise werden Sie zur Eingabe eines Passworts für die SSH-Sitzung aufgefordert. Wenn Sie mit der SSH-Sitzung fertig sind, geben Sie exit ein, um die Sitzung zu schließen.

Bereinigen

  • Tunnel schließen

    Wir empfehlen, den Tunnel zu schließen, wenn Sie ihn nicht mehr verwenden. Ein Tunnel kann auch geschlossen werden, wenn er länger als die angegebene Tunneldauer geöffnet blieb. Ein Tunnel kann nicht wieder geöffnet werden, wenn er einmal geschlossen wurde. Sie können einen Tunnel trotzdem duplizieren, indem Sie den geschlossenen Tunnel öffnen und dann Tunnel duplizieren auswählen. Geben Sie die Tunneldauer an, die Sie verwenden möchten, und erstellen Sie dann den neuen Tunnel.

    • Um einen einzelnen Tunnel oder mehrere Tunnel von der AWS IoT -Konsole aus zu schließen, wechseln Sie zum Tunnel-Hub, wählen Sie die Tunnel aus, die Sie schließen möchten, und wählen Sie dann Tunnel schließen aus.

    • Verwenden Sie den API-Vorgang, um einen einzelnen Tunnel oder mehrere Tunnel mithilfe der AWS IoT API-Referenz-API zu schließen. CloseTunnel

      aws iotsecuretunneling close-tunnel \ --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd"
  • Löschen eines Tunnels

    Sie können einen Tunnel dauerhaft aus Ihrem löschen AWS-Konto.

    Warnung

    Dieser Löschvorgang ist dauerhaft und kann nicht rückgängig gemacht werden.

    • Um einen einzelnen Tunnel oder mehrere Tunnel von der AWS IoT -Konsole aus zu löschen, wechseln Sie zum Tunnel-Hub, wählen Sie die Tunnel aus, die Sie löschen möchten, und wählen Sie dann Tunnel löschen aus.

    • Verwenden Sie den API-Vorgang, um einen einzelnen Tunnel oder mehrere Tunnel mithilfe der AWS IoT CloseTunnelAPI-Referenz-API zu löschen. Wenn Sie die API verwenden, setzen Sie das delete-Flag auf true.

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