Ouvrez un tunnel à l'aide de la configuration manuelle et connectez-vous à un appareil distant - AWS IoT Core

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ouvrez un tunnel à l'aide de la configuration manuelle et connectez-vous à un appareil distant

Lorsque vous ouvrez un tunnel, vous pouvez choisir la méthode de configuration rapide ou manuelle pour ouvrir un tunnel vers le périphérique distant. Ce didacticiel explique comment ouvrir un tunnel à l'aide de la méthode de configuration manuelle et comment configurer et démarrer le proxy local pour se connecter au périphérique distant.

Lorsque vous utilisez la méthode de configuration manuelle, vous devez spécifier manuellement les configurations du tunnel lors de la création du tunnel. Après avoir créé le tunnel, vous pouvez utiliser SSH dans le navigateur ou ouvrir un terminal en dehors de la AWS IoT console. Ce didacticiel explique comment utiliser le terminal situé en dehors de la console pour accéder à l'appareil distant. Vous allez également apprendre à configurer le proxy local, puis à vous connecter au proxy local pour interagir avec le périphérique distant. Pour vous connecter au proxy local, vous devez télécharger le jeton d'accès à la source lors de la création du tunnel.

Avec cette méthode de configuration, vous pouvez utiliser des services autres que SSH, tels que le FTP pour vous connecter au périphérique distant. Pour plus d’informations, veuillez consulter le AWSIoTWirelessFullAccess récapitulatif de la stratégie. Méthodes de configuration des tunnels.

Conditions préalables à la méthode de configuration manuelle

  • Les pare-feu derrière l'appareil distant doivent permettre le trafic sortant sur le port 443. Le tunnel que vous créez utilisera ce port pour se connecter au périphérique distant.

  • Vous disposez d'un agent pour appareils IoT (voirExtrait de l'agent IoT) exécuté sur l'appareil distant qui se connecte à la passerelle de l' AWS IoT appareil et qui est configuré avec un abonnement à une rubrique MQTT. Pour plus d'informations, voir connecter un appareil à la passerelle de AWS IoT périphériques.

  • Vous devez disposer d'un démon SSH s'exécutant sur l'appareil distant.

  • Vous avez téléchargé le code source du proxy local GitHubet l'avez créé pour la plateforme de votre choix. Dans ce didacticiel, nous utilisons localproxy pour nous référer au fichier exécutable du proxy local.

Ouvrir un tunnel

Vous pouvez ouvrir un tunnel sécurisé à l'aide du AWS Management Console, de la référence d' AWS IoT API ou du AWS CLI. Vous pouvez éventuellement configurer un nom de destination, mais cela n'est pas obligatoire pour ce didacticiel. Si vous configurez la destination, le tunneling sécurisé fournira automatiquement le jeton d'accès au périphérique distant à l'aide de MQTT. Pour plus d’informations, consultez Méthodes de création de tunnels dans AWS IoT la console.

Pour ouvrir un tunnel dans la console
  1. Accédez au hub Tunnels de la AWS IoT console et choisissez Create tunnel.

    AWS IoT console affichant une liste vide de tunnels avec des options pour créer, fermer ou supprimer des tunnels.
  2. Pour ce didacticiel, choisissez Configuration manuelle comme méthode de création du tunnel, puis cliquez sur Suivant. Pour plus d'informations sur l'utilisation de la méthode de configuration rapide pour créer un tunnel, consultezOuvrez un tunnel et utilisez le protocole SSH basé sur un navigateur pour accéder à un appareil distant.

    Note

    Si vous créez un tunnel sécurisé à partir de la page de détails d'un objet, vous pouvez choisir de créer un nouveau tunnel ou d'utiliser un tunnel existant. Pour plus d’informations, consultez Ouvrez un tunnel pour un appareil distant et utilisez le protocole SSH basé sur un navigateur.

    Deux options pour configurer une connexion par tunnel : configuration rapide (SSH) ou configuration manuelle, qui nécessite la configuration d'un proxy local et la gestion des jetons d'accès.
  3. (Facultatif) Entrez les paramètres de configuration de votre tunnel. Vous pouvez également ignorer cette étape et passer à l'étape suivante pour créer un tunnel.

    Entrez une description du tunnel, une durée d'expiration du tunnel et des balises de ressource sous forme de paires clé-valeur pour vous aider à identifier votre ressource. Pour ce didacticiel, vous pouvez ignorer la configuration de la destination.

    Note

    Aucun frais ne vous sera facturé en fonction de la durée pendant laquelle vous maintenez un tunnel ouvert. Vous ne payez des frais que lors de la création d'un nouveau tunnel. Pour plus d'informations sur les tarifs, voir Secure Tunneling dans AWS IoT Device Management la section des tarifs.

  4. Téléchargez les jetons d'accès client, puis choisissez OK. Les jetons ne pourront pas être téléchargés une fois que vous aurez sélectionné OK.

    Ces jetons ne peuvent être utilisés qu'une seule fois pour se connecter au tunnel. Si vous égarez les jetons ou si le tunnel est déconnecté, vous pouvez générer et envoyer de nouveaux jetons à votre appareil distant pour vous reconnecter au tunnel.

    Jetons d'accès à la source et à la destination pour créer une connexion par tunnel sécurisée, avec instructions sur la rotation et le renvoi des jetons si nécessaire.
Pour ouvrir un tunnel à l'aide de l'API

Pour ouvrir un nouveau tunnel, vous pouvez utiliser l'opération OpenTunnelAPI. Vous pouvez également spécifier des configurations supplémentaires à l'aide de l'API, telles que la durée du tunnel et la configuration de destination.

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

L'exécution de cette commande crée un nouveau tunnel et vous fournit les jetons d'accès à la source et à la destination.

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

