Abra un túnel mediante la configuración manual y conéctelo a un dispositivo remoto - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Abra un túnel mediante la configuración manual y conéctelo a un dispositivo remoto

Al abrir un túnel, puede elegir el método de configuración rápida o manual para abrir un túnel en el dispositivo remoto. Este tutorial muestra cómo abrir un túnel mediante el método de configuración manual y cómo configurar e iniciar el proxy local para conectarse al dispositivo remoto.

Si utiliza el método de configuración manual, debe especificar manualmente las configuraciones del túnel al crear el túnel. Tras crear el túnel, puedes usar SSH en el navegador o abrir un terminal fuera de la AWS IoT consola. Este tutorial muestra cómo usar el terminal externo a la consola para acceder al dispositivo remoto. También aprenderá a configurar el proxy local y a conectarse a él para interactuar con el dispositivo remoto. Para conectarse al proxy local, debe descargar el token de acceso de origen al crear el túnel.

Con este método de configuración, puede utilizar servicios distintos de SSH, como FTP para conectarse al dispositivo remoto. Para más información sobre los distintos métodos de configuración, consulte Métodos de configuración de túnel.

Requisitos previos para el método de configuración manual

  • Los firewalls detrás del dispositivo remoto deben permitir el tráfico saliente en el puerto 443. El túnel que cree utilizará este puerto para conectarse al dispositivo remoto.

  • Tiene un agente de dispositivo de IoT (consulteFragmento de agente de IoT) ejecutándose en el dispositivo remoto que se conecta a la puerta de enlace del AWS IoT dispositivo y está configurado con una suscripción a un tema de MQTT. Para obtener más información, consulte conectar un dispositivo a la puerta de enlace del AWS IoT dispositivo.

  • Debe tener un daemon SSH ejecutándose en el dispositivo remoto.

  • Ha descargado el código fuente del proxy local GitHuby lo ha creado para la plataforma que ha elegido. Nos referiremos al archivo ejecutable del proxy local compilado como localproxy en este tutorial.

Abrir un túnel

Puede abrir un túnel seguro utilizando la AWS Management Console referencia de la AWS IoT API o la AWS CLI. Si lo desea, puede configurar un nombre de destino, pero no es obligatorio para este tutorial. Si configura el destino, la tunelización segura entregará automáticamente el token de acceso al dispositivo remoto mediante MQTT. Para obtener más información, consulte Métodos de creación de túneles en la AWS IoT consola.

Para abrir un túnel en la consola
  1. Vaya al Centro de túneles de la consola de AWS IoT y elija Crear túnel.

    AWS IoT consola que muestra una lista vacía de túneles con opciones para crear, cerrar o eliminar túneles.
  2. Para este tutorial, seleccione Configuración manual como método de creación del túnel y, a continuación, seleccione Siguiente. Para obtener información sobre el uso del método de configuración rápida para crear un túnel, consulte Abra un túnel y usa SSH basado en un navegador para acceder al dispositivo remoto.

    nota

    Si crea un túnel seguro desde la página de detalles de una cosa que ha creado, puede elegir si desea crear un túnel nuevo o utilizar uno existente. Para obtener más información, consulte Abra un túnel para el dispositivo remoto y utilice SSH basado en navegador.

    Hay dos opciones para configurar una conexión de túnel: configuración rápida (SSH) o configuración manual, que requiere configurar un proxy local y administrar los tokens de acceso.
  3. (Opcional) Introduzca los ajustes de configuración del túnel. También puede omitir este paso y continuar con el siguiente paso para crear un túnel.

    Introduzca la descripción del túnel, la duración del tiempo de espera del túnel y las etiquetas de recursos como pares clave-valor para ayudarle a identificar el recurso. Para este tutorial, puede omitir la configuración de destino.

    nota

    No se le cobrará en función de la duración durante la que mantenga abierto un túnel. Solo incurrirá en cargos al crear un túnel nuevo. Para obtener información sobre los precios, consulte Tunelización segura en precios de AWS IoT Device Management

  4. Descargue los tokens de acceso del cliente y, a continuación, seleccione Listo. Los tokens no estarán disponibles para su descarga después de seleccionar Listo.

    Estas fichas solo se pueden utilizar una vez para conectarse al túnel. Si extravía los tokens o el túnel se desconecta, puede generar y enviar nuevos tokens a su dispositivo remoto para volver a conectarse al túnel.

    Tokens de acceso de origen y destino para crear una conexión de túnel segura, con instrucciones sobre cómo rotar y reenviar los tokens si es necesario.
Para abrir un túnel mediante la API

Para abrir un túnel nuevo, puedes usar la operación de la OpenTunnelAPI. También puede especificar configuraciones adicionales mediante la API, como la duración del túnel y la configuración de destino.

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

Al ejecutar este comando, se crea un túnel nuevo y se proporcionan los tokens de acceso de origen y destino.

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

Reenviar los tokens de acceso al túnel

