

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.

# AWS IoT sicheres Tunneling
<a name="secure-tunneling"></a>

Wenn Geräte hinter eingeschränkten Firewalls an Remote-Standorten bereitgestellt werden, brauchen Sie für die Fehlerbehebung, Konfigurationsupdates und andere betriebliche Aufgaben eine Zugriffsmöglichkeit auf diese Geräte. Verwenden Sie sicheres Tunneling, um eine bidirektionale Kommunikation mit Remotegeräten über eine sichere Verbindung herzustellen, die von verwaltet wird. AWS IoT Für Secure Tunneling sind keine Aktualisierungen der vorhandenen eingehenden Firewallregel erforderlich, sodass Sie die gleiche Sicherheitsstufe beibehalten können, die von Firewallregeln an einem Remote-Standort bereitgestellt wird.

Beispiel: Ein Sensorgerät, das sich in einer Fabrik befindet, die ein paar hundert Kilometer entfernt ist, hat Probleme bei der Messung der Temperatur in der Fabrik. Sie können Secure Tunneling verwenden, um eine Sitzung mit diesem Sensorgerät zu öffnen und schnell zu starten. Nachdem Sie das Problem identifiziert haben (z. B. eine fehlerhafte Konfigurationsdatei), können Sie die Datei zurücksetzen und das Sensorgerät über dieselbe Sitzung neu starten. Im Vergleich zu herkömmlichen Fehlerbehebungen (z. B. beim Senden eines Technikers zur Fabrik, um das Sensorgerät zu untersuchen) senkt Secure Tunneling die Reaktionszeit, die Wiederherstellungszeit und die Betriebskosten.

# Was ist Secure Tunneling?
<a name="secure-tunneling-what-is"></a>

Verwenden Sie Secure Tunneling, um auf Geräte zuzugreifen, die hinter portbeschränkten Firewalls an entfernten Standorten installiert sind. Sie können von Ihrem Laptop oder Desktop-Computer als Quellgerät aus eine Verbindung zum Zielgerät herstellen, indem Sie den AWS Cloud verwenden. Quelle und Ziel kommunizieren über einen lokalen Open-Source-Proxy, der auf jedem Gerät ausgeführt wird. Der lokale Proxy kommuniziert mit dem über einen offenen Port, der AWS Cloud von der Firewall zugelassen wird, normalerweise 443. Daten, die durch den Tunnel übertragen werden, werden mittels Transported Layer Security (TLS) verschlüsselt.

**Topics**
+ [Secure Tunneling-Konzepte](secure-tunneling-concepts.md)
+ [Wie funktioniert Secure Tunneling](how-secure-tunneling-works.md)
+ [Sicherer Tunnellebenszyklus](tunnel-lifecycle.md)

# Secure Tunneling-Konzepte
<a name="secure-tunneling-concepts"></a>

Die folgenden Begriffe werden beim Secure Tunneling verwendet, wenn die Kommunikation mit Remote-Geräten hergestellt wird. Weitere Informationen zum Einrichten eines sicheren Tunnels finden Sie unter [Wie funktioniert Secure Tunneling](how-secure-tunneling-works.md).