Renvoyer les jetons d'accès au tunnel

Les jetons que vous avez obtenus lors de la création d'un tunnel ne peuvent être utilisés qu'une seule fois pour vous connecter au tunnel. Si vous égarez le jeton d'accès ou si le tunnel est déconnecté, vous pouvez renvoyer de nouveaux jetons d'accès à l'appareil distant en utilisant MQTT sans frais supplémentaires. AWS IoT le tunneling sécurisé révoquera les jetons actuels et renverra de nouveaux jetons d'accès pour la reconnexion au tunnel.

Pour faire pivoter les jetons depuis la console
  1. Accédez au hub Tunnels de la AWS IoT console et choisissez le tunnel que vous avez créé.

  2. Sur la page des détails du tunnel, choisissez Générer de nouveaux jetons d'accès, puis cliquez sur Suivant.

  3. Téléchargez les nouveaux jetons d'accès pour votre tunnel et choisissez OK. Ces jetons ne peuvent être utilisés qu'une seule fois. Si vous égarez ces jetons ou si le tunnel est déconnecté, vous pouvez renvoyer de nouveaux jetons d'accès.

    Jetons d'accès pour les appareils source et de destination avec des options pour les copier ou les télécharger. Le texte explique que la rotation des jetons révoque les jetons actuels et génère de nouveaux jetons à usage unique pour reconnecter un tunnel déconnecté.
Pour faire pivoter les jetons d'accès à l'aide de l'API

Pour faire pivoter les jetons d'accès au tunnel, vous pouvez utiliser l'opération RotateTunnelAccessTokenAPI pour révoquer les jetons actuels et renvoyer de nouveaux jetons d'accès pour vous reconnecter au tunnel. Par exemple, la commande suivante fait pivoter les jetons d'accès pour le périphérique de destination, RemoteThing1.

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

L'exécution de cette commande génère le nouveau jeton d'accès, comme indiqué dans l'exemple suivant. Le jeton est ensuite envoyé à l'appareil à l'aide de MQTT pour se connecter au tunnel, si l'agent du périphérique est correctement configuré.

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

Pour des exemples montrant comment et quand faire pivoter les jetons d'accès, consultezRésolution des problèmes de connectivité liés au tunneling AWS IoT sécurisé en faisant pivoter les jetons d'accès client.

Configuration et démarrage du proxy local

Pour vous connecter à l'appareil distant, ouvrez un terminal sur votre ordinateur portable, puis configurez et démarrez le proxy local. Le proxy local transmet les données envoyées par l'application exécutée sur le périphérique source en utilisant un tunnel sécurisé via une connexion WebSocket sécurisée. Vous pouvez télécharger la source du proxy local depuis GitHub.

Après avoir configuré le proxy local, copiez le jeton d'accès du client source et utilisez-le pour démarrer le proxy local en mode source. Voici un exemple de commande pour démarrer le proxy local. Dans la commande suivante, le proxy local est configuré pour écouter les nouvelles connexions sur le port 5555. Dans cette commande :

  • -rspécifie le Région AWS, qui doit être la même région que celle dans laquelle votre tunnel a été créé.

  • -s Spécifie le port auquel le proxy doit se connecter.

  • -t Spécifie le texte du jeton client.

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

L'exécution de cette commande démarrera le proxy local en mode source. Si vous recevez l'erreur suivante après avoir exécuté la commande, configurez le chemin d'accès à l'autorité de certification. Pour plus d'informations, voir Secure tunneling local proxy activé. GitHub

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

Ce qui suit montre un exemple de sortie de l'exécution du proxy local en source mode.

... ... 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

Démarrer une session SSH

Ouvrez un autre terminal et utilisez la commande suivante pour démarrer une nouvelle session SSH en vous connectant au proxy local sur le port 5555.

ssh username@localhost -p 5555

Vous pouvez être invité à entrer un mot de passe pour la session SSH. Lorsque vous avez terminé avec la session SSH, tapez exit pour fermer la session.

Nettoyage

  • Fermer Tunnel

    Nous vous recommandons de fermer le tunnel une fois que vous avez fini de l'utiliser. Un tunnel peut également être fermé s'il est resté ouvert plus longtemps que la durée de tunnel spécifiée. Un tunnel ne peut pas être rouvert une fois fermé. Vous pouvez toujours dupliquer un tunnel en ouvrant le tunnel fermé, puis en choisissant Dupliquer le tunnel. Spécifiez la durée du tunnel que vous souhaitez utiliser, puis créez le nouveau tunnel.

    • Pour fermer un tunnel individuel ou plusieurs tunnels depuis la AWS IoT console, accédez au hub Tunnels, choisissez les tunnels que vous souhaitez fermer, puis cliquez sur Fermer le tunnel.

    • Pour fermer un tunnel individuel ou plusieurs tunnels à l'aide de l' AWS IoT API de référence API, utilisez l'opération CloseTunnelAPI.

      aws iotsecuretunneling close-tunnel \ --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd"
  • Supprimer le tunnel

    Vous pouvez supprimer définitivement un tunnel de votre Compte AWS.

    Avertissement

    Les actions de suppression sont permanentes et ne peuvent être annulées.

    • Pour supprimer un ou plusieurs tunnels de la AWS IoT console, accédez au hub Tunnels, choisissez les tunnels que vous souhaitez supprimer, puis sélectionnez Supprimer le tunnel.

    • Pour supprimer un tunnel individuel ou plusieurs tunnels à l'aide de l' AWS IoT API de référence API, utilisez l'opération CloseTunnelAPI. Lorsque vous utilisez l'API, définissez l'deleteindicateur surtrue.

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