Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Programmation > Sorties de root > Se connecter à son robot depuis Internet avec ngrok

Se connecter à son robot depuis Internet avec ngrok

lundi 1er décembre 2014, par Julien H.

Il existe plusieurs manières de se connecter à un robot à distance. Quand le robot est sur un réseau local - Nono au CIV par exemple - et qu’on ne peut pas configurer de passerelle réseau pour y accéder depuis Internet - chez soi par exemple - on peut utiliser un service du Cloud comme ngrok.

Le principe

Un logiciel local sur le robot crée un tunnel avec le serveur ngrok qui expose sur une adresse simple (nom du projet . ngrok . com) les ports d’accès sur le robot.

Installation sur Raspberry Pi

Le téléchargement depuis le site ngrok est plus simple à faire depuis un ordinateur (sous Linux) par exemple pour ensuite transférer le fichier ngrok.zip vers la Raspberry Pi.

Il faut télécharger la version Linux/ARM (car la puce de la Raspberry Pi est un ARM et pas un processeur x86 de PC).

L’envoi peut se faire avec une copie sécurisée (scp) ou avec un client SFTP afin d’utiliser la liaison SSH (pi/raspberry).

Voilà ce que ça donne pour transférer le fichier depuis le PC atelier4 du local sur le robot Nono dans le répertoire /home/pi/local/ :

pobot@atelier4:~/Downloads$ scp ngrok.zip pi@pibot-nono.lan:~/local/ 
pi@pibot-nono.lan's password: raspberry
ngrok.zip                                100% 3022KB   3.0MB/s   00:01    
pobot@Atelier4:~/Downloads$ 

On se connecte ensuite à Nono.

pobot@atelier4:~/Downloads$ ssh pi@pibot-nono.lan
pi@pibot-nono.lan ~ $ cd local
pi@pibot-nono ~/local $ unzip ngrok.zip 
Archive:  ngrok.zip
  inflating: ngrok                   
pi@pibot-nono ~/local $ 

Et c’est fini ! Vous pouvez déplacer l’exécutable où vous voulez (/usr/local/bin par exemple) mais ce n’est pas obligatoire.

Connexion avec ngrok

On se crée un compte sur https://ngrok.com en payant le prix qu’on estime juste (il faut en avoir le besoin, mais un tel dispositif m’a souvent manqué donc 30€ est un juste prix).

Dans la page "dashboard", les instructions vous sont données pour créer la première liaison.

Voici ce qu’on exécute sur la Raspberry Pi (avec le token qui correspond à votre compte) :

pi@pibot-nono ~/local $ ./ngrok -authtoken i42jhLoLptdrHmdrA9Q 80
ngrok                                                                            
                                                                                 
Tunnel Status                 online                                             
Version                       1.7/1.6                                            
Forwarding                    http://77da7c7a.ngrok.com -> 127.0.0.1:80          
Forwarding                    https://77da7c7a.ngrok.com -> 127.0.0.1:80         
Web Interface                 127.0.0.1:4040                                     
# Conn                        0                                                  
Avg Conn Time                 0.00ms  

Il faut appuyer sur CTRL+C pour sortir. Ce premier test valide juste que ngrok fonctionne sur votre carte et qu’il arrive à se connecter au serveur pour obtenir une adresse Internet (http://77da7c7a.ngrok.com).

Si vous avez fait tourner un serveur web sur votre robot, vous pourrez y accéder via cette adresse, mais nos besoins concernent plutôt un tunnel SSH pour se connecter au robot.

Ouvrir un tunnel SSH

Il faut rajouter le protocole TCP et bien sûr le port 22 :

pi@pibot-nono ~/local $ ./ngrok -authtoken i42jhLoLptdrHmdrA9Q -proto=tcp 22
ngrok                                                            (Ctrl+C to quit)
                                                                                 
Tunnel Status                 online                                             
Version                       1.7/1.6                                            
Forwarding                    tcp://ngrok.com:38027 -> 127.0.0.1:22              
Web Interface                 127.0.0.1:4040                                     
# Conn                        0                                                  
Avg Conn Time                 0.00ms                          

Désormais, on peut se connecter via "ssh -p 38027 pi@ngrok.com" avec le mot de passe "raspberry" (le port a été changé pour l’exemple...).

Vos commentaires

  • Le 1er décembre 2014 à 17:20, par Eric P. En réponse à : Se connecter à son robot depuis Internet avec ngrok

    Pour information, on peut aussi déployer ngrok sur son propre serveur. Il suffit qu’il ait un nom public ou une adresse IP fixe, afin que les protagonistes puissent s’y connecter via ce paramètre.
    C’est la configuration que nous utilisons au labo pour monitorer tous les boitiers d’analyse qui sont déployés dans la nature, y compris derrière des box ADSL et sans devoir modifier la config de celles-ci pour rendre visible le boitier cible.

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.