Abra um túnel usando a configuração manual e conecte-se ao dispositivo remoto - AWS IoT Core

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Abra um túnel usando a configuração manual e conecte-se ao dispositivo remoto

Ao abrir um túnel, você pode escolher a configuração rápida ou o método de configuração manual para abrir um túnel no dispositivo remoto. Este tutorial mostra como abrir um túnel usando o método de configuração manual e configurar e iniciar o proxy local para se conectar ao dispositivo remoto.

Ao usar o método de configuração manual, você deve especificar manualmente as configurações do túnel ao criar o túnel. Depois de criar o túnel, você pode usar o SSH no navegador ou abrir um terminal fora do AWS IoT console. Este tutorial mostra como usar o terminal fora do console para acessar o dispositivo remoto. Você também aprenderá a configurar o proxy local e depois se conectar ao proxy local para interagir com o dispositivo remoto. Para se conectar ao proxy local, você deve baixar o token de acesso de origem ao criar o túnel.

Com este método de configuração, você pode usar outros serviços além do SSH, como FTP, para conectar-se ao dispositivo remoto. Para obter informações sobre os diferentes métodos de configuração, consulte Métodos de configuração de túnel.

Pré-requisitos para o método de configuração manual

  • Os firewalls que protegem o dispositivo remoto devem permitir o tráfego de saída na porta 443. O túnel que você criar usará essa porta para se conectar ao dispositivo remoto.

  • Você tem um agente de dispositivo IoT (consulteSnippet de atendente de IoT) em execução no dispositivo remoto que se conecta ao gateway do AWS IoT dispositivo e está configurado com uma assinatura de tópico do MQTT. Para obter mais informações, consulte conectar um dispositivo ao gateway do AWS IoT dispositivo.

  • É necessário ter um daemon SSH em execução no dispositivo remoto.

  • Você baixou o código-fonte do proxy local GitHube o construiu para a plataforma de sua escolha. O arquivo executável do proxy local criado aparecerá como localproxy neste tutorial.

Abrir um túnel

Você pode abrir um túnel seguro usando a AWS Management Console, a Referência da AWS IoT API ou AWS CLI a. Opcionalmente, você pode configurar um nome de destino, mas isso não é necessário para este tutorial. Se você configurar o destino, o encapsulamento seguro entregará automaticamente o token de acesso ao dispositivo remoto usando o MQTT. Para ter mais informações, consulte Métodos de criação de túneis no AWS IoT console.

Abrir um túnel no console
  1. Vá para o hub de túneis do AWS IoT console e selecione Criar túnel.

    AWS IoT console mostrando uma lista vazia de túneis com opções para criar, fechar ou excluir túneis.
  2. Para este tutorial, selecione Configuração manual como método de criação de túneis e, em seguida, selecione Próximo. Para obter informações sobre como usar o método de configuração rápida para criar um túnel, consulte Abra um túnel e use o SSH baseado em navegador para acessar o dispositivo remoto.

    nota

    Se você criar um túnel seguro na página de detalhes de um item, poderá escolher se deseja criar um novo túnel ou usar um existente. Para ter mais informações, consulte Abra um túnel para dispositivo remoto e use SSH baseado em navegador.

    Duas opções para configurar uma conexão de túnel: Configuração rápida (SSH) ou Configuração manual, que requer a configuração de um proxy local e o gerenciamento de tokens de acesso.
  3. (Opcional) Insira as definições de configuração do seu túnel. Você também pode pular essa etapa e prosseguir para a próxima etapa para criar um túnel.

    Insira uma descrição do túnel, a duração do tempo limite do túnel e as tags de recursos como pares de valores-chave para ajudá-lo a identificar seu recurso. Neste tutorial, você pode ignorar a configuração de destino.

    nota

    Você não será cobrado com base no tempo pelo qual você mantém um túnel aberto. Você só incorre em cobranças ao criar um novo túnel. Para obter informações sobre preços, consulte Encapsulamento seguro em AWS IoT Device Management preços.

  4. Faça o download dos tokens de acesso do cliente e escolha Concluído. Os tokens não estarão disponíveis para download depois que você escolher Concluído.

    Esses tokens só podem ser usados uma vez para se conectar ao túnel. Se você perder os tokens ou o túnel for desconectado, você poderá gerar e enviar novos tokens ao seu dispositivo remoto para reconectar-se ao túnel.

    Tokens de acesso de origem e destino para criar uma conexão de túnel segura, com instruções sobre como girar e reenviar tokens, se necessário.
Abrir um túnel usando a API

Para abrir um novo túnel, você pode usar a operação OpenTunnelda API. Você também pode especificar configurações adicionais usando a API, como a duração do túnel e a configuração de destino.

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

