Ouvrez un tunnel et utilisez le protocole SSH basé sur un navigateur pour accéder à 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 et utilisez le protocole SSH basé sur un navigateur pour accéder à un appareil distant

Vous pouvez utiliser la méthode de configuration rapide ou manuelle pour créer un tunnel. Ce didacticiel explique comment ouvrir un tunnel à l'aide de la méthode de configuration rapide et utiliser le SSH basé sur un navigateur pour se connecter au périphérique distant. Pour obtenir un exemple pratique illustrant la façon d'ouvrir un tunnel à l'aide de la méthode de configuration manuelle, consultezOuvrez un tunnel à l'aide de la configuration manuelle et connectez-vous à un appareil distant.

À l'aide de la méthode de configuration rapide, vous pouvez créer un nouveau tunnel avec des configurations par défaut modifiables. Un proxy local basé sur le Web est configuré pour vous et le jeton d'accès est automatiquement envoyé à votre appareil de destination distant à l'aide de MQTT. Après avoir créé un tunnel, vous pouvez commencer à interagir avec votre appareil distant à l'aide d'une interface de ligne de commande intégrée à la console.

Avec la méthode de configuration rapide, vous devez utiliser SSH comme service de destination pour accéder au périphérique distant. Pour plus d'informations sur les différentes méthodes de lancement, consultez Méthodes de configuration des tunnels.

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

  • Les pare-feu derrière l'appareil distant doivent autoriser 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.

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 à l'aide de 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 rapide comme méthode de création de tunnel, puis cliquez sur Suivant.

    Note

    Si vous créez un tunnel sécurisé à partir de la page de détails d'un objet que vous avez créé, 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.

    Section sur la méthode de configuration avec des options de configuration rapide à l'aide de SSH ou de configuration manuelle, expliquant la configuration rapide qui configure automatiquement le proxy et le jeton d'accès.
  3. Vérifiez et confirmez les détails de configuration du tunnel. Pour créer un tunnel, choisissez Confirmer et créez. Si vous souhaitez modifier ces informations, choisissez Précédent pour revenir à la page précédente, puis confirmez et créez le tunnel.

    Note

    Lors de l'utilisation de la configuration rapide, le nom du service ne peut pas être modifié. Vous devez utiliser SSH en tant que service.

  4. Pour créer le tunnel, choisissez OK.

    Pour ce didacticiel, vous n'avez pas besoin de télécharger les jetons d'accès à la source ou à la destination. Ces jetons ne peuvent être utilisés qu'une seule fois pour se connecter au tunnel. Si votre tunnel est déconnecté, vous pouvez générer et envoyer de nouveaux jetons à votre appareil distant pour vous reconnecter au tunnel. Pour plus d’informations, consultez Renvoyer les jetons d'accès au tunnel.

    Une boîte de dialogue affichant les jetons d'accès à la source et à la destination permettant de créer une connexion par tunnel sécurisée, avec des 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.

Note

Vous pouvez créer un tunnel à l'aide de la méthode de configuration rapide uniquement à partir de la AWS IoT console. Lorsque vous utilisez l' AWS IoT API de référence API ou l'API AWS CLI, elle utilisera la méthode de configuration manuelle. Vous pouvez ouvrir le tunnel existant que vous avez créé, puis modifier la méthode de configuration du tunnel pour utiliser la configuration rapide. Pour plus d’informations, consultez Ouvrez un tunnel existant et utilisez le protocole SSH basé sur un navigateur.

Voici un exemple de la façon d'exécuter cette opération d'API. Si vous souhaitez spécifier le nom de l'objet et le service de destination, vous pouvez éventuellement utiliser le DestinationConfig paramètre. Pour obtenir un exemple pratique illustrant la façon d'utiliser ce paramètre, consultezOuvrez un nouveau tunnel pour le périphérique distant.

aws iotsecuretunneling open-tunnel

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

Utilisation du SSH basé sur un navigateur

Une fois que vous avez créé un tunnel à l'aide de la méthode de configuration rapide et que votre appareil de destination s'est connecté au tunnel, vous pouvez accéder au périphérique distant à l'aide d'un SSH basé sur un navigateur. À l'aide du protocole SSH basé sur un navigateur, vous pouvez communiquer directement avec le périphérique distant en saisissant des commandes dans une interface de ligne de commande contextuelle au sein de la console. Cette fonctionnalité facilite l'interaction avec le périphérique distant, car il n'est pas nécessaire d'ouvrir un terminal en dehors de la console ou de configurer le proxy local.

