Accueil » Contrôle à distance du Raspberry

Contrôle à distance du Raspberry

Contrôle à distance du Raspberry

Dans cette partie, nous allons voir comment prendre le contrôle d’un Raspberry Pi 4 à distance. Cela sera intéressant pour notre projet dans le but de créer un système embarqué de caméra thermique. En effet, le Raspberry serait le cœur d’un système avec lequel nous aimerions interagir à distance.

Dans un premier temps, nous allons donc configuré le SSH sur le Raspberry pour pouvoir initier le contrôle à distance en lignes de commande. 

Ensuite, la prise en main à distance sera améliorée par la configuration du VNC. Nous pourrons ainsi prendre totalement le contrôle du Raspberry via notre ordinateur. Nous ne serons plus limité à une simple interface en ligne de commandes comme en SSH. En effet, nous aurons par exemple accès au bureau du Raspberry.

Enfin, grâce à une clé USB Wi-Fi dont nous disposons, le but est de paramétrer le Raspberry pour lui donner sa propre adresse IP. Grâce à cela, nous allons configurer le Raspberry en point d’accès Wi-Fi afin de pouvoir maintenir la connexion SSH ou VNC même lorsque le Raspberry n’est pas connecté à un réseau particulier. Cela nous servirait dans le cas où nous voulions nous déplacer avec notre système embarqué. Ce serait alors possible partout.

La connexion en SSH depuis un ordinateur – Contrôle en ligne de commandes

Le SSH (pour Secure SHell) désigne à la fois un logiciel et un protocole de communication informatiques. Ce protocole possède par ailleurs la particularité d’être entièrement chiffré. Cela signifie donc que toutes les commandes que nous exécuterons via SSH seront totalement secrètes.

Le SSH a été créé en 1995 avec pour principal but de permettre la prise de contrôle à distance d’une machine à travers une interface en lignes de commande.

Nous allons donc utiliser le SSH pour écrire des lignes de commandes sur le Raspberry directement à partir de notre ordinateur.

Pour cela, l’ordinateur qui doit se connecter à la machine distante va fournir à celle-ci le nom de l’utilisateur à utiliser et son mot de passe. Par défaut, le SSH est installé sur la Raspberry Pi mais est désactivé pour des raisons de sécurité. La première chose à faire est donc d’activer le SSH sur notre Raspberry Pi à l’aide de la manipulation suivante :

Activation du SSH sur le Raspberry

Une fois le SSH activé, nous redémarrons le Raspberry Pi avec la commande « reboot ».

Nous récupérons aussi l’adresse IP du Raspberry, nous en aurons besoin pour nous y connecter en SSH.

Terminal

Commande "ifconfig" pour voir son adresse IP

Nous voyons sur cette capture d’écran que l’adresse IP du Raspberry qui est connecté au réseau de la maison en Wi-Fi est :

192.168.1.195

Le Raspberry est connecté via l’interface wlan0.

Ensuite, il faut installer un client SSH sur l’ordinateur pour pouvoir contrôler le Raspberry à distance. Nous installons donc le logiciel PuTTY pour cela. Il peut être installé à partir du lien suivant : «https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html».

PuTTY

1 file    2.777 MB     14/01/2021

Maintenant que nous avons mis en place le serveur et installé le client, il ne nous reste plus qu’à utiliser cela. Nous lançons donc PuTTY comme ci-dessous :

La connexion SSH avec PuTTY sur l'ordinateur

Pour information, le numéro du port (22) est le port par défaut de SSH. Ici, l’adresse IP de notre Raspberry est « 192.168.1.195 ».

Nous cliquons sur le bouton « Open ». Une fenêtre de console s’ouvre en nous demandant le nom d’utilisateur pour nous connecter puis le mot de passe. Une fois ceci fait, nous sommes connectés au Raspberry Pi et nous pouvons l’utiliser à distance en lançant des commandes depuis notre ordinateur.

Nous pouvons aussi nous connecter en SSH avec notre téléphone. Il suffit d’installer l’application JuiceSSH par exemple.

Le SSH nous permet donc de prendre le contrôle du Raspberry à distance en ligne de commandes, à partir d’un ordinateur ou d’un téléphone par exemple.

La connexion VNC – Contrôle du bureau à distance

Le VNC, ou Virtual Network Computing, est un système permettant la prise de contrôle à distance d’un ordinateur par un autre. Lors de l’utilisation de VNC, deux parties différentes du logiciel sont utilisées.
La première partie est le serveur VNC. Celui-ci est installé sur la machine dont l’on souhaite prendre le contrôle (ici le Raspberry Pi), et il va permettre la connexion et le contrôle par la partie client.

La seconde partie est donc le client VNC. Celui-ci est installé sur la machine depuis laquelle on souhaite contrôler le serveur, et il va permettre de traduire vos actions en opérations compréhensibles par le serveur qui va alors contrôler la machine distante depuis votre ordinateur.