**Client-Zugriffstoken (CAT)**  
Ein Token-Paar, das durch Secure Tunneling generiert wird, wenn ein neuer Tunnel erstellt wird. Das CAT wird von den Quell- und Zielgeräten verwendet, um eine Verbindung mit dem Secure-Tunneling-Service herzustellen. Das CAT kann nur einmal verwendet werden, um eine Verbindung zum Tunnel herzustellen. Um die Verbindung zum Tunnel wiederherzustellen, rotieren Sie die Client-Zugriffstoken mithilfe der [RotateTunnelAccessToken](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_RotateTunnelAccessToken.html)API-Operation oder des [rotate-tunnel-access-token](https://docs.aws.amazon.com/cli/latest/reference/iotsecuretunneling/rotate-tunnel-access-token.html)CLI-Befehls.

**Client-Token**  
Ein vom Client generierter eindeutiger Wert, den AWS IoT Secure Tunneling für alle nachfolgenden Wiederholungsverbindungen zu demselben Tunnel verwenden kann. Dies ist ein optionales Feld. Wenn das Client-Token nicht bereitgestellt wird, kann das Client-Zugriffstoken (CAT) nur einmal für denselben Tunnel verwendet werden. Nachfolgende Verbindungsversuche mit demselben CAT werden abgewiesen. Weitere Informationen zur Verwendung von Client-Token finden Sie in der [Referenzimplementierung für lokale Proxys](https://github.com/aws-samples/aws-iot-securetunneling-localproxy/blob/master/V2WebSocketProtocolGuide.md) unter. GitHub

**Zielanwendung**  
Die Anwendung, die auf dem Zielgerät ausgeführt wird. Beispielsweise kann die Zielanwendung ein SSH-Daemon für die Einrichtung einer SSH-Sitzung mit Secure Tunneling sein.

**Zielgerät**  
Das Remote-Gerät, auf das Sie zugreifen möchten.

**Geräte-Agent**  
Eine IoT-Anwendung, die eine Verbindung zum AWS IoT Geräte-Gateway herstellt und über MQTT auf neue Tunnelbenachrichtigungen wartet. Weitere Informationen finden Sie unter [IoT-Agent-Snippet](configure-remote-device.md#agent-snippet).

**Lokaler Proxy**  
Ein Software-Proxy, der auf den Quell- und Zielgeräten ausgeführt wird und einen Datenstrom zwischen dem Secure Tunneling-Service und der Geräteanwendung ermöglicht. Der lokale Proxy kann im Quell- oder Zielmodus ausgeführt werden. Weitere Informationen finden Sie unter [Lokaler Proxy](local-proxy.md).

**Quellgerät**  
Das Gerät, das ein Bediener verwendet, um eine Sitzung mit dem Zielgerät zu initiieren, normalerweise ein Laptop oder Desktop-Computer.

**Tunnel**  
 Ein logischer Pfad AWS IoT , der die bidirektionale Kommunikation zwischen einem Quellgerät und einem Zielgerät ermöglicht.

# Wie funktioniert Secure Tunneling
<a name="how-secure-tunneling-works"></a>

Im Folgenden wird gezeigt, wie Secure Tunneling eine Verbindung zwischen Ihrem Quell- und Zielgerät herstellt. Informationen zu den verschiedenen Begriffen wie Client-Zugriffstoken (CAT) finden Sie unter. [Secure Tunneling-Konzepte](secure-tunneling-concepts.md)

1. 

**Tunnel öffnen**  
[Um einen Tunnel für die Initiierung einer Sitzung mit Ihrem Remote-Zielgerät zu öffnen, können Sie den AWS-Managementkonsole Befehl [AWS CLI open-tunnel](https://docs.aws.amazon.com/cli/latest/reference/iotsecuretunneling/open-tunnel.html) oder die API verwenden. OpenTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_OpenTunnel)

1. 

**Client-Zugriffstokenpaar herunterladen**  
Nachdem Sie einen Tunnel geöffnet haben, können Sie das Client-Zugriffstoken (CAT) für Ihre Quelle und Ihr Ziel herunterladen und auf Ihrem Quellgerät speichern. Sie müssen das CAT jetzt abrufen und speichern, bevor Sie den lokalen Proxy starten können.

1. 

**Lokalen Proxy im Zielmodus starten**  
Der IoT-Agent, der auf Ihrem Zielgerät installiert wurde und läuft, abonniert das reservierte MQTT-Thema `$aws/things/thing-name/tunnels/notify` und erhält das CAT. Hier *thing-name* ist der Name der AWS IoT Sache, die Sie für Ihr Ziel erstellen. Weitere Informationen finden Sie unter [Themen zu Secure Tunneling](reserved-topics.md#reserved-topics-secure).

   Der IoT-Agent verwendet dann das CAT, um den lokalen Proxy im Zielmodus zu starten und eine Verbindung auf der Zielseite des Tunnels einzurichten. Weitere Informationen finden Sie unter [IoT-Agent-Snippet](configure-remote-device.md#agent-snippet).

1. 

**Lokalen Proxy im Quellmodus starten**  
 AWS IoT Device Management Stellt nach dem Öffnen des Tunnels den CAT für die Quelle bereit, den Sie auf das Quellgerät herunterladen können. Sie können das CAT verwenden, um den lokalen Proxy im Quellmodus zu starten, der dann die Quellseite des Tunnels verbindet. Weitere Informationen zum lokalen Proxy finden Sie unter [Lokaler Proxy](local-proxy.md).

1. 

**Eine SSH-Sitzung öffnen**  
Da beide Seiten des Tunnels verbunden sind, können Sie eine SSH-Sitzung starten, indem Sie den lokalen Proxy auf der Quellseite verwenden.

Weitere Informationen zur Verwendung des zum Öffnen eines Tunnels und AWS-Managementkonsole zum Starten einer SSH-Sitzung finden Sie unter[Öffnen Sie einen Tunnel und starten Sie eine SSH-Sitzung zum Remote-Gerät](secure-tunneling-tutorial-open-tunnel.md).

 Das folgende Video beschreibt, wie Secure Tunneling funktioniert, und führt Sie durch den Prozess der Einrichtung einer SSH-Sitzung zu einem Raspberry Pi-Gerät.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/Vq67jKZTR-c/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/Vq67jKZTR-c)


# Sicherer Tunnellebenszyklus
<a name="tunnel-lifecycle"></a>

Tunnel können den Status `OPEN` oder `CLOSED` haben. Verbindungen zum Tunnel können den Status `CONNECTED` oder `DISCONNECTED` haben. Im Folgenden wird gezeigt, wie die verschiedenen Tunnel- und Verbindungsstatus funktionieren.

1. Wenn Sie einen Tunnel öffnen, hat er den Status `OPEN`. Der Quell- und Zielverbindungsstatus des Tunnels ist auf `DISCONNECTED` eingestellt.

1. Wenn sich ein Gerät (Quelle oder Ziel) mit dem Tunnel verbindet, ändert sich der zugehörige Verbindungsstatus in `CONNECTED`.

1. Wenn ein Gerät die Verbindung zum Tunnel trennt, während der Tunnelstatus `OPEN` bleibt, wechselt der entsprechende Verbindungsstatus wieder auf `DISCONNECTED`. Ein Gerät kann wiederholt eine Verbindung zu einem Tunnel herstellen und diese trennen, solange der Tunnel `OPEN` bleibt.
**Anmerkung**  
Das Client-Zugriffstoken (CAT) kann nur einmal verwendet werden, um eine Verbindung zum Tunnel herzustellen. Um die Verbindung zum Tunnel wiederherzustellen, rotieren Sie die Client-Zugriffstoken mithilfe der [RotateTunnelAccessToken](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_RotateTunnelAccessToken.html)API-Operation oder des [rotate-tunnel-access-token](https://docs.aws.amazon.com/cli/latest/reference/iotsecuretunneling/rotate-tunnel-access-token.html)CLI-Befehls. Beispiele finden Sie unter [Lösung von Verbindungsproblemen beim AWS IoT sicheren Tunneling durch rotierende Client-Zugriffstoken](iot-secure-tunneling-troubleshooting.md).

1. Wenn Sie `CloseTunnel` aufrufen oder der Tunnel `OPEN` verbleibt und zwar länger als der `MaxLifetimeTimeout` -Wert, wird der Status eines Tunnels zu `CLOSED`. Sie können `MaxLifetimeTimeout` beim Aufruf von `OpenTunnel` konfigurieren. `MaxLifetimeTimeout` ist standardmäßig 12 Stunden, wenn Sie keinen Wert angeben.
**Anmerkung**  
Ein Tunnel kann nicht wieder geöffnet werden, wenn er `CLOSED` ist.

1. Während der Tunnel sichtbar ist, können Sie `DescribeTunnel` und `ListTunnels` aufrufen, um Tunnelmetadaten anzuzeigen. Der Tunnel kann mindestens drei Stunden lang in der AWS IoT Konsole sichtbar sein, bevor er gelöscht wird. 

# AWS IoT Tutorials zum sicheren Tunneling
<a name="secure-tunneling-tutorial"></a>

AWS IoT Secure Tunneling hilft Kunden dabei, eine bidirektionale Kommunikation mit Remote-Geräten, die sich hinter einer Firewall befinden, über eine sichere Verbindung herzustellen, die von verwaltet wird. AWS IoT

[Um AWS IoT sicheres Tunneling zu demonstrieren, verwenden Sie unsere AWS IoT Demo für sicheres Tunneling unter. GitHub](https://github.com/aws-samples/iot-secure-tunneling-demo)

In den folgenden Tutorials erfahren Sie, wie Sie mit Secure Tunneling beginnen und wie Sie es verwenden können. Sie lernen, wie Sie:

1. Einen sicheren Tunnel mithilfe des Quick Setups und der manuellen Einrichtung für den Zugriff auf das Remote-Gerät erstellen.

1. Den lokalen Proxy konfigurieren, wenn Sie die manuelle Einrichtungsmethode verwenden, und eine Verbindung zum Tunnel herstellen, um auf das Zielgerät zuzugreifen.

1. Über einen Browser eine SSH-Verbindung zum Remote-Gerät herstellen, ohne den lokalen Proxy konfigurieren zu müssen.

1. Konvertieren Sie einen Tunnel, der mit der AWS CLI oder mit der manuellen Einrichtungsmethode erstellt wurde, in die Schnelleinrichtungsmethode.

## Tutorials in diesem Abschnitt
<a name="tunneling-tutorial-overview"></a>

Die Tutorials in diesem Abschnitt konzentrieren sich auf die Erstellung eines Tunnels mithilfe der AWS-Managementkonsole und der AWS IoT API-Referenz. In der AWS IoT Konsole können Sie einen Tunnel von der [Tunnel-Hub-Seite](https://console.aws.amazon.com/iot/home#/tunnels) oder von der Detailseite eines von Ihnen erstellten Objekts aus erstellen. Weitere Informationen finden Sie unter [Methoden zur Tunnelerstellung in der AWS IoT Konsole](secure-tunneling-tutorial-open-tunnel.md#tunneling-tutorial-flows).

Dieser Abschnitt enthält die folgenden Tutorials:
+ 

**[Öffnen Sie einen Tunnel und verwenden Sie browserbasiertes SSH, um auf das Remote-Gerät zuzugreifen](tunneling-tutorial-quick-setup.md)**  
Dieses Tutorial zeigt, wie Sie mithilfe von Quick Setup einen Tunnel von der [Tunnel-Hub](https://console.aws.amazon.com/iot/home#/tunnels)-Seite aus öffnen. Außerdem erfahren Sie, wie Sie browserbasiertes SSH verwenden, um über eine kontextabhängige Befehlszeilenschnittstelle in der Konsole auf das Remote-Gerät zuzugreifen. AWS IoT 

  
+ 

**[Öffnen Sie mithilfe der manuellen Einrichtung einen Tunnel und stellen Sie eine Verbindung zum Remote-Gerät her](tunneling-tutorial-manual-setup.md)**  
Dieses Tutorial zeigt, wie Sie mithilfe der manuellen Einrichtungsmethode einen Tunnel von der [Tunnel-Hub](https://console.aws.amazon.com/iot/home#/tunnels)-Seite aus öffnen. Sie lernen auch, wie Sie den lokalen Proxy von einem Terminal auf Ihrem Quellgerät aus konfigurieren und starten und eine Verbindung zum Tunnel herstellen.
+ 

**[Öffnen Sie einen Tunnel und verwenden Sie browserbasiertes SSH, um auf das Remote-Gerät zuzugreifen](tunneling-tutorial-existing-tunnel.md)**  
Dieses Tutorial zeigt, wie Sie einen Tunnel von der Detailseite eines Objekts aus öffnen, das Sie erstellt haben. Sie lernen, wie Sie einen neuen Tunnel erstellen und einen vorhandenen verwenden. Der bestehende Tunnel entspricht dem letzten offenen Tunnel, der für das Gerät erstellt wurde. Sie können auch das browserbasierte SSH verwenden, um auf das Remote-Gerät zuzugreifen.

**Topics**
+ [Tutorials in diesem Abschnitt](#tunneling-tutorial-overview)
+ [Öffnen Sie einen Tunnel und starten Sie eine SSH-Sitzung zum Remote-Gerät](secure-tunneling-tutorial-open-tunnel.md)
+ [Öffnen Sie einen Tunnel und verwenden Sie browserbasiertes SSH, um auf das Remote-Gerät zuzugreifen](tunneling-tutorial-existing-tunnel.md)

# Öffnen Sie einen Tunnel und starten Sie eine SSH-Sitzung zum Remote-Gerät
<a name="secure-tunneling-tutorial-open-tunnel"></a>

In diesen Tutorials lernen Sie, wie Sie per Fernzugriff auf ein Gerät zugreifen können, das sich hinter einer Firewall befindet. Sie können keine direkte SSH-Sitzung auf dem Gerät starten, da die Firewall den gesamten eingehenden Datenverkehr blockiert. Die Tutorials zeigen Ihnen, wie Sie einen Tunnel öffnen und diesen Tunnel dann verwenden können, um eine SSH-Sitzung zu einem Remote-Gerät zu starten.

## Voraussetzungen für das Tutorial
<a name="tunneling-tutorial-prerequisites"></a>

Die Voraussetzungen für die Ausführung des Tutorials können variieren, je nachdem, ob Sie die manuelle oder die Quick Setup Methode für das Öffnen eines Tunnels und den Zugriff auf das Remote-Gerät verwenden. 

**Anmerkung**  
Für beide Einrichtungsmethoden müssen Sie ausgehenden Datenverkehr auf Port 443 zulassen. 
+ Informationen zu den Voraussetzungen für das Tutorial zur Quick Setup Methode finden Sie unter [Voraussetzungen für die Quick Setup Methode](tunneling-tutorial-quick-setup.md#tunneling-tutorial-quick-prerequisites).
+ Informationen zu den Voraussetzungen für das Tutorial zur manuellen Einrichtungsmethode finden Sie unter [Voraussetzungen für die manuelle Einrichtungsmethode](tunneling-tutorial-manual-setup.md#tunneling-tutorial-manual-prerequisites). Wenn Sie diese Einrichtungsmethode verwenden, müssen Sie den lokalen Proxy auf Ihrem Quellgerät konfigurieren. Informationen zum Herunterladen des lokalen Proxyquellcodes finden Sie unter [Referenzimplementierung für lokale Proxys auf. GitHub](https://github.com/aws-samples/aws-iot-securetunneling-localproxy)

## Methoden zur Tunneleinrichtung
<a name="tunneling-tutorial-setup-methods"></a>

In diesen Tutorials erfahren Sie mehr über die manuellen und Quick Setup Methoden zum Öffnen eines Tunnels und zum Herstellen einer Verbindung zum Remote-Gerät. In der folgenden Tabelle wird der Unterschied zwischen den Einrichtungsmethoden dargestellt. Nachdem Sie den Tunnel erstellt haben, können Sie über eine Befehlszeilen-Schnittstelle im Browser eine SSH-Verbindung zum Remote-Gerät herstellen. Wenn Sie die Token verlegen oder der Tunnel unterbrochen wird, können Sie neue Zugriffstoken senden, um die Verbindung zum Tunnel wiederherzustellen.


**Schnelle und manuelle Einrichtungsmethoden**  

| Kriterien | Quick Setup | Manuelle Einrichtung | 
| --- | --- | --- | 
| Tunnel-Erstellung | Erstellen Sie einen neuen Tunnel mit editierbaren Standardkonfigurationen. Um auf Ihr Remote-Gerät zuzugreifen, können Sie SSH nur als Zieldienst verwenden. | Erstellen Sie einen Tunnel, indem Sie die Tunnelkonfigurationen manuell angeben. Sie können diese Methode verwenden, um über andere Dienste als SSH eine Verbindung zum Remote-Gerät herzustellen. | 
| Zugriffstoken | Das Zielzugriffstoken wird Ihrem Gerät automatisch zum [reservierten MQTT-Thema](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-secure) zugestellt, wenn bei der Erstellung des Tunnels ein Objektname angegeben wurde. Sie müssen das Token nicht auf Ihr Quellgerät herunterladen oder dort verwalten. | Sie müssen das Token manuell auf Ihrem Quellgerät herunterladen und verwalten. Das Zielzugriffstoken wird Ihrem Gerät automatisch zum [reservierten MQTT-Thema](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-secure) zugestellt, wenn bei der Erstellung des Tunnels ein Objektname angegeben wurde.  | 
| Lokaler Proxy | Für die Interaktion mit dem Gerät wird automatisch ein webbasierter lokaler Proxy für Sie konfiguriert. Sie müssen den lokalen Proxy nicht manuell konfigurieren. | Sie müssen den lokalen Proxy manuell konfigurieren und starten. Um den lokalen Proxy zu konfigurieren, können Sie entweder den AWS IoT Geräteclient verwenden oder die [Referenzimplementierung für den lokalen Proxy](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) herunterladen GitHub. | 

## Methoden zur Tunnelerstellung in der AWS IoT Konsole
<a name="tunneling-tutorial-flows"></a>

Die Tutorials in diesem Abschnitt zeigen Ihnen, wie Sie mithilfe der AWS-Managementkonsole und der [OpenTunnel](https://docs.aws.amazon.com/iot/latest/apireference/)API einen Tunnel erstellen. Wenn Sie das Ziel bei der Erstellung eines Tunnels konfigurieren, übermittelt AWS IoT Secure Tunneling das Ziel-Client-Zugriffstoken über MQTT und das reservierte MQTT-Thema,) an das Remote-Gerät. `$aws/things/RemoteDeviceA/tunnels/notify` Nach Erhalt der MQTT-Nachricht startet der IoT-Agent auf dem Remote-Gerät den lokalen Proxy im Zielmodus. Weitere Informationen finden Sie unter [Reservierte Themen](reserved-topics.md).

**Anmerkung**  
Sie können die Zielkonfiguration weglassen, wenn Sie das Zugriffstoken für den Zielclient über eine andere Methode an das Remote-Gerät senden möchten. Weitere Informationen finden Sie unter [Ein Remote-Gerät konfigurieren und IoT-Agent verwenden](configure-remote-device.md).

In der AWS IoT Konsole können Sie einen Tunnel mit einer der folgenden Methoden erstellen. Informationen zu Tutorials, in denen Sie lernen, wie Sie mit diesen Methoden einen Tunnel erstellen, finden Sie unter [Tutorials in diesem Abschnitt](secure-tunneling-tutorial.md#tunneling-tutorial-overview).
+ 

**[Tunnel-Hub](https://console.aws.amazon.com/iot/home#/tunnels)**  
Bei der Erstellung des Tunnels können Sie angeben, ob Sie Quick Setup oder die manuelle Einrichtung für die Erstellung des Tunnels verwenden möchten, und die optionalen Details zur Tunnelkonfiguration angeben. Zu den Konfigurationsdetails gehören auch der Name des Zielgeräts und der Dienst, den Sie für die Verbindung mit dem Gerät verwenden möchten. Nachdem Sie einen Tunnel erstellt haben, können Sie entweder SSH im Browser verwenden oder ein Terminal außerhalb der AWS IoT Konsole öffnen, um auf Ihr Remote-Gerät zuzugreifen.
+ 

**Seite mit Objektdetails**  
Bei der Erstellung des Tunnels können Sie außerdem angeben, ob Sie den zuletzt geöffneten Tunnel verwenden oder einen neuen Tunnel für das Gerät erstellen möchten. Außerdem können Sie die Einrichtungsmethoden auswählen und alle optionalen Details zur Tunnelkonfiguration angeben. Sie können die Konfigurationsdetails eines vorhandenen Tunnels nicht bearbeiten. Sie können die Quick Setup Methode verwenden, um die Zugriffstoken zu rotieren und über den Browser eine SSH-Verbindung zum Remote-Gerät herzustellen. Um einen Tunnel mit dieser Methode zu öffnen, müssen Sie in der AWS IoT Registrierung ein IoT-Ding (z. B.`RemoteDeviceA`) erstellt haben. Weitere Informationen finden Sie unter [Registrieren eines Geräts in der AWS IoT Registrierung](https://docs.aws.amazon.com/iot/latest/developerguide/register-device.html). 

**Topics**
+ [Voraussetzungen für das Tutorial](#tunneling-tutorial-prerequisites)
+ [Methoden zur Tunneleinrichtung](#tunneling-tutorial-setup-methods)
+ [Methoden zur Tunnelerstellung in der AWS IoT Konsole](#tunneling-tutorial-flows)
+ [Öffnen Sie einen Tunnel und verwenden Sie browserbasiertes SSH, um auf das Remote-Gerät zuzugreifen](tunneling-tutorial-quick-setup.md)
+ [Öffnen Sie mithilfe der manuellen Einrichtung einen Tunnel und stellen Sie eine Verbindung zum Remote-Gerät her](tunneling-tutorial-manual-setup.md)

# Öffnen Sie einen Tunnel und verwenden Sie browserbasiertes SSH, um auf das Remote-Gerät zuzugreifen
<a name="tunneling-tutorial-quick-setup"></a>

Sie können die Quick Setup Methode oder die manuelle Einrichtungsmethode verwenden, um einen Tunnel zu erstellen. Dieses Tutorial zeigt, wie Sie einen Tunnel mit der Quick Setup Methode öffnen und das browserbasierte SSH verwenden, um eine Verbindung zum Remote-Gerät herzustellen. Ein Beispiel, das zeigt, wie ein Tunnel mithilfe der manuellen Einrichtungsmethode geöffnet wird, finden Sie unter [Öffnen Sie mithilfe der manuellen Einrichtung einen Tunnel und stellen Sie eine Verbindung zum Remote-Gerät her](tunneling-tutorial-manual-setup.md).

Mithilfe der Quick Setup Methode können Sie einen neuen Tunnel mit Standardkonfigurationen erstellen, die bearbeitet werden können. Ein webbasierter lokaler Proxy wird für Sie konfiguriert und das Zugriffstoken wird automatisch über MQTT an Ihr Remote-Zielgerät gesendet. Nachdem Sie einen Tunnel erstellt haben, können Sie über eine Befehlszeilen-Schnittstelle innerhalb der Konsole mit Ihrem Remote-Gerät interagieren.

Bei der Quick Setup Methode müssen Sie SSH als Zieldienst für den Zugriff auf das Remote-Gerät verwenden. Weitere Informationen zu den verschiedenen Einrichtungsmethoden finden Sie unter [Methoden zur Tunneleinrichtung](secure-tunneling-tutorial-open-tunnel.md#tunneling-tutorial-setup-methods).

## Voraussetzungen für die Quick Setup Methode
<a name="tunneling-tutorial-quick-prerequisites"></a>
+ 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 (siehe[IoT-Agent-Snippet](configure-remote-device.md#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](https://docs.aws.amazon.com/iot/latest/developerguide/sdk-tutorials.html).
+ Auf dem Remote-Gerät muss ein SSH-Daemon ausgeführt werden.

## Tunnel öffnen
<a name="open-tunnel-quick"></a>

Sie können einen sicheren Tunnel mit dem AWS-Managementkonsole, 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](secure-tunneling-tutorial-open-tunnel.md#tunneling-tutorial-flows).

**Um einen Tunnel mit der Konsole zu öffnen,**

1. Gehen Sie zum [Tunnel-Hub der AWS IoT -Konsole](https://console.aws.amazon.com/iot/home#/tunnels) 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.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnels-page.png)

1. Wählen Sie für dieses Tutorial die **Quick Setup Methode** zur Tunnelerstellung und wählen Sie dann **Weiter**.
**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](tunneling-tutorial-existing-tunnel.md).  
![\[Abschnitt zur Einrichtungsmethode mit Optionen für die schnelle Einrichtung mit SSH oder die manuelle Einrichtung, in dem erklärt wird, wie Proxy und Zugriffstoken automatisch konfiguriert werden.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnels-choose-quick.PNG)

1. Überprüfen und bestätigen Sie die Details der Tunnelkonfiguration. Um einen Tunnel zu erstellen, wählen Sie **Bestätigen und erstellen**. Wenn Sie die Details bearbeiten möchten, wählen Sie **Zurück**, um zur vorherigen Seite zurückzukehren. Bestätigen Sie dann und erstellen Sie den Tunnel.
**Anmerkung**  
Wenn Sie die Quick Setup Methode verwenden, kann der Dienstname nicht bearbeitet werden. Sie müssen **SSH** als **Dienst** verwenden.

1. Um den Tunnel zu erstellen, wählen Sie **Fertig**. 

   Für dieses Tutorial müssen Sie die Quell- oder Zielzugriffstoken nicht herunterladen. Diese Token können nur einmal verwendet werden, um eine Verbindung zum Tunnel herzustellen. Wenn Ihr Tunnel unterbrochen wird, können Sie neue Token generieren und an Ihr Remote-Gerät senden, um die Verbindung zum Tunnel wiederherzustellen. Weitere Informationen finden Sie unter [Tunnelzugriffstoken erneut senden](tunneling-tutorial-manual-setup.md#resend-access-tokens).  
![\[Ein Dialogfeld mit Quell- und Zielzugriffstoken zum Herstellen einer sicheren Tunnelverbindung sowie Anweisungen zum Rotieren und erneuten Senden von Token, falls erforderlich.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnel-success.png)

**So öffnen Sie einen Tunnel über die API**  
Um einen neuen Tunnel zu öffnen, können Sie die [OpenTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_OpenTunnel.html)API-Operation verwenden.

**Anmerkung**  
Sie können einen Tunnel mit der Quick Setup Methode nur von der AWS IoT -Konsole aus erstellen. Wenn Sie die AWS IoT API-Referenz-API oder die verwenden AWS CLI, wird die manuelle Einrichtungsmethode verwendet. Sie können den vorhandenen Tunnel, den Sie erstellt haben, öffnen und dann die Einrichtungsmethode des Tunnels ändern, um die Quick Setup Methode zu verwenden. Weitere Informationen finden Sie unter [Öffnen eines vorhandenen Tunnels und Verwenden von browserbasiertem SSH](tunneling-tutorial-existing-tunnel.md#tunneling-tutorial-existing-convert-tunnel).

Im Folgenden wird ein Beispiel gezeigt, wie dieser API-Vorgang ausgeführt wird. Wenn Sie optional den Objektnamen und den Zieldienst angeben möchten, verwenden Sie den `DestinationConfig`-Parameter. Ein Beispiel, das zeigt, wie dieser Parameter verwendet wird, finden Sie unter[Öffnen Sie einen neuen Tunnel für das Remote-Gerät](tunneling-tutorial-existing-tunnel.md#tunneling-tutorial-existing-open-tunnel).

```
aws iotsecuretunneling open-tunnel
```

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

## Verwenden von browserbasiertem SSH
<a name="tunneling-tutorial-quick-browser"></a>

Nachdem Sie mit der Quick Setup Methode einen Tunnel erstellt haben und Ihr Zielgerät eine Verbindung zum Tunnel hergestellt hat, können Sie über ein browserbasiertes SSH auf das Remote-Gerät zugreifen. Mithilfe des browserbasierten SSH können Sie direkt mit dem Remote-Gerät kommunizieren, indem Sie Befehle in eine kontextinterne Befehlszeilen-Schnittstelle in der Konsole eingeben. Diese Funktion erleichtert Ihnen die Interaktion mit dem Remote-Gerät, da Sie kein Terminal außerhalb der Konsole öffnen oder den lokalen Proxy konfigurieren müssen. 

**Browserbasiertes SSH verwenden**

1. Gehen Sie zum [Tunnel-Hub der AWS IoT -Konsole](https://console.aws.amazon.com/iot/home#/tunnels) und wählen Sie den von Ihnen erstellten Tunnel aus, um seine Details anzuzeigen.

1. Erweitern Sie den Abschnitt **Secure Shell (SSH)** und wählen Sie dann **Verbinden**.

1. Wählen Sie aus, ob Sie sich bei der SSH-Verbindung authentifizieren möchten, indem Sie Ihren Benutzernamen und Ihr Passwort angeben, oder ob Sie für eine sicherere Authentifizierung den privaten Schlüssel Ihres Geräts verwenden können. Wenn Sie sich mit dem privaten Schlüssel authentifizieren, beachten Sie, dass nur RSA-Schlüssel im PEM-Format (256 und 512) mit der SSH-Konsole funktionieren. AWS IoT Secure Tunneling 
   + Um mit Ihrem Benutzernamen und Passwort eine Verbindung herzustellen, wählen Sie **Passwort verwenden**. Sie können dann Ihren Benutzernamen und Ihr Passwort eingeben und das In-Browser-CLI verwenden.
   + Um mit dem privaten Schlüssel Ihres Zielgeräts eine Verbindung herzustellen, wählen Sie **Privaten Schlüssel verwenden** aus. Geben Sie Ihren Benutzernamen an, laden Sie die private Schlüsseldatei des Geräts hoch und wählen Sie dann **Verbinden**, um mit der Verwendung des CLI im Browser zu beginnen.  
![\[Formulardialogfeld für die Verbindung über die Browser-CLI mit privatem Schlüssel, das ein Benutzernamenfeld und eine Option zur Auswahl oder Verwendung einer vorausgewählten privaten Schlüsseldatei anzeigt.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnel-browser-private-key.png)

Nachdem Sie sich bei der SSH-Verbindung authentifiziert haben, können Sie schnell mit der Eingabe von Befehlen beginnen und über das Browser-CLI mit dem Gerät interagieren, da der lokale Proxy bereits für Sie konfiguriert wurde.

![\[Codeausschnitt, der React-Hooks zur Verwaltung von Status und Einstellungen in einer Anwendung zeigt. JavaScript\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnel-browser-cli.PNG)


Wenn die Browser-CLI nach Ablauf der Tunneldauer geöffnet bleibt, kann es zu einem Timeout kommen, wodurch die Befehlszeilen-Schnittstelle unterbrochen wird. Sie können den Tunnel duplizieren und eine weitere Sitzung starten, um mit dem Remote-Gerät in der Konsole selbst zu interagieren.

## Behebung von Problemen bei der Verwendung des browserbasierten SSH
<a name="tunneling-tutorial-browser-troubleshoot"></a>

Im Folgenden wird gezeigt, wie Sie einige Probleme beheben können, auf die Sie bei der Verwendung von browserbasiertem SSH stoßen könnten.
+ 

**Anstelle der Befehlszeilen-Schnittstelle wird ein Fehler angezeigt.**  
Möglicherweise wird der Fehler angezeigt, weil die Verbindung zu Ihrem Zielgerät unterbrochen wurde. Sie können **Neue Zugriffstoken generieren** wählen, um neue Zugriffstoken zu generieren und die Token mithilfe von MQTT an Ihr Remote-Gerät zu senden. Die neuen Token können verwendet werden, um die Verbindung zum Tunnel wiederherzustellen. Beim erneuten Herstellen der Verbindung mit dem Tunnel wird der Verlauf gelöscht und die Befehlszeilensitzung aktualisiert.
+ 

**Bei der Authentifizierung mit einem privaten Schlüssel wird ein Fehler angezeigt, dass die Verbindung zum Tunnel unterbrochen wurde**  
Möglicherweise wird der Fehler angezeigt, weil Ihr privater Schlüssel vom Zielgerät vielleicht nicht akzeptiert wurde. Um diesen Fehler zu beheben, überprüfen Sie die Datei mit dem privaten Schlüssel, die Sie zur Authentifizierung hochgeladen haben. Wenn Sie immer noch einen Fehler sehen, überprüfen Sie Ihre Geräteprotokolle. Sie können auch versuchen, erneut eine Verbindung zum Tunnel herzustellen, indem Sie neue Zugriffstoken an Ihr Remote-Gerät senden.
+ 

**Ihr Tunnel wurde geschlossen, als Sie die Sitzung verwendet haben**  
Wenn Ihr Tunnel geschlossen wurde, weil er länger als die angegebene Dauer geöffnet blieb, wird Ihre Befehlszeilensitzung möglicherweise unterbrochen. Ein Tunnel kann nicht wieder geöffnet werden, wenn er einmal geschlossen wurde. Um die Verbindung wieder herzustellen, müssen Sie einen weiteren Tunnel zum Gerät öffnen.

  Sie können einen Tunnel duplizieren, um einen neuen Tunnel mit denselben Konfigurationen wie der geschlossene Tunnel zu erstellen. Sie können einen geschlossenen Tunnel von der Konsole aus duplizieren. AWS IoT Um den Tunnel zu duplizieren, wählen Sie den Tunnel aus, der geschlossen wurde, um seine Details anzuzeigen, und wählen Sie dann **Tunnel duplizieren** aus. Geben Sie die Tunneldauer an, die Sie verwenden möchten, und erstellen Sie dann den neuen Tunnel.

## Bereinigen
<a name="tunnel-cleanup-quick"></a>
+ 

**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 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](https://console.aws.amazon.com/iot/home#/tunnels), wählen Sie die Tunnel aus, die Sie schließen möchten, und wählen Sie dann **Tunnel schließen** aus.
  + Verwenden Sie die API, um einen einzelnen Tunnel oder mehrere Tunnel mithilfe der AWS IoT [CloseTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html)API-Referenz-API zu schließen.

    ```
    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](https://console.aws.amazon.com/iot/home#/tunnels), wählen Sie die Tunnel aus, die Sie löschen möchten, und wählen Sie dann **Tunnel löschen** aus.
  + Verwenden Sie die API, um einen einzelnen Tunnel oder mehrere Tunnel mithilfe der AWS IoT [CloseTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html)API-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
    ```

# Öffnen Sie mithilfe der manuellen Einrichtung einen Tunnel und stellen Sie eine Verbindung zum Remote-Gerät her
<a name="tunneling-tutorial-manual-setup"></a>

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](secure-tunneling-tutorial-open-tunnel.md#tunneling-tutorial-setup-methods).

## Voraussetzungen für die manuelle Einrichtungsmethode
<a name="tunneling-tutorial-manual-prerequisites"></a>
+ 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 (siehe[IoT-Agent-Snippet](configure-remote-device.md#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](https://docs.aws.amazon.com/iot/latest/developerguide/sdk-tutorials.html).
+ Auf dem Remote-Gerät muss ein SSH-Daemon ausgeführt werden.
+ Sie haben den lokalen Proxy-Quellcode von der Plattform Ihrer Wahl heruntergeladen [GitHub](https://github.com/aws-samples/aws-iot-securetunneling-localproxy)und 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
<a name="open-tunnel"></a>

Sie können einen sicheren Tunnel mit dem AWS-Managementkonsole, 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](secure-tunneling-tutorial-open-tunnel.md#tunneling-tutorial-flows).

**Um einen Tunnel mit der Konsole zu öffnen,**

1. Gehen Sie zum [Tunnel-Hub der AWS IoT -Konsole](https://console.aws.amazon.com/iot/home#/tunnelhub) 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.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnels-page.png)

1. 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](tunneling-tutorial-quick-setup.md).
**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](tunneling-tutorial-existing-tunnel.md).  
![\[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.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnels-choose-manual.PNG)

1. (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](https://aws.amazon.com/iot-device-management/pricing/).

1. 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.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnel-success.png)

**So öffnen Sie einen Tunnel über die API**  
Um einen neuen Tunnel zu öffnen, können Sie die [OpenTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_OpenTunnel.html)API-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
<a name="resend-access-tokens"></a>

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](https://console.aws.amazon.com/iot/home#/tunnels) Tunnel aus, den Sie erstellt haben.

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

1. 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.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnel-token-rotated.PNG)

**So rotieren Sie Zugriffstokens über die API**  
Um die Tunnelzugriffstoken rotieren zu lassen, können Sie den [RotateTunnelAccessToken](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_RotateTunnelAccessToken.html)API-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](iot-secure-tunneling-troubleshooting.md).

## Konfigurieren und Starten des lokalen Proxys
<a name="start-local-proxy"></a>

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](https://github.com/aws-samples/aws-iot-securetunneling-localproxy)

Ö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:
+ `-r`gibt 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](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) 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
<a name="start-ssh-session"></a>

Ö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
<a name="tunnel-cleanup-manual"></a>
+ 

**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](https://console.aws.amazon.com/iot/home#/tunnels), 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](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html)

    ```
    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](https://console.aws.amazon.com/iot/home#/tunnels), 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 [CloseTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html)API-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
    ```

# Öffnen Sie einen Tunnel und verwenden Sie browserbasiertes SSH, um auf das Remote-Gerät zuzugreifen
<a name="tunneling-tutorial-existing-tunnel"></a>

Von der AWS IoT Konsole aus können Sie einen Tunnel entweder vom **Tunnel-Hub** oder von der Detailseite eines IoT-Dings aus erstellen, das Sie erstellt haben. Wenn Sie einen Tunnel vom **Tunnel**-Hub aus erstellen, können Sie mithilfe von Quick Setup oder der manuellen Einrichtung angeben, ob Sie einen Tunnel erstellen möchten. Ein Tutorial finden Sie unter [Öffnen Sie einen Tunnel und starten Sie eine SSH-Sitzung zum Remote-Gerät](secure-tunneling-tutorial-open-tunnel.md).

Wenn Sie einen Tunnel auf der Seite mit den Ding-Details der AWS IoT Konsole erstellen, können Sie auch angeben, ob Sie einen neuen Tunnel erstellen oder einen vorhandenen Tunnel für dieses Ding öffnen möchten, wie in diesem Tutorial dargestellt. Wenn Sie einen vorhandenen Tunnel auswählen, können Sie auf den neuesten, offenen Tunnel zugreifen, den Sie für dieses Gerät erstellt haben. Sie können dann die Befehlszeilen-Schnittstelle im Terminal verwenden, um eine SSH-Verbindung zum Gerät herzustellen. 

## Voraussetzungen
<a name="tunneling-tutorial-existing-prerequisites"></a>
+ 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.
+ Sie haben ein IoT-Ding (zum Beispiel`RemoteDevice1`) in der AWS IoT Registrierung erstellt. Dieses Objekt entspricht der Darstellung Ihres Remote-Geräts in der Cloud. Weitere Informationen finden Sie unter [Registrierung eines Geräts in der AWS IoT -Registry](https://docs.aws.amazon.com/iot/latest/developerguide/register-device.html).
+ Auf dem Remote-Gerät läuft ein IoT-Geräteagent (siehe[IoT-Agent-Snippet](configure-remote-device.md#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](https://docs.aws.amazon.com/iot/latest/developerguide/sdk-tutorials.html).
+ Auf dem Remote-Gerät muss ein SSH-Daemon ausgeführt werden.

## Öffnen Sie einen neuen Tunnel für das Remote-Gerät
<a name="tunneling-tutorial-existing-open-tunnel"></a>

Angenommen, Sie möchten einen Tunnel zu Ihrem Remote-Gerät `RemoteDevice1` öffnen. Erstellen Sie zunächst ein IoT-Objekt mit dem Namen `RemoteDevice1` in der AWS IoT -Registry. Anschließend können Sie einen Tunnel mithilfe der AWS-Managementkonsole, der AWS IoT API-Referenz-API oder der erstellen AWS CLI. 

Wenn Sie das Ziel beim Erstellen des Tunnels konfigurieren, liefert der Secure Tunneling-Service das Zugriffstoken für den Zielclient über MQTT an das Remote-Gerät und das reservierte MQTT-Thema (`$aws/things/RemoteDeviceA/tunnels/notify`). Weitere Informationen finden Sie unter [Methoden zur Tunnelerstellung in der AWS IoT Konsole](secure-tunneling-tutorial-open-tunnel.md#tunneling-tutorial-flows).

**Um von der Konsole aus einen Tunnel für ein Remote-Gerät zu erstellen,**

1. Wählen Sie das Objekt `RemoteDevice1` aus, um seine Details anzuzeigen, und wählen Sie dann **Sicheren Tunnel erstellen** aus.  
![\[Details eines Geräts mit dem Namen „RemoteDevice1", dessen Amazon-Ressourcenname (ARN) angezeigt wird.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnel-create-thing.PNG)

1. Wählen Sie aus, ob Sie einen neuen Tunnel erstellen oder einen vorhandenen Tunnel öffnen möchten. Um einen neuen Tunnel zu erstellen, wählen Sie **Neuen Tunnel erstellen**. Sie können die Quick Setup Methode oder die manuelle Einrichtungsmethode verwenden, um einen Tunnel zu erstellen. Weitere Informationen erhalten Sie unter [Öffnen Sie mithilfe der manuellen Einrichtung einen Tunnel und stellen Sie eine Verbindung zum Remote-Gerät her](tunneling-tutorial-manual-setup.md) und [Öffnen Sie einen Tunnel und verwenden Sie browserbasiertes SSH, um auf das Remote-Gerät zuzugreifen](tunneling-tutorial-quick-setup.md).

**So erstellen Sie einen Tunnel für ein Remote-Gerät mithilfe der API**  
Um einen neuen Tunnel zu öffnen, können Sie den [OpenTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_OpenTunnel.html)API-Vorgang verwenden. Der folgende Code zeigt ein Beispiel für die Ausführung dieses Befehls.

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

Im Folgenden werden die Inhalte der `input.json`-Datei angezeigt. Sie können den `destinationConfig`-Parameter verwenden, um den Namen des Zielgeräts (z. B. `RemoteDevice1`) und den Dienst anzugeben, den Sie für den Zugriff auf das Zielgerät verwenden möchten, z. B. `SSH`. Optional können Sie auch zusätzliche Parameter wie die Tunnelbeschreibung und Tags angeben.

**Inhalt von input.json**

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

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

## Öffnen eines vorhandenen Tunnels und Verwenden von browserbasiertem SSH
<a name="tunneling-tutorial-existing-convert-tunnel"></a>

Angenommen, `RemoteDevice1` Sie haben den Tunnel für Ihr Remote-Gerät mithilfe der manuellen Einrichtungsmethode oder mithilfe der AWS IoT API-Referenz-API erstellt. Sie können dann den vorhandenen Tunnel für das Gerät öffnen und die**Quick Setup Methode** wählen, um die browserbasierte SSH-Funktion zu verwenden. Die Konfigurationen eines vorhandenen Tunnels können nicht bearbeitet werden, sodass Sie die manuelle Einrichtungsmethode nicht verwenden können.

Um die browserbasierte SSH-Funktion zu verwenden, müssen Sie weder das Quellzugriffstoken herunterladen noch den lokalen Proxy konfigurieren. Ein webbasierter lokaler Proxy wird automatisch für Sie konfiguriert, sodass Sie mit der Interaktion mit Ihrem Remote-Gerät beginnen können.

**So verwenden Sie die Quick Setup Methode und browserbasiertes SSH**

1. Gehen Sie zur Detailseite des Objekts `RemoteDevice1`, das Sie erstellt haben, und klicken Sie auf **Sicheren Tunnel erstellen**.

1. Wählen Sie **Bestehenden Tunnel verwenden**, um den letzten offenen Tunnel zu öffnen, den Sie für das Remote-Gerät erstellt haben. Die Konfigurationen eines vorhandenen Tunnels können nicht bearbeitet werden, sodass Sie die manuelle Einrichtungsmethode nicht verwenden können. Um die Quick Setup Methode zu verwenden, wählen Sie **Schnelle Einrichtung**.

1. Überprüfen und bestätigen Sie die Details der Tunnelkonfiguration und erstellen Sie den Tunnel. Die Tunnelkonfigurationen können nicht bearbeitet werden.

   Wenn Sie den Tunnel erstellen, verwendet Secure Tunneling den [RotateTunnelAccessToken](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_RotateTunnelAccessToken.html)API-Vorgang, um die ursprünglichen Zugriffstoken zu widerrufen und neue Zugriffstoken zu generieren. Wenn Ihr Remote-Gerät MQTT verwendet, werden diese Token automatisch zu dem MQTT-Thema, das es abonniert hat, an das Remote-Gerät gesendet. Sie können sich auch dafür entscheiden, diese Token manuell auf Ihr Quellgerät herunterzuladen.

Nachdem Sie den Tunnel erstellt haben, können Sie das browserbasierte SSH verwenden, um über die kontextinterne Befehlszeilen-Schnittstelle direkt von der Konsole aus mit dem Remote-Gerät zu interagieren. Um diese Befehlszeilen-Schnittstelle zu verwenden, wählen Sie den Tunnel für das Objekt aus, das Sie erstellt haben, und erweitern Sie auf der Detailseite den Abschnitt **Befehlszeilen-Schnittstelle**. Da der lokale Proxy bereits für Sie konfiguriert wurde, können Sie mit der Eingabe von Befehlen beginnen, um schnell mit dem Zugriff auf und der Interaktion mit Ihrem Remote-Gerät `RemoteDevice1` zu beginnen.

Weitere Informationen zur Quick Setup Methode und zur Verwendung von browserbasiertem SSH finden Sie unter [Öffnen Sie einen Tunnel und verwenden Sie browserbasiertes SSH, um auf das Remote-Gerät zuzugreifen](tunneling-tutorial-quick-setup.md).

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

**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](https://console.aws.amazon.com/iot/home#/tunnels), 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](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html)

    ```
    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](https://console.aws.amazon.com/iot/home#/tunnels), 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 [CloseTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html)API-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
    ```

# Lokaler Proxy
<a name="local-proxy"></a>

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](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) 

Der lokale Proxy kann in zwei Modi ausgeführt werden: `source` oder `destination`. Im Quellmodus wird der lokale Proxy auf demselben Gerät oder Netzwerk ausgeführt wie die Clientanwendung, die die TCP-Verbindung initiiert. Im Zielmodus wird der lokale Proxy zusammen mit der Zielanwendung auf dem Remote-Gerät ausgeführt. Ein einzelner Tunnel kann mithilfe von Tunnelmultiplexing bis zu drei Datenströme gleichzeitig unterstützen. Für jeden Datenstrom werden beim Secure Tunneling mehrere TCP-Verbindungen verwendet, wodurch das Risiko eines Timeouts reduziert wird. Weitere Informationen finden Sie unter [Multiplex-Datenströme und gleichzeitige Verwendung von TCP-Verbindungen in einem sicheren Tunnel](multiplexing.md).

# Wie man den lokalen Proxy benutzt
<a name="how-use-local-proxy"></a>

Sie können den lokalen Proxy auf den Quell- und Zielgeräten ausführen, um Daten an die sicheren Tunneling-Endpunkte zu übertragen. Wenn sich Ihre Geräte in einem Netzwerk befinden, das einen Web-Proxy verwendet, kann der Web-Proxy die Verbindungen abfangen, bevor er sie an das Internet weiterleitet. In diesem Fall müssen Sie Ihren lokalen Proxy so konfigurieren, dass er den Web-Proxy verwendet. Weitere Informationen finden Sie unter [Konfigurieren Sie den lokalen Proxy für Geräte, die einen Web-Proxy verwenden](configure-local-proxy-web-proxy.md). 

## Workflow des lokalen Proxy
<a name="local-proxy-workflow"></a>

Die folgenden Schritte zeigen, wie der lokale Proxy auf den Quell- und Zielgeräten ausgeführt wird.

1. 

**Lokalen Proxy mit Secure Tunneling verbinden**  
Der lokale Proxy stellt zunächst eine Verbindung zum Secure Tunneling her. Wenn Sie den lokalen Proxy starten, verwenden Sie die folgenden Argumente:
   + Das `-r` Argument zur Angabe des, AWS-Region in dem der Tunnel geöffnet wird.
   + Verwenden Sie das `-t`-Argument, um entweder das vom `OpenTunnel` zurückgegebene Quell- oder Zielclient-Zugriffstoken zu übergeben.
**Anmerkung**  
Zwei lokale Proxys, die dasselbe Client-Zugriffstoken verwenden, können nicht gleichzeitig verbunden werden.

1. 

**Quell- oder Zielaktionen ausführen**  
Nachdem die WebSocket Verbindung hergestellt wurde, führt der lokale Proxy je nach Konfiguration entweder Aktionen im Quellmodus oder im Zielmodus aus.

   Standardmäßig versucht der lokale Proxy, erneut eine Verbindung zum Secure Tunneling herzustellen, wenn irgendwelche input/output (I/O-) Fehler auftreten oder wenn die WebSocket Verbindung unerwartet geschlossen wird. Dadurch wird die TCP-Verbindung geschlossen. Wenn TCP-Socket-Fehler auftreten, sendet der lokale Proxy eine Nachricht über den Tunnel, um die andere Seite zu benachrichtigen, dass die TCP-Verbindung geschlossen wird. Standardmäßig verwendet der lokale Proxy immer die SSL-Kommunikation.

1. 

**Lokalen Proxy stoppen**  
Nachdem Sie den Tunnel verwendet haben, ist es sicher, den lokalen Proxyprozess zu stoppen. Wir empfehlen Ihnen, den Tunnel explizit durch Aufrufen von `CloseTunnel` zu schließen. Aktive Tunnelclients werden möglicherweise nicht sofort nach dem Aufruf geschlossen. `CloseTunnel`

Weitere Informationen zur Verwendung von zum Öffnen eines Tunnels und AWS-Managementkonsole zum Starten einer SSH-Sitzung finden Sie unter[Öffnen Sie einen Tunnel und starten Sie eine SSH-Sitzung zum Remote-Gerät](secure-tunneling-tutorial-open-tunnel.md).

## Bewährte Methoden des lokalen Proxy
<a name="local-proxy-security"></a>

Befolgen Sie beim Ausführen des lokalen Proxy die folgenden bewährten Methoden:
+ Vermeiden Sie beim Übergeben von Zugriffstoken die Verwendung des lokalen Proxy-Arguments `-t`. Es wird empfohlen, dass Sie die `AWSIOT_TUNNEL_ACCESS_TOKEN`-Umgebungsvariable verwenden, um das Zugriffstoken für den lokalen Proxy festzulegen.
+ Führen Sie die ausführbare Datei des lokalen Proxys mit den geringsten Berechtigungen im Betriebssystem oder in der Umgebung aus.
  + Führen Sie den lokalen Proxy nicht als Administrator unter Windows aus.
  + Führen Sie den lokalen Proxy als Root unter Linux und macOS aus.
+ Erwägen Sie, den lokalen Proxy auf separaten Hosts, Containern, Sandboxen, Chroot-Jail oder einer virtualisierten Umgebung auszuführen.
+ Erstellen Sie den lokalen Proxy mit relevanten Sicherheits-Flags, abhängig von Ihrer Toolchain.
+ Verwenden Sie auf Geräten mit mehreren Netzwerkschnittstellen das `-b`-Argument, um den TCP-Socket an die Netzwerkschnittstelle zu binden, die zur Kommunikation mit der Zielanwendung verwendet wird. 

## Beispielbefehl und Ausgabe
<a name="example-cmd-output-localproxy"></a>

Hier ein Beispiel für einen Befehl, den Sie ausführen, und die entsprechende Ausgabe. Das Beispiel zeigt, wie der lokale Proxy sowohl im `source`- als auch im `destination`-Modus konfiguriert werden kann. Der lokale Proxy aktualisiert das HTTPS-Protokoll, WebSockets um eine langlebige Verbindung herzustellen, und beginnt dann mit der Übertragung von Daten über die Verbindung an die Endpunkte der sicheren Tunneling-Geräte.

**Bevor Sie diese Befehle ausführen:**  
Müssen Sie einen Tunnel geöffnet und die Client-Zugriffstoken für die Quelle und das Ziel abgerufen haben. Müssen Sie auch den lokalen Proxy wie zuvor beschrieben erstellt haben. Um den lokalen Proxy zu erstellen, öffnen Sie den [lokalen Proxy-Quellcode](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) im GitHub Repository und folgen Sie den Anweisungen zum Erstellen und Installieren des lokalen Proxys.

**Anmerkung**  
Die folgenden Befehle, die in den Beispielen verwendet werden, verwenden das `verbosity`-Flag, um einen Überblick über die verschiedenen zuvor beschriebenen Schritte zu veranschaulichen, nachdem Sie den lokalen Proxy ausgeführt haben. Wir empfehlen, dass Sie das Flag nur für Tests verwenden.

**Lokalen Proxy im Quellmodus betreiben**  
Die folgenden Befehle zeigen, wie der lokale Proxy im Quellmodus ausgeführt wird.

------
#### [ Linux/macOS ]

Führen Sie unter Linux oder macOS die folgenden Befehle im Terminal aus, um den lokalen Proxy auf Ihrer Quelle zu konfigurieren und zu starten.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
./localproxy -s 5555 -v 5 -r us-west-2
```

Wobei Folgendes gilt:
+ `-s` ist der Quell-Listen-Port, der den lokalen Proxy im Quellmodus startet.
+ `-v` ist die Ausführlichkeit der Ausgabe, die ein Wert zwischen null und dechs sein kann.
+ `-r` ist die Endpunktregion, in der der Tunnel geöffnet ist.

Weitere Informationen zu den Parametern finden Sie unter [Mit Befehlszeilenargumenten festgelegte Optionen](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------
#### [ Windows ]

In Windows konfigurieren Sie den lokalen Proxy ähnlich wie für Linux oder macOS, aber die Art und Weise, wie Sie die Umgebungsvariablen definieren, unterscheidet sich von den anderen Plattformen. Führen Sie die folgenden Befehle im `cmd`-Fenster aus, um den lokalen Proxy auf Ihrer Quelle zu konfigurieren und zu starten.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
.\localproxy -s 5555 -v 5 -r us-west-2
```

Wobei Folgendes gilt:
+ `-s` ist der Quell-Listen-Port, der den lokalen Proxy im Quellmodus startet.
+ `-v` ist die Ausführlichkeit der Ausgabe, die ein Wert zwischen null und dechs sein kann.
+ `-r` ist die Endpunktregion, in der der Tunnel geöffnet ist.

Weitere Informationen zu den Parametern finden Sie unter [Mit Befehlszeilenargumenten festgelegte Optionen](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------

**Anmerkung**  
Wenn Sie die neueste Version des lokalen Proxys im Quellmodus verwenden, müssen Sie den AWS CLI Parameter aus Gründen der Abwärtskompatibilität `--destination-client-type V1` auf dem Quellgerät angeben. Dies gilt, wenn Sie eine Verbindung zu einem der folgenden Zielmodi herstellen:  
AWS IoT Geräte-Client
AWS IoT Komponente für sicheres Tunneling oder Komponente für AWS IoT Greengrass Version 2 sicheres Tunneling
Beliebiger AWS IoT Secure Tunneling-Democode, der vor 2022 geschrieben wurde
1.X-Versionen des lokalen Proxys
Dieser Parameter gewährleistet die korrekte Kommunikation zwischen dem aktualisierten Quell-Proxy und älteren Zielclients. Weitere Informationen zu lokalen Proxyversionen finden Sie unter [AWS IoT Secure Tunneling on. *GitHub*](https://github.com/aws-samples/aws-iot-securetunneling-localproxy/blob/main/README.md#as-of-312-may-2024-update---destination-client-type-v1-will-be-a-required-parameter-when-connecting-with-the-following)

Im Folgenden finden Sie ein Beispiel 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-west-2.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-west-2.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
```

**Lokalen Proxy im Zielmodus betreiben**  
Die folgenden Befehle zeigen, wie der lokale Proxy im Zielmodus ausgeführt wird.

------
#### [ Linux/macOS ]

Führen Sie unter Linux oder macOS die folgenden Befehle im Terminal aus, um den lokalen Proxy auf Ihrem Ziel zu konfigurieren und zu starten.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
./localproxy -d 22 -v 5 -r us-west-2
```

Wobei Folgendes gilt:
+ `-d` ist die Zielanwendung, die den lokalen Proxy im Zielmodus startet.
+ `-v` ist die Ausführlichkeit der Ausgabe, die ein Wert zwischen null und dechs sein kann.
+ `-r` ist die Endpunktregion, in der der Tunnel geöffnet ist.

Weitere Informationen zu den Parametern finden Sie unter [Mit Befehlszeilenargumenten festgelegte Optionen](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------
#### [ Windows ]

In Windows konfigurieren Sie den lokalen Proxy ähnlich wie für Linux oder macOS, aber die Art und Weise, wie Sie die Umgebungsvariablen definieren, unterscheidet sich von den anderen Plattformen. Führen Sie die folgenden Befehle im `cmd`-Fenster aus, um den lokalen Proxy auf Ihrem Ziel zu konfigurieren und zu starten.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
.\localproxy -d 22 -v 5 -r us-west-2
```

Wobei Folgendes gilt:
+ `-d` ist die Zielanwendung, die den lokalen Proxy im Zielmodus startet.
+ `-v` ist die Ausführlichkeit der Ausgabe, die ein Wert zwischen null und dechs sein kann.
+ `-r` ist die Endpunktregion, in der der Tunnel geöffnet ist.

Weitere Informationen zu den Parametern finden Sie unter [Mit Befehlszeilenargumenten festgelegte Optionen](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------

**Anmerkung**  
Wenn Sie die neueste Version des lokalen Proxys im Zielmodus verwenden, müssen Sie den AWS CLI Parameter aus Gründen der Abwärtskompatibilität `--destination-client-type V1` auf dem Zielgerät angeben. Dies gilt, wenn Sie eine Verbindung zu einem der folgenden Quellmodi herstellen:  
Browserbasiertes Secure Tunneling von der Konsole aus. AWS 
1.X-Versionen des lokalen Proxys
Dieser Parameter gewährleistet die korrekte Kommunikation zwischen dem aktualisierten Ziel-Proxy und älteren Quellclients. Weitere Informationen zu lokalen Proxyversionen finden Sie unter [AWS IoT Secure Tunneling on. *GitHub*](https://github.com/aws-samples/aws-iot-securetunneling-localproxy/blob/main/README.md#as-of-312-may-2024-update---destination-client-type-v1-will-be-a-required-parameter-when-connecting-with-the-following)

Im Folgenden finden Sie ein Beispiel für die Ausführung des lokalen Proxys im `destination` Modus.

```
...
...

Starting proxy in destination mode
Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.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-west-2.amazonaws.com:443
Setting up web socket pings for every 5000 milliseconds
Scheduled next read:

...

Starting web socket read loop continue reading...
```

# Konfigurieren Sie den lokalen Proxy für Geräte, die einen Web-Proxy verwenden
<a name="configure-local-proxy-web-proxy"></a>

Sie können den lokalen Proxy auf AWS IoT Geräten verwenden, um mit AWS IoT Secure APIs Tunneling zu kommunizieren. Der lokale Proxy überträgt Daten, die von der Geräteanwendung gesendet werden, mithilfe von sicherem Tunneling über eine sichere Verbindung. WebSocket Der lokale Proxy kann im Modus `source` oder `destination` arbeiten. Im `source`-Modus läuft er auf demselben Gerät oder Netzwerk, das die TCP-Verbindung initiiert. Im `destination`-Modus wird der lokale Proxy zusammen mit der Zielanwendung auf dem Remote-Gerät ausgeführt. Weitere Informationen finden Sie unter [Lokaler Proxy](local-proxy.md).

Der lokale Proxy muss eine direkte Verbindung zum Internet herstellen, um AWS IoT sicheres Tunneling verwenden zu können. Für eine langlebige TCP-Verbindung mit sicherem Tunneling aktualisiert der lokale Proxy die HTTPS-Anfrage, um eine Verbindung zu einem der WebSockets Verbindungsendpunkte für [sichere](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html) Tunnelgeräte herzustellen.

Wenn sich Ihre Geräte in einem Netzwerk befinden, das einen Web-Proxy verwendet, kann der Web-Proxy die Verbindungen abfangen, bevor er sie an das Internet weiterleitet. Um eine dauerhafte Verbindung zu den Verbindungsendpunkten für Secure Tunneling-Geräte herzustellen, konfigurieren Sie Ihren lokalen Proxy so, dass er den Web-Proxy verwendet, wie in der [Websocket-Spezifikation](https://tools.ietf.org/html/rfc6455#section-4.1) beschrieben.

**Anmerkung**  
[AWS IoT Geräteclient](iot-sdks.md#iot-sdk-device-client) unterstützt keine Geräte, die einen Web-Proxy verwenden. Um mit dem Web-Proxy arbeiten zu können, müssen Sie einen lokalen Proxy verwenden und ihn so konfigurieren, dass er mit einem Web-Proxy funktioniert, wie unten beschrieben.

Die folgenden Schritte zeigen, wie der lokale Proxy mit einem Web-Proxy funktioniert.

1. Der lokale Proxy sendet eine HTTP `CONNECT`-Anfrage an den Web-Proxy, die die Remote-Adresse des Secure Tunneling-Service zusammen mit den Authentifizierungsinformationen für den Web-Proxy enthält.

1. Der Web-Proxy stellt dann eine langlebige Verbindung zu den Remote-Secure-Tunneling-Endpunkten her.

1. Die TCP-Verbindung ist hergestellt und der lokale Proxy funktioniert jetzt sowohl im Quell- als auch im Zielmodus für die Datenübertragung.

**Topics**
+ [Erstellen Sie den lokalen Proxy](#build-local-proxy)
+ [Konfigurieren Sie Ihren Web-Proxy](#configure-web-proxy)
+ [Konfigurieren und Starten des lokalen Proxys](#configure-start-local-proxy)

## Erstellen Sie den lokalen Proxy
<a name="build-local-proxy"></a>

Öffnen Sie den [lokalen Proxy-Quellcode](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) im GitHub Repository und folgen Sie den Anweisungen zum Erstellen und Installieren des lokalen Proxys.

## Konfigurieren Sie Ihren Web-Proxy
<a name="configure-web-proxy"></a>

Der lokale Proxy basiert auf dem HTTP-Tunneling-Mechanismus, der in der [HTTP/1.1-Spezifikation](https://tools.ietf.org/html/rfc7231#section-4.3.6) beschrieben wird. Um den Spezifikationen zu entsprechen, muss Ihr Web-Proxy Geräten die Verwendung der `CONNECT`Methode ermöglichen.

Wie Sie Ihren Web-Proxy konfigurieren, hängt von dem von Ihnen verwendeten Web-Proxy und der Web-Proxy-Version ab. Um die korrekte Konfiguration des Web-Proxys sicherzustellen, lesen Sie die Anleitung Ihres Web-Proxys.

Zur Konfiguration Ihres Web-Proxys müssen Sie zunächst die URL Ihres Web-Proxys ermitteln und prüfen, ob Ihr Web-Proxy HTTP-Tunneling unterstützt. Die URL des Web-Proxys wird später verwendet, wenn Sie den lokalen Proxy konfigurieren und starten.

1. 

**Identifizieren Sie Ihre URL des Web-Proxys**  
Ihre URL für den Web-Proxy hat das folgende Format.

   ```
   protocol://web_proxy_host_domain:web_proxy_port
   ```

   AWS IoT Secure Tunneling unterstützt nur die Standardauthentifizierung für Web-Proxy. Um die Standardauthentifizierung zu verwenden, müssen Sie das **username** und **password** als Teil der URL des Web-Proxys angeben. Die URL für den Web-Proxy hat das folgende Format.

   ```
   protocol://username:password@web_proxy_host_domain:web_proxy_port
   ```
   + *protocol*kann oder sein. `http` `https` Wir empfehlen Ihnen, `https` zu verwenden.
   + *web\$1proxy\$1host\$1domain*ist die IP-Adresse Ihres Webproxys oder ein DNS-Name, der in die IP-Adresse Ihres Webproxys aufgelöst wird.
   + *web\$1proxy\$1port*ist der Port, auf dem der Web-Proxy lauscht.
   + Der Web-Proxy verwendet dies **username** und **password**, um die Anfrage zu authentifizieren.

1. 

**URL des Web-Proxys testen**  
Um zu überprüfen, ob Ihr Web-Proxy TCP-Tunneling unterstützt, verwenden Sie einen `curl` Befehl und stellen Sie sicher, dass Sie eine Antwort `2xx` oder `3xx` erhalten.

   Wenn Ihre URL für den Web-Proxy beispielsweise lautet `https://server.com:1235`, verwenden Sie ein `proxy-insecure` Flag zusammen mit dem `curl` Befehl, da der Web-Proxy möglicherweise auf einem selbstsignierten Zertifikat basiert.

   ```
   export HTTPS_PROXY=https://server.com:1235
   curl -I https://aws.amazon.com --proxy-insecure
   ```

   Wenn Ihre URL für den Web-Proxy einen `http`-Port hat (z. B.`http://server.com:1234`), müssen Sie das `proxy-insecure`-Flag nicht verwenden.

   ```
   export HTTPS_PROXY=http://server.com:1234
   curl -I https://aws.amazon.com
   ```

## Konfigurieren und Starten des lokalen Proxys
<a name="configure-start-local-proxy"></a>

Um den lokalen Proxy für die Verwendung eines Web-Proxys zu konfigurieren, müssen Sie die `HTTPS_PROXY` Umgebungsvariable entweder mit den DNS-Domain-Namen oder den IP-Adressen und Portnummern konfigurieren, die Ihr Web-Proxy verwendet.

Nachdem Sie den lokalen Proxy konfiguriert haben, können Sie den lokalen Proxy verwenden, wie in diesem [README-Dokument](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#readme) beschrieben.

**Anmerkung**  
Bei der Deklaration Ihrer Umgebungsvariablen wird die Groß-/Kleinschreibung beachtet. Wir empfehlen, jede Variable einmal zu definieren, indem Sie entweder nur Groß- oder Kleinbuchstaben verwenden. In den folgenden Beispielen wird die Umgebungsvariable in Großbuchstaben angegeben. Wenn dieselbe Variable sowohl in Groß- als auch in Kleinbuchstaben angegeben wird, hat die in Kleinbuchstaben angegebene Variable Vorrang. 

Die folgenden Befehle zeigen, wie Sie den lokalen Proxy, der auf Ihrem Ziel ausgeführt wird, so konfigurieren, dass er den Web-Proxy verwendet und den lokalen Proxy startet.
+ `AWSIOT_TUNNEL_ACCESS_TOKEN`: Diese Variable enthält das Client-Zugriffstoken (CAT) für das Ziel.
+ `HTTPS_PROXY`: Diese Variable enthält die URL des Web-Proxys oder die IP-Adresse für die Konfiguration des lokalen Proxys.

Die in den folgenden Beispielen gezeigten Befehle hängen vom verwendeten Betriebssystem ab und davon, ob der Web-Proxy einen HTTP- oder einen HTTPS-Port abhört.

### Der Web-Proxy überwacht einen HTTP-Port
<a name="configure-start-local-proxy-http"></a>

Wenn Ihr Web-Proxy einen HTTP-Port abhört, können Sie die URL des Web-Proxys oder IP-Adresse für die `HTTPS_PROXY` Variable angeben.

------
#### [ Linux/macOS ]

In Linux oder macOS führen Sie die folgenden Befehle im Terminal aus, um den lokalen Proxy auf Ihrem Ziel zu konfigurieren und zu starten, um einen Web-Proxy zu verwenden, der einen HTTP-Port abhört.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http:proxy.example.com:1234
./localproxy -r us-east-1 -d 22
```

Wenn Sie sich beim Proxy authentifizieren müssen, müssen Sie ein **username** und **password** als Teil der `HTTPS_PROXY`-Variablen angeben.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http://username:password@proxy.example.com:1234
./localproxy -r us-east-1 -d 22
```

------
#### [ Windows ]

In Windows konfigurieren Sie den lokalen Proxy ähnlich wie für Linux oder macOS, aber die Art und Weise, wie Sie die Umgebungsvariablen definieren, unterscheidet sich von den anderen Plattformen. Führen Sie die folgenden Befehle im `cmd`-Fenster aus, um den lokalen Proxy auf Ihrem Ziel so zu konfigurieren und zu starten, dass er einen Web-Proxy verwendet, der einen HTTP-Port abhört.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
set HTTPS_PROXY=http://proxy.example.com:1234
.\localproxy -r us-east-1 -d 22
```

Wenn Sie sich beim Proxy authentifizieren müssen, müssen Sie ein **username** und **password** als Teil der `HTTPS_PROXY`-Variablen angeben.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
set HTTPS_PROXY=http://username:password@10.15.20.25:1234
.\localproxy -r us-east-1 -d 22
```

------

### Der Web-Proxy überwacht einen HTTPS-Port
<a name="configure-start-local-proxy-https"></a>

Führen Sie die folgenden Befehle aus, wenn Ihr Web-Proxy einen HTTPS-Port abhört. 

**Anmerkung**  
Wenn Sie ein selbstsigniertes Zertifikat für den Web-Proxy verwenden oder wenn Sie den lokalen Proxy auf einem Betriebssystem ohne native OpenSSL-Unterstützung und Standardkonfigurationen ausführen, müssen Sie Ihre Web-Proxyzertifikate wie im Abschnitt [Zertifikatseinrichtung im Repository beschrieben einrichten](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#certificate-setup). GitHub 

Die folgenden Befehle ähneln der Konfiguration Ihres Web-Proxys für einen HTTP-Proxy, mit der Ausnahme, dass Sie auch den Pfad zu den Zertifikatsdateien angeben, die Sie wie zuvor beschrieben installiert haben.

------
#### [ Linux/macOS ]

In Linux oder macOS führen Sie die folgenden Befehle im Terminal aus, um den lokalen Proxy auf Ihrem Ziel zu konfigurieren, um einen Web-Proxy zu verwenden, der einen HTTPS-Port abhört.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http:proxy.example.com:1234
./localproxy -r us-east-1 -d 22 -c /path/to/certs
```

Wenn Sie sich beim Proxy authentifizieren müssen, müssen Sie ein **username** und **password** als Teil der `HTTPS_PROXY`-Variablen angeben.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http://username:password@proxy.example.com:1234
./localproxy -r us-east-1 -d 22 -c /path/to/certs
```

------
#### [ Windows ]

In Windows führen Sie die folgenden Befehle im `cmd`-Fenster aus, um den lokalen Proxy auf Ihrem Ziel so zu konfigurieren und zu starten, dass er einen Web-Proxy verwendet, der einen HTTP-Port abhört.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
set HTTPS_PROXY=http://proxy.example.com:1234
.\localproxy -r us-east-1 -d 22 -c \path\to\certs
```

Wenn Sie sich beim Proxy authentifizieren müssen, müssen Sie ein **username** und **password** als Teil der `HTTPS_PROXY`-Variablen angeben.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
set HTTPS_PROXY=http://username:password@10.15.20.25:1234
.\localproxy -r us-east-1 -d 22 -c \path\to\certs
```

------

### Beispielbefehl und Ausgabe
<a name="example-cmd-output-localproxy-webproxy"></a>

Das Folgende zeigt ein Beispiel für einen Befehl, den Sie auf einem Linux OS ausführen, und die entsprechende Ausgabe. Das Beispiel zeigt einen Web-Proxy, der einen HTTP-Port abhört, und wie der lokale Proxy so konfiguriert werden kann, dass er den Web-Proxy in beiden `source` `destination` Modi verwendet. Bevor Sie diese Befehle ausführen können, müssen Sie bereits einen Tunnel geöffnet und die Client-Zugriffstoken für die Quelle und das Ziel erhalten haben. Sie müssen auch den lokalen Proxy erstellt und Ihren Web-Proxy wie zuvor beschrieben konfiguriert haben.

Hier ist eine Übersicht über die Schritte, nachdem Sie den lokalen Proxy gestartet haben. Der lokale Proxy:
+ Identifiziert die URL des Web-Proxys, so dass er die URL zur Verbindung mit dem Proxy-Server verwenden kann.
+ Stellt eine TCP-Verbindung mit dem Web-Proxy her.
+ Sendet eine `CONNECT` HTTP-Anfrage an den Web-Proxy und wartet auf die `HTTP/1.1 200`- Antwort, die darauf hinweist, dass die Verbindung hergestellt wurde.
+ Führt ein Upgrade des HTTPS-Protokolls auf durch WebSockets , um eine langlebige Verbindung herzustellen.
+ Beginnt mit der Übertragung von Daten über die Verbindung zu den Endpunkten der Secure-Tunneling-Geräte. 

**Anmerkung**  
Die folgenden Befehle, die in den Beispielen verwendet werden, verwenden das `verbosity`-Flag, um einen Überblick über die verschiedenen zuvor beschriebenen Schritte zu veranschaulichen, nachdem Sie den lokalen Proxy ausgeführt haben. Wir empfehlen, dass Sie das Flag nur für Tests verwenden.

**Lokalen Proxy im Quellmodus betreiben**  
Die folgenden Befehle veranschaulichen die Ausführung des lokalen Proxys im Quellmodus.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http:username:password@10.15.10.25:1234
./localproxy -s 5555 -v 5 -r us-west-2
```

Im Folgenden finden Sie ein Beispiel für die Ausgabe der Ausführung des lokalen Proxys im `source`-Modus.

```
...

Parsed basic auth credentials for the URL
Found Web proxy information in the environment variables, will use it to connect via the proxy.

...

Starting proxy in source mode
Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Resolved Web proxy IP: 10.10.0.11
Connected successfully with Web Proxy
Successfully sent HTTP CONNECT to the Web proxy
Full response from the Web proxy:
HTTP/1.1 200 Connection established
TCP tunnel established successfully
Connected successfully with proxy server
Successfully completed SSL handshake with proxy server
Web socket session ID: 0a109afffee745f5-00001341-000b8138-cc6c878d80e8adb0-f186064b
Web socket subprotocol selected: aws.iot.securetunneling-2.0
Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Seting 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
```

**Lokalen Proxy im Zielmodus betreiben**  
Die folgenden Befehle veranschaulichen die Ausführung des lokalen Proxys im Zielmodus.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http:username:password@10.15.10.25:1234
./localproxy -d 22 -v 5 -r us-west-2
```

Im Folgenden finden Sie ein Beispiel für die Ausgabe der Ausführung des lokalen Proxys im `destination`-Modus.

```
...

Parsed basic auth credentials for the URL
Found Web proxy information in the environment variables, will use it to connect via the proxy.

...

Starting proxy in destination mode
Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Resolved Web proxy IP: 10.10.0.1
Connected successfully with Web Proxy
Successfully sent HTTP CONNECT to the Web proxy
Full response from the Web proxy:
HTTP/1.1 200 Connection established
TCP tunnel established successfully
Connected successfully with proxy server
Successfully completed SSL handshake with proxy server
Web socket session ID: 06717bfffed3fd05-00001355-000b8315-da3109a85da804dd-24c3d10d
Web socket subprotocol selected: aws.iot.securetunneling-2.0
Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Seting up web socket pings for every 5000 milliseconds
Scheduled next read:

...

Starting web socket read loop continue reading...
```

# Multiplex-Datenströme und gleichzeitige Verwendung von TCP-Verbindungen in einem sicheren Tunnel
<a name="multiplexing"></a>

Mithilfe der Multiplexing-Funktion für Secure Tunneling können Sie mehrere Datenströme pro Tunnel verwenden. Mit Multiplexing können Sie Fehler bei Geräten beheben, die mehrere Datenströme verwenden. Sie können auch Ihre Betriebslast reduzieren, indem Sie nicht mehr mehrere lokale Proxys erstellen, bereitstellen und starten oder mehrere Tunnel zum selben Gerät öffnen müssen. Multiplexing kann beispielsweise für einen Webbrowser verwendet werden, der das Senden mehrerer HTTP- und SSH-Datenströme erfordert.

 AWS IoT Sicheres Tunneling unterstützt für jeden Datenstrom gleichzeitige TCP-Verbindungen. Durch die Verwendung gleichzeitiger Verbindungen wird das Risiko eines Timeouts bei mehreren Anfragen vom Client verringert. So kann beispielsweise die Ladezeit beim Fernzugriff auf einen Webserver reduziert werden, der sich lokal auf dem Zielgerät befindet.

In den folgenden Abschnitten werden weitere Informationen zum Multiplexing und zur Verwendung gleichzeitiger TCP-Verbindungen sowie deren verschiedenen Anwendungsfälle erläutert.

**Topics**
+ [Multiplexing mehrerer Datenströme in einem sicheren Tunnel](multiplexing-multiple-streams.md)
+ [Gleichzeitige TCP-Verbindungen in einem sicheren Tunnel verwenden](multiplexing-simultaneous-tcp.md)

# Multiplexing mehrerer Datenströme in einem sicheren Tunnel
<a name="multiplexing-multiple-streams"></a>

Sie können die Multiplexing-Funktion für Geräte verwenden, die mehrere Verbindungen oder Anschlüsse verwenden. Multiplexing kann auch verwendet werden, wenn Sie mehrere Verbindungen zu einem Remote-Gerät zur Behebung von Fehlern benötigen. Es kann beispielsweise für einen Webbrowser verwendet werden, der das Senden mehrerer HTTP- und SSH-Datenströme erfordert. Die Anwendungsdaten aus beiden Streams werden gleichzeitig über den Multiplex-Tunnel an das Gerät gesendet.

## Beispielanwendungsfall
<a name="multiplexing-use-case"></a>

Sagen wir, Sie müssen eine Verbindung zu einer geräteinternen Webanwendung zum Ändern einiger Netzwerkparameter herstellen und gleichzeitig Shell-Befehle über das Terminal eingeben, um die ordnungsgemäße Funktion des Geräts mit den neuen Netzwerkparametern zu überprüfen. In diesem Szenario müssen Sie möglicherweise sowohl über HTTP als auch über SSH eine Verbindung zum Gerät herstellen und zwei parallel Datenströme übertragen, um gleichzeitig auf die Webanwendung und das Terminal zuzugreifen. Mit der Multiplexing-Funktion können diese beiden unabhängigen Ströme gleichzeitig über denselben Tunnel übertragen werden.

![\[Ein Diagramm, das die IoT-Cloud-Architektur mit Quellgeräten, Proxyservern und Zielgeräten für das Streamen von Daten über verschiedene Protokolle zeigt.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tunnel-multiplexing.png)


## Wie man einen Multiplex-Tunnel einrichtet
<a name="multiplexing-tutorial"></a>

Das folgende Verfahren führt Sie durch die Einrichtung eines Multiplex-Tunnels zur Fehlerbehebung bei Geräten mithilfe von Anwendungen, für die Verbindungen zu mehreren Ports erforderlich sind. Sie werden einen Tunnel mit zwei Multiplex-Streams einrichten: einen HTTP-Stream und einen SSH-Stream.

1. 

**(Optional) Konfigurationsdateien erstellen**

   Sie können das Quell- und Zielgerät optional mit Konfigurationsdateien konfigurieren. Verwenden Sie Konfigurationsdateien, wenn sich Ihre Portzuordnungen wahrscheinlich häufig ändern. Sie können diesen Schritt überspringen, wenn Sie die Portzuordnung lieber explizit über die CLI angeben möchten oder wenn Sie den lokalen Proxy nicht auf bestimmten Abhörports starten müssen. Weitere Informationen zur Verwendung von Konfigurationsdateien finden Sie unter [Über --config festgelegte Optionen](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via---config) in GitHub.

   1. Erstellen Sie auf Ihrem Quellgerät in dem Ordner, in dem Ihr lokaler Proxy ausgeführt wird, einen Konfigurationsordner mit dem Namen`Config`. Erstellen Sie in diesem Ordner eine Datei mit dem Namen `SSHSource.ini` und dem folgenden Inhalt:

      ```
      HTTP1 = 5555
      SSH1 = 3333
      ```

   1. Erstellen Sie auf Ihrem Zielgerät in dem Ordner, in dem Ihr lokaler Proxy ausgeführt wird, einen Konfigurationsordner mit dem Namen`Config`. Erstellen Sie in diesem Ordner eine Datei mit dem Namen `SSHDestination.ini` und dem folgenden Inhalt:

      ```
      HTTP1 = 80
      SSH1 = 22
      ```

1. 

**Tunnel öffnen**

   Öffnen Sie einen Tunnel mit der `OpenTunnel` API-Funktion oder dem `open-tunnel` CLI-Befehl. Konfigurieren Sie das Ziel, indem Sie `SSH1` und `HTTP1` als Dienste und den Namen der AWS IoT Sache angeben, die Ihrem Remote-Gerät entspricht. Ihre SSH- und HTTP-Anwendungen werden auf diesem Remote-Gerät ausgeführt. Sie müssen das IoT-Ding bereits in der AWS IoT Registrierung erstellt haben. Weitere Informationen finden Sie unter [Dinge mit der Registrierung verwalten](thing-registry.md).

   ```
   aws iotsecuretunneling open-tunnel \
   	--destination-config thingName=RemoteDevice1,services=HTTP1,SSH1
   ```

   Wenn Sie diesen Befehl ausführen, werden die Quell- und Zielzugriffstoken generiert, mit denen Sie den lokalen Proxy ausführen.

   ```
   {
   	"tunnelId": "b2de92a3-b8ff-46c0-b0f2-afa28b00cecd",
   	"tunnelArn": "arn:aws:iot:us-west-2:431600097591:tunnel/b2de92a3-b8ff-46c0-b0f2-afa28b00cecd",
   	"sourceAccessToken": source_client_access_token,
   	"destinationAccessToken": destination_client_access_token
   }
   ```

1. 

**Konfigurieren und Starten des lokalen Proxys**

   Bevor Sie den lokalen Proxy ausführen können, müssen Sie entweder den AWS IoT Geräteclient einrichten oder den lokalen Proxy-Quellcode von der Plattform Ihrer Wahl herunterladen [GitHub](https://github.com/aws-samples/aws-iot-securetunneling-localproxy)und ihn für die Plattform Ihrer Wahl erstellen. Anschließend können Sie das Ziel und den lokalen Quell-Proxy starten, um eine Verbindung zum sicheren Tunnel herzustellen. Weitere Informationen zum Konfigurieren und Verwenden des lokalen Proxys finden Sie unter [Wie man den lokalen Proxy benutzt](how-use-local-proxy.md).
**Anmerkung**  
Wenn Sie auf Ihrem Quellgerät keine Konfigurationsdateien verwenden oder die Portzuordnung mit der CLI angeben, können Sie trotzdem denselben Befehl verwenden, um den lokalen Proxy auszuführen. Der lokale Proxy im Quellmodus wählt automatisch die zu verwendenden Ports und deren Zuordnungen für Sie aus.

------
#### [ Start local proxy using configuration files ]

   Führen Sie die folgenden Befehle aus, um den lokalen Proxy mithilfe von Konfigurationsdateien im Quell- und Zielmodus auszuführen.

   ```
   // ----------------- Start the destination local proxy -----------------------
   ./localproxy -r us-east-1 -m dst -t destination_client_access_token
   
   // ----------------- Start the source local proxy ----------------------------
   // You also run the same command below if you want the local proxy to
   // choose the mappings for you instead of using configuration files.
   ./localproxy -r us-east-1 -m src -t source_client_access_token
   ```

------
#### [ Start local proxy using CLI port mapping ]

   Führen Sie die folgenden Befehle aus, um den lokalen Proxy im Quell- und Zielmodus auszuführen, indem Sie die Portzuordnungen explizit mit der CLI angeben.

   ```
   // ----------------- Start the destination local proxy -----------------------------------
   ./localproxy -r us-east-1 -d HTTP1=80,SSH1=22 -t destination_client_access_token
   
   // ----------------- Start the source local proxy ----------------------------------------
   ./localproxy -r us-east-1 -s HTTP1=5555,SSH1=33 -t source_client_access_token
   ```

------

Die Anwendungsdaten aus der SSH- und HTTP-Verbindung können jetzt gleichzeitig über den Multiplex-Tunnel übertragen werden. Wie in der Abbildung unten zu sehen ist, dient die Service-ID als lesbares Format zur Übersetzung der Portzuweisung zwischen dem Quell- und dem Zielgerät. Bei dieser Konfiguration leitet sicheres Tunneling jeglichen eingehenden HTTP-Verkehr von Port *5555* auf dem Quellgerät an Port *80* auf dem Zielgerät und jeglichen eingehenden SSH-Verkehr von Port *3333* zu Port *22* auf dem Zielgerät weiter.

![\[Ein Übersetzungsprozess für die Zuordnung von Dienstkennungen von lokalen Quell- und Zielproxys zu übersetzten Portzuordnungen nach der Verarbeitung.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/multiplexing-post-mapping-translation.png)


# Gleichzeitige TCP-Verbindungen in einem sicheren Tunnel verwenden
<a name="multiplexing-simultaneous-tcp"></a>

AWS IoT Secure Tunneling unterstützt mehr als eine TCP-Verbindung gleichzeitig für jeden Datenstrom. Sie können diese Funktion verwenden, wenn Sie gleichzeitige Verbindungen zu einem Remote-Gerät benötigen. Durch die Verwendung gleichzeitiger TCP-Verbindungen wird das Risiko eines Timeouts bei mehreren Anfragen vom Client verringert. Wenn Sie beispielsweise auf einen Webserver zugreifen, auf dem mehrere Komponenten ausgeführt werden, können gleichzeitige TCP-Verbindungen die Zeit reduzieren, die zum Laden der Seite benötigt wird. 

**Anmerkung**  
Gleichzeitige TCP-Verbindungen haben eine Bandbreitenbeschränkung von jeweils 800 Kilobyte pro Sekunde. AWS-Konto AWS IoT Secure Tunneling kann dieses Limit je nach Anzahl der eingehenden Anfragen für Sie konfigurieren.

## Beispielanwendungsfall
<a name="tcp-use-case"></a>

Nehmen wir an, Sie müssen aus der Ferne auf einen Webserver zugreifen, der sich lokal auf dem Zielgerät befindet und auf dem mehrere Komponenten laufen. Bei einer einzigen TCP-Verbindung kann das sequenzielle Laden beim Zugriff auf den Webserver die Zeit verlängern, die zum Laden der Ressourcen auf der Seite benötigt wird. Die gleichzeitigen TCP-Verbindungen können die Ladezeit reduzieren, indem sie die Ressourcenanforderungen der Seite erfüllen, wodurch die Zugriffszeit reduziert wird. Das folgende Diagramm zeigt, wie gleichzeitige TCP-Verbindungen für den Datenstrom zur Webserver-Anwendung unterstützt werden, die auf dem Remote-Gerät ausgeführt wird.

**Anmerkung**  
Wenn Sie über den Tunnel auf mehrere Anwendungen zugreifen möchten, die auf dem Remote-Gerät ausgeführt werden, können Sie Tunnelmultiplexing verwenden. Weitere Informationen finden Sie unter [Multiplexing mehrerer Datenströme in einem sicheren Tunnel](multiplexing-multiple-streams.md).

![\[Eine Abbildung zeigt das IoT-Cloud-Setup mit Quellgerät, lokalem Proxy, Proxyservern und Zielgerät mit Webserver-Anwendung, die über TCP- und WSS-Protokolle verbunden sind.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/tcp-tunneling.png)


## Wie verwendet man gleichzeitige TCP-Verbindungen
<a name="multiple-tcp-tutorial"></a>

Im folgenden Verfahren wird beschrieben, wie Sie gleichzeitige TCP-Verbindungen für den Zugriff auf den Webbrowser auf dem entfernten Gerät verwenden können. Wenn mehrere Anfragen vom Client eingehen, richtet AWS IoT Secure Tunneling automatisch gleichzeitige TCP-Verbindungen ein, um die Anfragen zu bearbeiten, wodurch die Ladezeit reduziert wird.

1. 

**Tunnel öffnen**

   Öffnen Sie einen Tunnel mit der `OpenTunnel` API-Funktion oder dem `open-tunnel` CLI-Befehl. Konfigurieren Sie das Ziel, indem Sie `HTTP` als Dienst und den Namen des Objekts AWS IoT angeben, das Ihrem Remote-Gerät entspricht. Ihre Webserver-Anwendung wird auf diesem Remote-Gerät ausgeführt. Sie müssen das IoT-Ding bereits in der AWS IoT Registrierung erstellt haben. Weitere Informationen finden Sie unter [Dinge mit der Registrierung verwalten](thing-registry.md).

   ```
   aws iotsecuretunneling open-tunnel \
   	--destination-config thingName=RemoteDevice1,services=HTTP
   ```

   Wenn Sie diesen Befehl ausführen, werden die Quell- und Zielzugriffstoken generiert, mit denen Sie den lokalen Proxy ausführen.

   ```
   {
   	"tunnelId": "b2de92a3-b8ff-46c0-b0f2-afa28b00cecd",
   	"tunnelArn": "arn:aws:iot:us-west-2:431600097591:tunnel/b2de92a3-b8ff-46c0-b0f2-afa28b00cecd",
   	"sourceAccessToken": source_client_access_token,
   	"destinationAccessToken": destination_client_access_token
   }
   ```

1. 

**Konfigurieren und Starten des lokalen Proxys**

   Bevor Sie den lokalen Proxy ausführen können, laden Sie den lokalen Proxy-Quellcode von herunter [GitHub](https://github.com/aws-samples/aws-iot-securetunneling-localproxy)und erstellen Sie ihn für die Plattform Ihrer Wahl. Anschließend können Sie den lokalen Ziel- und Quell-Proxy starten, um eine Verbindung zum sicheren Tunnel herzustellen und die Remote-Web-Server-Anwendung zu verwenden.
**Anmerkung**  
Für AWS IoT sicheres Tunneling mit gleichzeitigen TCP-Verbindungen müssen Sie ein Upgrade auf die neueste Version des lokalen Proxys durchführen. Diese Funktion ist nicht verfügbar, wenn Sie den lokalen Proxy mit dem AWS IoT Device Client konfigurieren.

   ```
   // Start the destination local proxy
   ./localproxy -r us-east-1 -d HTTP=80 -t destination_client_access_token
   
   // Start the source local proxy
   ./localproxy -r us-east-1 -s HTTP=5555 -t source_client_access_token
   ```

   Weitere Informationen zum Konfigurieren und Verwenden des lokalen Proxys finden Sie unter [Wie man den lokalen Proxy benutzt](how-use-local-proxy.md).

Sie können jetzt den Tunnel verwenden, um auf die Webserver-Anwendung zuzugreifen. AWS IoT Secure Tunneling richtet automatisch die gleichzeitigen TCP-Verbindungen ein und verarbeitet sie, wenn mehrere Anfragen vom Client eingehen.

# Ein Remote-Gerät konfigurieren und IoT-Agent verwenden
<a name="configure-remote-device"></a>

Der IoT-Agent wird verwendet, um die MQTT-Nachricht zu empfangen, die das Clientzugriffstoken enthält, und einen lokalen Proxy auf dem Remote-Gerät zu starten. Sie müssen den IoT-Agenten auf dem entfernten Gerät installieren und ausführen, wenn Sie das Client-Zugriffstoken über MQTT durch einen sicheren Tunnel übermitteln möchten. Der IoT-Agent muss das folgende reservierte IoT-MQTT-Thema abonnieren:

**Anmerkung**  
Wenn Sie dem Remote-Gerät das Ziel-Client-Zugriffstoken über andere Methoden als durch das Abonnieren des reservierten MQTT-Topics zukommen lassen möchten, benötigen Sie möglicherweise einen Ziel-Client-Zugriffstoken-Listener (CAT) und einen lokalen Proxy. Der CAT-Listener muss mit dem von Ihnen gewählten Zustellungsmechanismus für Client-Zugangstoken arbeiten und in einen lokalen Proxy im Zielmodus starten können.

## IoT-Agent-Snippet
<a name="agent-snippet"></a>

Der IoT-Agent muss das folgende reservierte IoT-MQTT-Topic abonnieren, damit er die MQTT-Nachricht empfangen und den lokalen Proxy starten kann:

`$aws/things/thing-name/tunnels/notify`

Wo `thing-name` ist der Name der AWS IoT Sache, die dem Remote-Gerät zugeordnet ist?

Im Folgenden finden Sie ein Beispiel für eine MQTT-Nachrichtennutzlast:

```
{
    "clientAccessToken": "destination-client-access-token",
    "clientMode": "destination",
    "region": "aws-region",
    "services": ["destination-service"]
}
```

Nach dem Empfang einer MQTT-Nachricht muss der IoT-Agent einen lokalen Proxy auf dem Remote-Gerät mit den entsprechenden Parametern starten.

Der folgende Java-Code zeigt, wie Sie mit dem [AWS IoT Device SDK](https://github.com/aws/aws-iot-device-sdk-java) und [ProcessBuilder](https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html)der Java-Bibliothek einen einfachen IoT-Agenten für sicheres Tunneling erstellen.

```
// Find the IoT device endpoint for your AWS-Konto
final String endpoint = iotClient.describeEndpoint(new DescribeEndpointRequest().withEndpointType("iot:Data-ATS")).getEndpointAddress();

// Instantiate the IoT Agent with your AWS credentials
final String thingName = "RemoteDeviceA";
final String tunnelNotificationTopic = String.format("$aws/things/%s/tunnels/notify", thingName);
final AWSIotMqttClient mqttClient = new AWSIotMqttClient(endpoint, thingName,
                 "your_aws_access_key", "your_aws_secret_key");

try {
    mqttClient.connect();
    final TunnelNotificationListener listener = new TunnelNotificationListener(tunnelNotificationTopic);
    mqttClient.subscribe(listener, true);
}
finally {
    mqttClient.disconnect();
}

private static class TunnelNotificationListener extends AWSIotTopic {
    public TunnelNotificationListener(String topic) {
        super(topic);
    }

    @Override
    public void onMessage(AWSIotMessage message) {
        try {
            // Deserialize the MQTT message
            final JSONObject json = new JSONObject(message.getStringPayload());
 
            final String accessToken = json.getString("clientAccessToken");
            final String region = json.getString("region");
            
            final String clientMode = json.getString("clientMode");
            if (!clientMode.equals("destination")) {
                throw new RuntimeException("Client mode " + clientMode + " in the MQTT message is not expected");
            }

            final JSONArray servicesArray = json.getJSONArray("services");
            if (servicesArray.length() > 1) {
                throw new RuntimeException("Services in the MQTT message has more than 1 service");
            }
            final String service = servicesArray.get(0).toString();
            if (!service.equals("SSH")) {
                throw new RuntimeException("Service " + service + " is not supported");
            }

            // Start the destination local proxy in a separate process to connect to the SSH Daemon listening port 22
            final ProcessBuilder pb = new ProcessBuilder("localproxy",
                        "-t", accessToken,
                        "-r", region,
                        "-d", "localhost:22");
            pb.start();
        }
        catch (Exception e) {
            log.error("Failed to start the local proxy", e);
        }
    }
}
```

# Steuern des Zugriffs auf Tunnel
<a name="tunnel-access"></a>

DSecure Tunneling bietet dienstspezifische Aktionen, Ressourcen und Bedingungskontextschlüssel zur Verwendung in IAM-Berechtigungsrichtlinien.

## Voraussetzungen für den Tunnelzugriff
<a name="tunnel-access-prereq"></a>
+ Erfahren Sie, wie Sie AWS Ressourcen mithilfe von [IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html) sichern können.
+ Erfahren Sie, wie Sie [IAM-Bedingungen](      https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) erstellen und bewerten.
+ Erfahren Sie, wie Sie AWS Ressourcen mithilfe von [Ressourcen-Tags](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) sichern.

## Richtlinien für den Tunnelzugriff
<a name="tunnel-access-policies"></a>

Sie müssen die folgenden Richtlinien verwenden, um Berechtigungen zur Verwendung der Secure Tunneling-API zu autorisieren. Weitere Informationen zur AWS IoT Sicherheit finden Sie unter[Identitäts- und Zugriffsmanagement für AWS IoT](security-iam.md).

### IoT: OpenTunnel
<a name="open-tunnel-action"></a>

Die `iot:OpenTunnel`-Richtlinienaktion erteilt eine Prinzipalberechtigung zum Aufrufen von [OpenTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_OpenTunnel.html).

Im `Resource` Element der IAM-Richtlinienerklärung:
+ Geben Sie den Wildcard-Tunnel-ARN an:

  `arn:aws:iot:aws-region:aws-account-id:tunnel/*`
+ Geben Sie einen Objekt-ARN an, um die `OpenTunnel` Berechtigung für bestimmte IoT-Objekte zu verwalten:

  `arn:aws:iot:aws-region:aws-account-id:thing/thing-name`

Mit der folgenden Richtlinienanweisung können Sie beispielsweise einen Tunnel für das IoT-Objekt mit der Bezeichnung `TestDevice` öffnen.

```
{
    "Effect": "Allow",
    "Action": "iot:OpenTunnel",
    "Resource": [
        "arn:aws:iot:aws-region:aws-account-id:tunnel/*",
        "arn:aws:iot:aws-region:aws-account-id:thing/TestDevice"
    ]
}
```

Die `iot:OpenTunnel`-Richtlinienaktion unterstützt die folgenden Bedingungsschlüssel:
+ `iot:ThingGroupArn`
+ `iot:TunnelDestinationService`
+ `aws:RequestTag`/*tag-key*
+ `aws:SecureTransport`
+ `aws:TagKeys`

Mit der folgenden Richtlinienanweisung können Sie einen Tunnel zu dem Objekt öffnen, wenn das Objekt zu einer Objektgruppe mit einem Namen gehört, der mit `TestGroup` beginnt und im Tunnel der Zielservice SSH konfiguriert ist.

```
{
    "Effect": "Allow",
    "Action": "iot:OpenTunnel",
    "Resource": [
        "arn:aws:iot:aws-region:aws-account-id:tunnel/*"
    ],
    "Condition": {
        "ForAnyValue:StringLike": {
            "iot:ThingGroupArn": [
                "arn:aws:iot:aws-region:aws-account-id:thinggroup/TestGroup*"
            ]
        },
        "ForAllValues:StringEquals": {
            "iot:TunnelDestinationService": [
                "SSH"
            ]
        }
    }
}
```

Sie können auch Ressourcen-Tags verwenden, um die Berechtigung zum Öffnen von Tunneln zu steuern. Mit der folgenden Richtlinienanweisung kann beispielsweise ein Tunnel geöffnet werden, wenn der Tag-Schlüssel `Owner` mit dem Wert `Admin` vorhanden ist und keine anderen Tags angegeben werden. Allgemeine Informationen zur Verwendung von Tags finden Sie unter [Verschlagworten Sie Ihre Ressourcen AWS IoT](tagging-iot.md).

```
{
    "Effect": "Allow",
    "Action": "iot:OpenTunnel",
    "Resource": [
        "arn:aws:iot:aws-region:aws-account-id:tunnel/*"
    ],
    "Condition": {
        "StringEquals": {
            "aws:RequestTag/Owner": "Admin"
        },
        "ForAllValues:StringEquals": {
            "aws:TagKeys": "Owner"
        }
    }
}
```

### IoT: RotateTunnelAccessToken
<a name="rotate-tunnel-action"></a>

Die `iot:RotateTunnelAccessToken`-Richtlinienaktion erteilt eine Prinzipalberechtigung zum Aufrufen von [RotateTunnelAccessToken](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_RorateTunnelAccessToken.html).

Im `Resource` Element der IAM-Richtlinienerklärung:
+ Geben Sie einen vollqualifizierten Tunnel-ARN an:

  `arn:aws:iot:aws-region: aws-account-id:tunnel/tunnel-id`

  Sie können auch den Wildcard-Tunnel-ARN verwenden:

  `arn:aws:iot:aws-region:aws-account-id:tunnel/*`
+ Geben Sie einen Objekt-ARN an, um die `RotateTunnelAccessToken` Berechtigung für bestimmte IoT-Objekte zu verwalten:

  `arn:aws:iot:aws-region:aws-account-id:thing/thing-name`

Mit der folgenden Richtlinienanweisung können Sie beispielsweise entweder das Quellzugriffstoken eines Tunnels oder das Zielzugriffstoken eines Clients für das genannte IoT-Objekt namens`TestDevice` rotieren.

```
{
    "Effect": "Allow",
    "Action": "iot:RotateTunnelAccessToken",
    "Resource": [
        "arn:aws:iot:aws-region:aws-account-id:tunnel/*",
        "arn:aws:iot:aws-region:aws-account-id:thing/TestDevice"
    ]
}
```

Die `iot:RotateTunnelAccessToken`-Richtlinienaktion unterstützt die folgenden Bedingungsschlüssel:
+ `iot:ThingGroupArn`
+ `iot:TunnelDestinationService`
+ `iot:ClientMode`
+ `aws:SecureTransport`

Mit der folgenden Richtlinienanweisung können Sie das Zielzugriffstoken auf das Objekt rotieren, wenn das Objekt zu einer Objektgruppe mit einem Namen gehört, der mit `TestGroup` beginnt, der konfigurierte Zieldienst auf dem Tunnel SSH ist, und der Client sich im `DESTINATION`-Modus befindet.

```
{
    "Effect": "Allow",
    "Action": "iot:RotateTunnelAccessToken",
    "Resource": [
        "arn:aws:iot:aws-region:aws-account-id:tunnel/*"
    ],
    "Condition": {
        "ForAnyValue:StringLike": {
            "iot:ThingGroupArn": [
                "arn:aws:iot:aws-region:aws-account-id:thinggroup/TestGroup*"
            ]
        },
        "ForAllValues:StringEquals": {
            "iot:TunnelDestinationService": [
                "SSH"
            ],
            "iot:ClientMode": "DESTINATION"
        }
    }
}
```

### IoT: DescribeTunnel
<a name="describe-tunnel-action"></a>

Die `iot:DescribeTunnel`-Richtlinienaktion erteilt eine Prinzipalberechtigung zum Aufrufen von [DescribeTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_DescribeTunnel.html).

Geben Sie im `Resource` Element der IAM-Richtlinienerklärung einen vollqualifizierten Tunnel-ARN an:

`arn:aws:iot:aws-region: aws-account-id:tunnel/tunnel-id`

Sie können auch den Wildcard-ARN verwenden:

`arn:aws:iot:aws-region:aws-account-id:tunnel/*`

Die `iot:DescribeTunnel`-Richtlinienaktion unterstützt die folgenden Bedingungsschlüssel:
+ `aws:ResourceTag/tag-key`
+ `aws:SecureTransport`

Mit der folgenden Richtlinienanweisung können Sie `DescribeTunnel` aufrufen, wenn der angeforderte Tunnel mit dem Schlüssel `Owner` mit dem Wert `Admin` gekennzeichnet ist.

```
{
    "Effect": "Allow",
    "Action": "iot:DescribeTunnel",
    "Resource": [
        "arn:aws:iot:aws-region:aws-account-id:tunnel/*"
    ],
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/Owner": "Admin"
        }
    }
}
```

### IoT: ListTunnels
<a name="list-tunnels-action"></a>

Die `iot:ListTunnels`-Richtlinienaktion erteilt eine Prinzipalberechtigung zum Aufrufen von [ListTunnels](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_ListTunnels.html).

Im `Resource` Element der IAM-Richtlinienerklärung:
+ Geben Sie den Wildcard-Tunnel-ARN an:

  `arn:aws:iot:aws-region:aws-account-id:tunnel/*`
+ Geben Sie einen Objekt-ARN an, um die `ListTunnels` Berechtigung für ausgewählte IoT-Objekte zu verwalten:

  `arn:aws:iot:aws-region:aws-account-id:thing/thing-name`

Die `iot:ListTunnels`-Richtlinienaktion unterstützt den Bedingungsschlüssel `aws:SecureTransport`.

Mit der folgenden Richtlinienanweisung können Sie Tunnel für das Objekt mit dem Namen `TestDevice` auflisten.

```
{
    "Effect": "Allow",
    "Action": "iot:ListTunnels",
    "Resource": [
        "arn:aws:iot:aws-region:aws-account-id:tunnel/*",
        "arn:aws:iot:aws-region:aws-account-id:thing/TestDevice"
    ]
}
```

### IoT: ListTagsForResource
<a name="list-tags-for-resource-action"></a>

Die `iot:ListTagsForResource`-Richtlinienaktion erteilt eine Prinzipalberechtigung zum Aufrufen von `ListTagsForResource`.

Geben Sie im `Resource` Element der IAM-Richtlinienerklärung einen vollqualifizierten Tunnel-ARN an:

`arn:aws:iot:aws-region: aws-account-id:tunnel/tunnel-id`

Sie können auch den Wildcard-Tunnel-ARN verwenden:

`arn:aws:iot:aws-region:aws-account-id:tunnel/*`

Die `iot:ListTagsForResource`-Richtlinienaktion unterstützt den Bedingungsschlüssel `aws:SecureTransport`.

### IoT: CloseTunnel
<a name="close-tunnel-action"></a>

Die `iot:CloseTunnel`-Richtlinienaktion erteilt eine Prinzipalberechtigung zum Aufrufen von [CloseTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_CloseTunnel.html).

Geben Sie im `Resource` Element der IAM-Richtlinienerklärung einen vollqualifizierten Tunnel-ARN an:

`arn:aws:iot:aws-region: aws-account-id:tunnel/tunnel-id`

Sie können auch den Wildcard-Tunnel-ARN verwenden:

`arn:aws:iot:aws-region:aws-account-id:tunnel/*`

Die `iot:CloseTunnel`-Richtlinienaktion unterstützt die folgenden Bedingungsschlüssel:
+ `iot:Delete`
+ `aws:ResourceTag/tag-key`
+ `aws:SecureTransport`

Mit der folgenden Richtlinienanweisung können Sie `CloseTunnel` aufrufen, wenn der `Delete`-Parameter der Anforderung `false` ist und der angeforderte Tunnel mit dem Schlüssel `Owner` mit dem Wert `QATeam` gekennzeichnet ist.

```
{
    "Effect": "Allow",
    "Action": "iot:CloseTunnel",
    "Resource": [
        "arn:aws:iot:aws-region:aws-account-id:tunnel/*"
    ],
    "Condition": {
        "Bool": {
            "iot:Delete": "false"
        },
        "StringEquals": {
            "aws:ResourceTag/Owner": "QATeam"
        }
    }
}
```

### IoT: TagResource
<a name="tag-resource-action"></a>

Die `iot:TagResource`-Richtlinienaktion erteilt eine Prinzipalberechtigung zum Aufrufen von `TagResource`.

Geben Sie im `Resource` Element der IAM-Richtlinienerklärung einen vollqualifizierten Tunnel-ARN an:

`arn:aws:iot:aws-region: aws-account-id:tunnel/tunnel-id`

Sie können auch den Wildcard-Tunnel-ARN verwenden:

`arn:aws:iot:aws-region:aws-account-id:tunnel/*`

Die `iot:TagResource`-Richtlinienaktion unterstützt den Bedingungsschlüssel `aws:SecureTransport`.

### IoT: UntagResource
<a name="untag-resource-action"></a>

Die `iot:UntagResource`-Richtlinienaktion erteilt eine Prinzipalberechtigung zum Aufrufen von `UntagResource`.

Geben Sie im `Resource` Element der IAM-Richtlinienerklärung einen vollqualifizierten Tunnel-ARN an:

`arn:aws:iot:aws-region: aws-account-id:tunnel/tunnel-id`

Sie können auch den Wildcard-Tunnel-ARN verwenden:

`arn:aws:iot:aws-region:aws-account-id:tunnel/*`

Die `iot:UntagResource`-Richtlinienaktion unterstützt den Bedingungsschlüssel `aws:SecureTransport`.

# Lösung von Verbindungsproblemen beim AWS IoT sicheren Tunneling durch rotierende Client-Zugriffstoken
<a name="iot-secure-tunneling-troubleshooting"></a>

Wenn Sie AWS IoT Secure Tunneling verwenden, können Verbindungsprobleme auftreten, auch wenn der Tunnel geöffnet ist. Die folgenden Abschnitte zeigen einige mögliche Probleme und wie Sie diese durch Rotation der Client-Zugriffstoken lösen können. Um das Client Access Token (CAT) zu rotieren, verwenden Sie die [RotateTunnelAccessToken](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_RotateTunnelAccessToken.html)API oder die. [rotate-tunnel-access-token](https://docs.aws.amazon.com/cli/latest/reference/iotsecuretunneling/rotate-tunnel-access-token.html) AWS CLI Je nachdem, ob bei der Verwendung des Clients im Quell- oder Zielmodus ein Fehler auftritt, können Sie das CAT entweder im Quell- oder Zielmodus oder in beiden Modi rotieren.

**Anmerkung**  
Wenn Sie sich nicht sicher sind, ob das CAT an der Quelle oder am Ziel rotiert werden muss, können Sie das CAT sowohl an der Quelle als auch am Ziel rotieren, indem Sie `ClientMode` auf ALL setzen bei der Verwendung der `RotateTunnelAccessToken`-API.
Durch das Rotieren des CAT wird die Tunneldauer nicht verlängert. Nehmen wir zum Beispiel an, die Tunneldauer beträgt 12 Stunden und der Tunnel ist bereits seit 4 Stunden geöffnet. Wenn Sie die Zugriffstoken rotieren, können die neu generierten Token nur für die verbleibenden 8 Stunden verwendet werden.

**Topics**
+ [Fehler beim ungültigen Client-Zugriffstoken](#invalid-access-token)
+ [Fehler bei Nichtübereinstimmung der Client-Tokens](#client-token-mismatch)
+ [Verbindungsprobleme bei Remote-Geräten](#tunnel-open-device-error)

## Fehler beim ungültigen Client-Zugriffstoken
<a name="invalid-access-token"></a>

Wenn Sie AWS IoT Secure Tunneling verwenden, kann es zu einem Verbindungsfehler kommen, wenn Sie dasselbe Clientzugriffstoken (CAT) verwenden, um die Verbindung zum gleichen Tunnel wiederherzustellen. In diesem Fall kann der lokale Proxy keine Verbindung zum Secure Tunneling-Proxyserver herstellen. Wenn Sie einen Client im Quellmodus verwenden, wird möglicherweise die folgende Fehlermeldung angezeigt:

```
Invalid access token: The access token was previously used and cannot be used again
```

Der Fehler tritt auf, weil das Client-Zugriffstoken (CAT) vom lokalen Proxy nur einmal verwendet werden kann und dann ungültig wird. Um diesen Fehler zu beheben, wechseln Sie das Client-Zugriffstoken in den `SOURCE` Modus, in dem ein neues CAT für die Quelle generiert wird. Ein Beispiel, das zeigt, wie Sie das Quell-CAT rotieren, finden Sie unter [Beispiel für „Quell-CAT rotieren“](#rotate-token-source-example).

## Fehler bei Nichtübereinstimmung der Client-Tokens
<a name="client-token-mismatch"></a>

**Anmerkung**  
Die Verwendung von Client-Tokens zur Wiederverwendung des CAT wird nicht empfohlen. Wir empfehlen, stattdessen die `RotateTunnelAccessToken`-API zu verwenden, um die Client-Zugriffstoken zu rotieren, um die Verbindung zum Tunnel wiederherzustellen.

Wenn Sie Client-Token verwenden, können Sie das CAT wiederverwenden, um die Verbindung zum Tunnel wiederherzustellen. Um die CAT wiederzuverwenden, müssen Sie dem Client-Token die CAT zur Verfügung stellen, wenn Sie zum ersten Mal eine Verbindung zu Secure Tunneling herstellen. Secure Tunneling speichert das Client-Token, sodass für nachfolgende Verbindungsversuche mit demselben Token auch das Client-Token bereitgestellt werden muss. Weitere Informationen zur Verwendung von Client-Tokens finden Sie in der [Referenzimplementierung für lokale Proxys](https://github.com/aws-samples/aws-iot-securetunneling-localproxy/blob/master/V2WebSocketProtocolGuide.md) unter. GitHub

Wenn Sie Client-Token verwenden und einen Client im Quellmodus verwenden, wird möglicherweise der folgende Fehler angezeigt:

```
Invalid client token: The provided client token does not match the client token 
				that was previously set.
```

Der Fehler tritt auf, weil das bereitgestellte Client-Token nicht mit dem Client-Token übereinstimmt, das beim Zugriff auf den Tunnel mit dem CAT bereitgestellt wurde. Um diesen Fehler zu beheben, rotieren Sie den CAT in dem `SOURCE` Modus, um ein neues CAT für die Quelle zu erzeugen. Im Folgenden sehen Sie ein Beispiel:

### Beispiel für „Quell-CAT rotieren“
<a name="rotate-token-source-example"></a>

Im Folgenden finden Sie ein Beispiel dafür, wie die `RotateTunnelAccessToken` API im `SOURCE`-Modus zum Generieren einer neuen CAT für die Quelle ausgeführt wird:

```
aws iotsecuretunneling rotate-tunnel-access-token \ 
    --region <region> \ 
    --tunnel-id <tunnel-id> \ 
    --client-mode SOURCE
```

Wenn Sie diesen Befehl ausführen, wird ein neues Quellzugriffstoken generiert und der ARN Ihres Tunnels zurückgegeben.

```
{
    "sourceAccessToken": "<source-access-token>", 
    "tunnelArn": "arn:aws:iot:<region>:<account-id>:tunnel/<tunnel-id>"
}
```

Sie können jetzt das neue Quell-Token verwenden, um den lokalen Proxy im Quellmodus zu verbinden.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=<source-access-token>
./localproxy -r <region> -s <port>
```

Im Folgenden finden Sie ein Beispiel für die Ausgabe der Ausführung des lokalen Proxys:

```
...

[info]    Starting proxy in source mode
...
[info]    Successfully established websocket connection with proxy server ...
[info]    Listening for new connection on port <port>
...
```

## Verbindungsprobleme bei Remote-Geräten
<a name="tunnel-open-device-error"></a>

Bei Verwendung von AWS IoT Secure Tunneling wird die Verbindung zum Gerät möglicherweise unerwartet unterbrochen, selbst wenn der Tunnel geöffnet ist. [Um festzustellen, ob ein Gerät noch mit dem Tunnel verbunden ist, können Sie die [DescribeTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_DescribeTunnel.html)API oder den Describe-Tunnel verwenden.](https://docs.aws.amazon.com/cli/latest/reference/iotsecuretunneling/describe-tunnel.html) AWS CLI

Ein Gerät kann aus mehreren Gründen unterbrochen werden. Um das Verbindungsproblem zu beheben, können Sie das CAT auf das Zielgerät rotieren, falls die Verbindung zum Gerät aus den folgenden möglichen Gründen unterbrochen wurde:
+ Das CAT auf dem Ziel wurde ungültig.
+ Das Token wurde nicht über das für Secure Tunneling reservierte MQTT-Thema an das Gerät übermittelt:

  `$aws/things/<thing-name>/tunnels/notify`

Das folgende Beispiel veranschaulicht, wie dieses Problem gelöst werden kann:

### Beispiel für die Rotation des Ziel-CAT
<a name="rotate-token-dest-example"></a>

Man nehme ein Remote-Gerät, `<RemoteThing1>`. Um einen Tunnel für dieses Objekt zu öffnen, können Sie den folgenden Befehl verwenden:

```
aws iotsecuretunneling open-tunnel \ 
    --region <region> \ 
    --destination-config thingName=<RemoteThing1>,services=SSH
```

Wenn Sie diesen Befehl ausführen, werden die Tunneldetails und das CAT für Ihre Quelle und Ihr Ziel generiert.

```
{
    "sourceAccessToken": "<source-access-token>", 
    "destinationAccessToken": "<destination-access-token>", 
    "tunnelId": "<tunnel-id>", 
    "tunnelArn": "arn:aws:iot:<region>:<account-id>:tunnel/tunnel-id"
}
```

Wenn Sie die [DescribeTunnel](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-secure-tunneling_DescribeTunnel.html)API verwenden, zeigt die Ausgabe jedoch an, dass das Gerät getrennt wurde, wie unten dargestellt:

```
aws iotsecuretunneling describe-tunnel \ 
    --tunnel-id <tunnel-id> \ 
    --region <region>
```

Wenn Sie diesen Befehl ausführen, wird angezeigt, dass das Gerät immer noch nicht verbunden ist.

```
{
    "tunnel": {
        ...
        "destinationConnectionState": {
            "status": "DISCONNECTED"
        },
        ...
    }
}
```

Um diesen Fehler zu beheben, führen Sie die `RotateTunnelAccessToken` API mit dem Client im `DESTINATION`-Modus und den Konfigurationen für das Ziel aus. Wenn Sie diesen Befehl ausführen, wird das alte Zugriffstoken gesperrt, ein neues Token generiert und dieses Token erneut an das MQTT-Thema gesendet:

`$aws/things/<thing-name>/tunnels/notify`

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

Durch die Ausführung dieses Befehls wird das neue Zugriffstoken wie unten dargestellt generiert. Das Token wird dann 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"
}
```