Los tokens que se obtienen al crear un túnel sólo se pueden utilizar una vez para conectarse al mismo. Si pierdes el token de acceso o el túnel se desconecta, puedes volver a enviar nuevos tokens de acceso al dispositivo remoto mediante MQTT sin coste adicional. AWS IoT Un túnel seguro revocará los tokens actuales y devolverá los nuevos al volver a conectarse al túnel.

Para girar los tokens desde la consola
  1. Ve al centro de túneles de la AWS IoT consola y elige el túnel que has creado.

  2. En la página de detalles del túnel, seleccione Generar nuevos tokens de acceso y, a continuación, seleccione Siguiente.

  3. Descargue los nuevos tokens de acceso para tu túnel y seleccione Listo. Estos tokens solo se pueden usar una vez. Si extravía estos tokens o el túnel se desconecta, puede volver a enviar nuevas fichas de acceso.

    Accede a los tokens de los dispositivos de origen y destino con opciones para copiarlos o descargarlos. El texto explica que al rotar los tokens se revocan los actuales y se generan nuevos de un solo uso para volver a conectar un túnel desconectado.
Para rotar los tokens de acceso mediante la API

Para rotar los tokens de acceso al túnel, puedes usar la operación de la RotateTunnelAccessTokenAPI para revocar los tokens actuales y devolver nuevos tokens de acceso para volver a conectarte al túnel. Por ejemplo, el siguiente comando rota los tokens de acceso del dispositivo de destino, RemoteThing1.

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

Al ejecutar este comando, se genera el nuevo token de acceso, como se muestra en el siguiente ejemplo. A continuación, el token se entrega al dispositivo mediante MQTT para conectarse al túnel, si el agente del dispositivo está configurado correctamente.

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

Para ver ejemplos que muestran cómo y cuándo rotar los tokens de acceso, consulte Resolver problemas de conectividad de túneles AWS IoT seguros mediante la rotación de los tokens de acceso de los clientes.

Configure e inicie el proxy local

Para conectarse al dispositivo remoto, abra un terminal en su portátil y configure e inicie el proxy local. El proxy local transmite los datos enviados por la aplicación que se ejecuta en el dispositivo de origen mediante una tunelización segura a través de una conexión segura. WebSocket Puede descargar la fuente del proxy local desde. GitHub

Después de configurar el proxy local, copie el token de acceso del cliente de origen y utilícelo para iniciar el proxy local en modo origen. A continuación se muestra un ejemplo de comando para iniciar el proxy local. En el siguiente comando, el proxy local está configurado para atender nuevas conexiones en el puerto 5555. En este comando:

  • -respecifica la Región de AWS, que debe ser la misma región en la que se creó el túnel.

  • -s especifica el puerto al que debe conectarse el proxy.

  • -t especifica el texto del token del cliente.

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

Al ejecutar este comando, se iniciará el proxy local en modo fuente. Si recibe el siguiente error después de ejecutar el comando, configure la ruta CA. Para obtener más información, consulte Proteger el proxy local de tunelización en. GitHub

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

A continuación se muestra un ejemplo de resultado de la ejecución del proxy local en modo source.

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

Iniciar una sesión SSH

Abra otro terminal y utilice el siguiente comando para iniciar una nueva sesión SSH conectándose al proxy local en el puerto 5555.

ssh username@localhost -p 5555

Es posible que se pida una contraseña para la sesión SSH. Cuando haya terminado con la sesión SSH, escriba exit para cerrar la sesión.

Limpieza

  • Cerrar el túnel

    Le recomendamos que cierre el túnel una vez que haya terminado de usarlo. Un túnel también puede cerrarse si permanece abierto durante más tiempo del especificado. Un túnel no se puede volver a abrir una vez cerrado. Aún puede duplicar un túnel abriendo el túnel cerrado y, a continuación, seleccionando Duplicar túnel. Especifique la duración del túnel que quiere usar y, a continuación, cree el túnel nuevo.

    • Para cerrar un túnel individual o varios túneles desde la AWS IoT consola, vaya al centro de túneles, elija los túneles que desee cerrar y, a continuación, elija Cerrar túnel.

    • Para cerrar un túnel individual o varios túneles mediante la AWS IoT API de referencia de la API, utilice la operación de la CloseTunnelAPI.

      aws iotsecuretunneling close-tunnel \ --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd"
  • Eliminar túnel

    Puedes eliminar un túnel de forma permanente de tu Cuenta de AWS.

    aviso

    Las acciones de eliminación son permanentes y no se pueden deshacer.

    • Para eliminar un túnel individual o varios túneles desde la consola de AWS IoT , vaya al centro de túneles, elija los túneles que desee cerrar y, a continuación, elija Eliminar túnel.

    • Para eliminar un túnel individual o varios túneles mediante la AWS IoT API de referencia de la API, utilice la operación CloseTunnelAPI. Cuando utilice la API, ajuste la marca delete a true.

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