Le gros intérêt du VNC, c’est qu’il permet de prendre le contrôle d’une machine distante, tout en affichant le bureau de celle-ci. Nous pouvons donc voir en temps réel ce qui se passe sur notre Raspberry Pi, sans pour autant avoir besoin de le brancher sur un écran.

Nous avons configuré la connexion VNC à l’aide du site «https://raspberry-pi.fr/vnc-raspberry-pi/».

Sur le Raspberry, la première étape est l’activation du VNC avec la commande « sudo raspi-config » ou avec l’interface du bureau. La méthode est la même que pour l’activation du SSH.

Activation du VNC sur le Raspberry

Pour finir, nous installons le client VNC sur l’ordinateur avec le lien ci-dessous. Le logiciel est VNC Viewer : «https://www.realvnc.com/fr/connect/download/viewer/».

VNC Viewer

1 file     10.313 MB     14/01/2021

Le serveur est mis en place dans la première étape et le client est installé. Nous pouvons donc nous connecter en VNC en ouvrant VNC Viewer. Il suffit d’indiquer l’adresse IP de la machine, le nom d’utilisateur et le mot de passe.

Prise en main à distance du Raspberry avec le VNC

La connexion VNC est opérationnelle. Nous voyons l’écran du Raspberry à partir de notre ordinateur. Comme pour la connexion SSH, nous pouvons installer un client VNC sur notre téléphone pour obtenir les mêmes fonctionnalités. Par exemple, nous avons installé VNC Viewer sur nos téléphones.

Connexion en VNC depuis un téléphone

Configuration d’un point d’accès Wi-Fi – Contrôle à distance sans réseau commun

La configuration du point d’accès Wi-Fi nous permettra de nous connecter en SSH ou en VNC directement en passant par le Raspberry. Nous ne serons donc pas obligé d’être connecté à un réseau que ce soit sur le Raspberry ou sur le PC pour se connecter en VNC. Pour réaliser la configuration, nous nous sommes aidés du site ​«https://bentek.fr/creer-hotspot-wifi-sur-raspberry-pi/».

Avant de commencer toute manipulation, nous mettons à jour notre système :

Terminal

Nous branchons maintenant notre clé USB Wi-FI. Nous faisons un « ifconfig » en espérant voir une interface wlan1 correspondant à notre dongle Wi-FI. Ce n’est pourtant pas le cas. La commande « lsusb » nous permet d’être sur que le Raspberry reconnait la clé. Nous nous renseignons donc sur le problème en cherchant des cas similaires sur Internet.

Vérification du périphérique USB correspondant à la clé Wi-Fi

La clé Wi-Fi est bien reconnue en tant que «Device 005 : WLAN Adapter».

Nous comprenons grâce au site «https://manual.raspberryshake.org/wifi.html» que le problème vient du driver, la clé n’est pas reconnu. Nous exécutons les commandes suivantes pour régler le problème : 

Terminal

Script d'installation de pilotes pour clé Wi-Fi

1 file     5.78 KB     14/01/2020

Nous avons ici récupérer un programme qui regarde les périphériques USB connectés. Ensuite, il télécharge et installe le pilote approprié pour tous les périphériques qu’il reconnaît comme un dongle Wi-FI. 

Nous redémarrons le Raspberry puis réexécutons maintenant la commande « ifconfig » : 

Vérification de la présence d'une interface wlan1 correspondant à la clé Wi-Fi

Nous pouvons maintenant commencer la configuration d’un point d’accès Wi-Fi sur notre interface wlan1. Pour cela, nous allons installer RaspAP. C’est un outil muni d’une interface web permettant de configurer son point d’accès. Nous suivons la procédure de notre source, nous exécutons donc les commandes suivantes : 

Terminal

Installation de RaspAP

1 file     2.36 KB     14/01/2021

Nous redémarrons ensuite le Raspberry. Un point d’accès Wi-Fi est maintenant ouvert. En effet, nous le voyons depuis l’ordinateur.

Le point d'accès est visible

Nous allons maintenant configurer ce point d’accès. Pour cela, il faut ouvrir le navigateur sur le Raspberry et écrire « 10.3.141.1 » dans la barre de recherche. Par défaut, le nom d’utilisateur est « admin » et le mot de passe est « secret ».

Configuration du point d'accès avec RaspAP

Nous passons le point d’accès sur l’interface wlan1 pour qu’il soit paramétré sur la clé USB Wi-Fi. Cela nous permettra de garder l’interface wlan0 pour que le Raspberry puisse toujours se connecter à Internet en Wi-Fi. Ensuite, d’autres paramètres sont réglables comme le nom du point d’accès, le mot de passe ou encore les plages d’adresse du serveur DHCP.

Cependant, avec la commande « ifconfig », nous voyons que l’interface wlan0 n’est pas bien paramétré depuis l’installation de RaspAP. Nous devons donc régler cela pour que le Raspberry puisse continuer à faire des mises à jour par exemple.

Adresse IP du Raspberry sur le point d'accès

