Apertura di un tunnel per dispositivo remoto e utilizzo di SSH basato su browser - AWS IoT Core

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Apertura di un tunnel per dispositivo remoto e utilizzo di SSH basato su browser

Dalla AWS IoT console, puoi creare un tunnel dall'hub Tunnels o dalla pagina dei dettagli di un oggetto IoT che hai creato. Quando si crea un tunnel dall'hub Tunnels (Tunnel), è possibile specificare se creare un tunnel utilizzando la configurazione rapida o manuale. Per un esempio di tutorial, consultare Apertura di un tunnel e avvio di una sessione SSH su un dispositivo remoto.

Quando crei un tunnel dalla pagina dei dettagli dell'oggetto della AWS IoT console, puoi anche specificare se creare un nuovo tunnel o aprire un tunnel esistente per quell'oggetto, come illustrato in questo tutorial. Se si sceglie un tunnel esistente, è possibile accedere al tunnel aperto più recente creato per questo dispositivo. È quindi possibile utilizzare l'interfaccia a riga di comando all'interno del terminale per accedere tramite SSH al dispositivo.

Prerequisiti

  • I firewall dietro cui si trova il dispositivo remoto devono consentire il traffico in uscita sulla porta 443. Il tunnel creato utilizzerà questa porta per connettersi al dispositivo remoto.

  • È stato creato un oggetto IoT (ad esempioRemoteDevice1) nel AWS IoT registro. Questo oggetto corrisponde alla rappresentazione del dispositivo remoto nel cloud. Per ulteriori informazioni, consulta la sezione relativa alla registrazione di un dispositivo nel registro AWS IoT.

  • Sul dispositivo remoto è in esecuzione un agente per dispositivi IoT (vediSnippet dell'agente IoT) che si connette al gateway del AWS IoT dispositivo ed è configurato con un abbonamento tematico MQTT. Per ulteriori informazioni, consulta Connettere un dispositivo al gateway del AWS IoT dispositivo.

  • È necessario disporre di un daemon SSH in esecuzione sul dispositivo remoto.

Apertura di un nuovo tunnel per il dispositivo remoto

Supponiamo di voler aprire un tunnel nel dispositivo remoto, RemoteDevice1. Innanzitutto, creiamo un oggetto IoT con il nome RemoteDevice1 nel registro AWS IoT . È quindi possibile creare un tunnel utilizzando AWS Management Console l' AWS IoT API Reference API o il AWS CLI.

Configurando una destinazione durante la creazione di un tunnel, il servizio tunneling sicuro fornisce il token di accesso al client di destinazione al dispositivo remoto tramite MQTT e l'argomento MQTT riservato ($aws/things/RemoteDeviceA/tunnels/notify). Per ulteriori informazioni, consulta Metodi di creazione di tunnel nella AWS IoT console.

Per creare un tunnel per un dispositivo remoto dalla console
  1. Scegli l'oggetto, RemoteDevice1, per visualizzare i relativi dettagli, quindi seleziona Create secure tunnel (Crea un tunnel sicuro).

    Dettagli di un dispositivo denominato "RemoteDevice1" con il relativo Amazon Resource Name (ARN) visualizzato.
  2. Scegli se creare un nuovo tunnel o aprire un tunnel esistente. Per creare un nuovo tunnel, scegli Create new tunnel (Crea un nuovo tunnel). Puoi quindi scegliere se utilizzare il metodo di configurazione rapida o il metodo di configurazione manuale per creare il tunnel. Per ulteriori informazioni, consultare Apertura di un tunnel utilizzando la configurazione manuale e connessione al dispositivo remoto e Apertura di un tunnel e utilizzo di SSH basato su browser per accedere al dispositivo remoto.

Creazione di un tunnel per un dispositivo remoto mediante l'API

Per aprire un nuovo tunnel, puoi utilizzare l'operazione OpenTunnelAPI. Nel codice seguente viene illustrato un esempio di esecuzione di questo comando.

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

Di seguito viene mostrato il contenuto per il file input.json. È possibile utilizzare il parametro destinationConfig per specificare il nome del dispositivo di destinazione (ad esempio, RemoteDevice1) e il servizio che si desidera utilizzare per accedere al dispositivo di destinazione, ad esempio SSH. Facoltativamente, è anche possibile specificare parametri aggiuntivi come la descrizione del tunnel e i tag.

Contenuto di input.json

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

L'esecuzione di questo comando crea un nuovo tunnel e fornisce i token di accesso di origine e destinazione.

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

Apertura di un tunnel esistente e utilizzo di SSH basato su browser

Supponiamo che tu abbia creato il tunnel per il tuo dispositivo remotoRemoteDevice1, utilizzando il metodo di configurazione manuale o utilizzando l' AWS IoT API Reference API. È quindi possibile aprire il tunnel esistente per il dispositivo e scegliere Quick setup (Configurazione rapida) per utilizzare la funzionalità SSH basata sul browser. Le configurazioni di un tunnel esistente non possono essere modificate, pertanto non è possibile utilizzare il metodo di configurazione manuale.

Per utilizzare la funzionalità SSH basata su browser, non è necessario scaricare il token di accesso di origine o configurare il proxy locale. Un proxy locale basato sul Web verrà configurato automaticamente in modo da poter iniziare a interagire con il dispositivo remoto.

Per utilizzare il metodo di configurazione rapida e l'SSH basato su browser
  1. Vai alla pagina dei dettagli dell'oggetto creato in precedenza, RemoteDevice1, e scegli Create secure tunnel (Crea un tunnel sicuro).

  2. Scegli Use existing tunnel (Utilizza un tunnel esistente) per aprire il tunnel aperto più recente creato per il dispositivo remoto. Le configurazioni del tunnel non possono essere modificate, pertanto non è possibile utilizzare il metodo di configurazione manuale per il tunnel. Per utilizzare il metodo di configurazione rapida, scegli Quick setup (Configurazione rapida).

  3. Continua per esaminare e confermare i dettagli di configurazione del tunnel e creare il tunnel. Le configurazioni del tunnel non possono essere modificate.

    Quando crei il tunnel, il tunneling sicuro utilizzerà l'operazione RotateTunnelAccessTokenAPI per revocare i token di accesso originali e generare nuovi token di accesso. Se il dispositivo remoto utilizza MQTT, questi token verranno automaticamente distribuiti al dispositivo remoto nell'argomento MQTT a cui è iscritto. Puoi anche scegliere di scaricare questi token manualmente sul dispositivo di origine.

Dopo aver creato il tunnel, puoi utilizzare l'SSH basato su browser per interagire con il dispositivo remoto direttamente dalla console utilizzando l'interfaccia a riga di comando contestuale. Per utilizzare questa interfaccia a riga di comando, scegli il tunnel per l'oggetto creato in precedenza e, nella pagina dei dettagli, espandi la sezione Command-line interface (Interfaccia a riga di comando). Poiché il proxy locale è già stato configurato automaticamente, puoi iniziare a inserire i comandi per iniziare rapidamente ad accedere e interagire con il tuo dispositivo remoto, RemoteDevice1.

Per ulteriori informazioni sul metodo di configurazione rapida e sull'utilizzo di SSH basato su browser, consulta Apertura di un tunnel e utilizzo di SSH basato su browser per accedere al dispositivo remoto.

Pulizia

  • Chiusura del tunnel

    Al termine dell'utilizzo, si consiglia di chiudere il tunnel. Un tunnel può chiudersi anche se è rimasto aperto per un periodo di tempo superiore alla durata del tunnel specificata. Un tunnel non può essere riaperto dopo che è stato chiuso. È ancora possibile duplicare un tunnel aprendo il tunnel chiuso e quindi selezionando Duplicate tunnel (Duplica tunnel). Specificare la durata del tunnel che si desidera utilizzare, quindi creare il nuovo tunnel.

    • Per chiudere un singolo tunnel o più tunnel dalla console AWS IoT , passa all'Hub dei tunnel, scegli i tunnel che desideri chiudere, quindi seleziona Close tunnel (Chiudi tunnel).

    • Per chiudere uno o più tunnel utilizzando l' AWS IoT API Reference API, utilizza l'operazione API. CloseTunnel

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

    Puoi eliminare definitivamente un tunnel dal tuo Account AWS.

    avvertimento

    Le operazioni di eliminazione sono permanenti e non possono essere annullate.

    • Per eliminare un singolo tunnel o più tunnel dalla console AWS IoT , passa all'Hub dei tunnel, scegli i tunnel che desideri eliminare, quindi seleziona Delete tunnel (Elimina tunnel).

    • Per eliminare uno o più tunnel utilizzando l' AWS IoT API Reference API, utilizza l'operazione CloseTunnelAPI. Quando utilizzi l'API, imposta il flag delete su true.

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