Pour utiliser le SSH basé sur un navigateur
  1. Accédez au hub Tunnels de la AWS IoT console et choisissez le tunnel que vous avez créé pour en afficher les détails.

  2. Développez la section Secure Shell (SSH), puis choisissez Connect.

  3. Choisissez si vous souhaitez vous authentifier dans la connexion SSH en fournissant votre nom d'utilisateur et votre mot de passe ou, pour une authentification plus sécurisée, vous pouvez utiliser la clé privée de votre appareil. Si vous vous authentifiez à l'aide de la clé privée, vous pouvez utiliser les types de clés RSA, DSA, ECDSA (nistp-*) et ED25519, aux formats PEM (PKCS #1, PKCS #8) et OpenSSH.

    • Pour vous connecter à l'aide de votre nom d'utilisateur et de votre mot de passe, choisissez Utiliser un mot de passe. Vous pouvez ensuite saisir votre nom d'utilisateur et votre mot de passe et commencer à utiliser la CLI intégrée au navigateur.

    • Pour vous connecter à l'aide de la clé privée de votre appareil de destination, choisissez Utiliser la clé privée. Spécifiez votre nom d'utilisateur et téléchargez le fichier de clé privée de l'appareil, puis choisissez Connect pour commencer à utiliser la CLI intégrée au navigateur.

      Boîte de dialogue de formulaire permettant de se connecter via la CLI du navigateur avec une clé privée, affichant un champ de nom d'utilisateur et une option permettant de choisir ou d'utiliser un fichier de clé privée présélectionné.

Après vous être authentifié dans la connexion SSH, vous pouvez rapidement commencer à saisir des commandes et à interagir avec le périphérique à l'aide de la CLI du navigateur, car le proxy local a déjà été configuré pour vous.

Extrait de code montrant les hooks React permettant de gérer l'état et les préférences d'une JavaScript application.

Si la CLI du navigateur reste ouverte après la durée du tunnel, il se peut qu'elle expire, entraînant la déconnexion de l'interface de ligne de commande. Vous pouvez dupliquer le tunnel et démarrer une autre session pour interagir avec le périphérique distant dans la console elle-même.

Résolution des problèmes liés à l'utilisation du SSH basé sur un navigateur

Ce qui suit montre comment résoudre certains problèmes que vous pourriez rencontrer lors de l'utilisation du SSH basé sur un navigateur.

  • Vous voyez une erreur au lieu de l'interface de ligne de commande

    Le message d'erreur s'affiche peut-être parce que votre appareil de destination a été déconnecté. Vous pouvez choisir Générer de nouveaux jetons d'accès pour générer de nouveaux jetons d'accès et envoyer les jetons à votre appareil distant à l'aide de MQTT. Les nouveaux jetons peuvent être utilisés pour se reconnecter au tunnel. La reconnexion au tunnel efface l'historique et actualise la session de ligne de commande.

  • Une erreur de déconnexion du tunnel s'affiche lors de l'authentification à l'aide d'une clé privée

    Le message d'erreur s'affiche peut-être parce que votre clé privée n'a peut-être pas été acceptée par l'appareil de destination. Pour résoudre cette erreur, vérifiez le fichier de clé privée que vous avez chargé pour vous authentifier. Si le message d'erreur persiste, consultez les journaux de votre appareil. Vous pouvez également essayer de vous reconnecter au tunnel en envoyant de nouveaux jetons d'accès à votre appareil distant.

  • Votre tunnel a été fermé lors de l'utilisation de la session

    Si votre tunnel a été fermé parce qu'il est resté ouvert pendant une durée supérieure à la durée spécifiée, il est possible que votre session de ligne de commande soit déconnectée. Un tunnel ne peut pas être rouvert une fois fermé. Pour vous reconnecter, vous devez ouvrir un autre tunnel vers l'appareil.

    Vous pouvez dupliquer un tunnel pour créer un nouveau tunnel avec les mêmes configurations que le tunnel fermé. Vous pouvez dupliquer un tunnel fermé depuis la AWS IoT console. Pour dupliquer le tunnel, choisissez le tunnel qui a été fermé pour afficher ses détails, puis choisissez Dupliquer le tunnel. Spécifiez la durée du tunnel que vous souhaitez utiliser, puis créez le nouveau tunnel.

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 choisissant 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'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 ou plusieurs tunnels à l'aide de l' AWS IoT API de référence de l'API, utilisez l'CloseTunnelAPI. Lorsque vous utilisez l'API, définissez l'deleteindicateur surtrue.

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