A execução desse comando cria um novo túnel e fornece os tokens de acesso de origem e 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 tokens de acesso ao túnel

Os tokens que você obteve ao criar um túnel só podem ser usados uma vez para se conectar ao túnel. Se você perder o token de acesso ou o túnel for desconectado, você poderá reenviar novos tokens de acesso ao dispositivo remoto usando o MQTT sem custo adicional. AWS IoT o tunelamento seguro revogará os tokens atuais e retornará novos tokens de acesso para se reconectar ao túnel.

Para alternar os tokens a partir do console
  1. Acesse o hub de túneis do AWS IoT console e escolha o túnel que você criou.

  2. Na página de detalhes do túnel, selecione Gerar novos tokens de acesso e, em seguida, selecione Próximo.

  3. Baixe os novos tokens de acesso para seu túnel e selecione Concluído. Esses tokens só podem ser usados uma vez. Se você perder esses tokens ou o túnel for desconectado, você poderá reenviar novos tokens de acesso.

    Acesse tokens para dispositivos de origem e destino com opções para copiá-los ou baixá-los. O texto explica que os tokens rotativos revogam os tokens atuais e geram novos tokens de uso único para reconectar um túnel desconectado.
Para alternar os tokens de acesso usando a API

Para girar os tokens de acesso ao túnel, você pode usar a operação da RotateTunnelAccessTokenAPI para revogar os tokens atuais e retornar novos tokens de acesso para se reconectar ao túnel. Por exemplo, o comando a seguir alterna os tokens de acesso para o 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>

A execução desse comando gera o novo token de acesso, como mostrado no exemplo a seguir. O token é então entregue ao dispositivo usando o MQTT para se conectar ao túnel, se o atendente do dispositivo estiver configurado corretamente.

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

Para exemplos que mostram como e quando alternar os tokens de acesso, consulte Resolvendo problemas de conectividade de tunelamento AWS IoT seguro por meio da rotação dos tokens de acesso do cliente.

Configurar e iniciar o proxy local

Para se conectar ao dispositivo remoto, abra um terminal em seu laptop e configure e inicie o proxy local. O proxy local transmite dados enviados pelo aplicativo em execução no dispositivo de origem usando o tunelamento seguro em uma conexão segura. WebSocket Você pode baixar a fonte do proxy local em GitHub.

Depois de configurar o proxy local, copie o token de acesso do cliente de origem e use-o para iniciar o proxy local no modo de origem. A seguir, segue um exemplo de comando para iniciar o proxy local. No comando a seguir, o proxy local está configurado para receber novas conexões na porta 5555. Neste comando:

  • -respecifica o Região da AWS, que deve ser a mesma região em que seu túnel foi criado.

  • -s especifica a porta à qual o proxy deve se conectar.

  • -t especifica o texto do token do cliente.

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

A execução desse comando iniciará o proxy local no modo de origem. Se você receber o seguinte erro após executar o comando, configure o caminho da CA. Para obter informações, consulte Proxy local de tunelamento seguro ativado. GitHub

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

Veja a seguir um exemplo de saída da execução do proxy local no 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 uma sessão SSH

Abra outro terminal e use o comando a seguir para iniciar uma nova sessão SSH conectando-se ao proxy local na porta 5555.

ssh username@localhost -p 5555

Talvez seja solicitada uma senha para a sessão SSH. Quando finalizar a sessão SSH, digite exit para fechar a sessão.

Liberar

  • Fechar túnel

    Recomendamos que você feche o túnel depois de terminar de usá-lo. Um túnel também pode ficar fechado se permanecer aberto por mais tempo do que a duração especificada do túnel. Um túnel não pode ser reaberto depois de fechado. Você ainda pode duplicar um túnel abrindo o túnel fechado e selecionando Duplicar túnel. Especifique a duração do túnel que você deseja usar e, em seguida, crie o novo túnel.

    • Para fechar um túnel individual ou vários túneis a partir do AWS IoT console, acesse o Hub de túneis, escolha os túneis que você deseja fechar e escolha Fechar túnel.

    • Para fechar um túnel individual ou vários túneis usando a AWS IoT API de referência da API, use a operação da CloseTunnelAPI.

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

    Você pode excluir um túnel permanentemente do seu Conta da AWS.

    Atenção

    Uma ação de exclusão é permanente e não pode ser desfeita.

    • Para excluir um túnel individual ou vários túneis a partir do AWS IoT console, acesse o Hub de túneis, escolha os túneis que você deseja excluir e escolha Excluir túnel.

    • Para excluir um túnel individual ou vários túneis usando a AWS IoT API de referência da API, use a operação da CloseTunnelAPI. Ao usar a API, defina o sinalizador delete como true.

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