La dernière étape est donc la configuration de l’interface wlan0 pour récupérer une connexion Wi-Fi. Ici, ce sera celle de la maison pour les tests. Nous nous aidons du site « http://www.yadoms.com/blog/2017/05/22/tuto-3-activer-le-wifi-sur-une-raspberry-pi-3/».

Avec la commande « sudo iwlist wlan0 scan », nous voyons bien que le réseau maison est reconnu par le module Wi-Fi du Raspberry.

Terminal

Pour la suite, nous allons crypter la clé d’accès grâce à la commande wpa_passphrase. Cela nous permet d’améliorer la sécurité dans notre fichier. Le premier argument de cette commande est le nom du réseau, le second est le mot de passe.

Cryptage de la clé d'accès au réseau Wi-Fi

Une fois le cryptage obtenu, nous éditons le fichier « wpa_supplicant.conf » en renseignant le réseau auquel nous souhaitons nous connecter en communiquant son SSID (nom du réseau) et le mot de passe crypté.

Terminal

Modification du fichier de configuration Wi-Fi

Nous redémarrons ensuite le wpa-supplicant avec la commande :

Terminal

Ici, le redémarrage ne se passe pas comme prévu. Il apparait un message d’erreur « failed to connect to non-global ctrl_ifname ». Nous tapons ce message sur google afin de remédier au problème. La solution est trouvée sur le site  suivant :

 « https://raspberrypi.stackexchange.com/questions/67311/failed-to-connect-to-non-global-ctrl-ifname-when-running-wpa-cli-reconfigure»

Nous modifions dans un premier temps le fichier interfaces en disant à la machine que l’interface wlan0 se connecte en utilisant les paramètres du fichier wpa_supplicant.

Terminal

Modification du fichier interfaces

Ensuite, nous revenons sur la modification du fichier wpa_supplicant :

Terminal

Configuration de la Wi-Fi

Enfin, nous redémarrons le Raspberry puis nous redémarrons de nouveau le wpa-supplicant avec la commande. Cette fois, il n’y a pas de message d’erreur.

Terminal

Nous vérifions que les changements ont bien opérés avec la commande « ifconfig » :

Interface wlan0 en Wi-Fi et wlan1 en hotspot

Enfin, nous paramétrons le routage du Raspberry pour que la connexion internet soit fonctionnelle en eth0 et wlan0.

Pour cela, il faut faire un clic droit sur le logo Wi-Fi en haut à droite du Wi-Fi.

Clic droit sur l'icone Wi-Fi du bureau
Paramétrage des préférences de l'interface eth0 et wlan0
Paramétrage des préférences de l'interface wlan1

Les interfaces eth0 et wlan0 sont configurées de la même manière en cochant la case « automatically configure empty options ». En revanche, ce n’est pas le cas pour l’interface wlan1 car elle est configurée en adresse IP fixe sans passerelle car elle ne sert qu’à la connexion point à point.

Nous vérifions que les paramètres sont bien pris en compte après un redémarrage du Raspberry avec la commande :

Terminal

La passerelle par défaut est récupérée sur l'eth0/wlan0

Les cartes eth0 et wlan0 sont configurées en client DHCP, elles récupèrent donc directement une adresse IP et la passerelle du réseau auquel elles sont connectées.

Le Raspberry est maintenant configuré comme nous le souhaitions. D’une part, l’interface wlan0 est utilisée pour se connecter à un réseau quelconque en Wi-Fi. D’autre part, l’interface wlan1 permet de lancer un point d’accès Wi-Fi grâce à l’interface apportée par la clé USB Wi-Fi branchée sur le Raspberry.

De plus, si le Raspberry est connecté à Internet au travers de l’interface eth0 ou wlan0, alors la meilleure des 2 connexions est partagée par le point d’accès Wi-Fi. Les 3 interfaces sont donc fonctionnelles (Ethernet, Wi-Fi, Point d’accès) en même temps.

Enfin, le point d’accès est donc correctement réglé. Lorsque nous sommes dans un environnement où le Raspberry et l’ordinateur sont connectés au même réseau, il n’y a pas de soucis pour le VNC ou le SSH, on passe par ce réseau.

Mais dans le cas où il n’y a plus de réseau commun aux 2 machines, nous pouvons toujours contrôler le Raspberry à distance. En effet, il suffit de connecter l’ordinateur au point d’accès Wi-Fi que nous avons nommé « Raspi Thermo Cam ». Ensuite, nous pouvons nous connecter en SSH ou en VNC grâce à l’adresse IP « 10.3.141.1 » qui a été configurée en statique sur RaspAP.

Ce point d’accès est créé automatiquement lorsque nous branchons la clé Wi-Fi sur le Raspberry, c’est donc très pratique. Nous avons réalisé une grande avancée dans le but de créer un système embarqué. A ce stade, nous ne sommes plus obligés de relier le Raspberry à un écran car nous le contrôlons depuis un ordinateur ou un téléphone en toute circonstance.​