Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Connexion à distance au Raspberry pi 3 - SSH

Par Arthur DEVAUX Publié le 18/03/2017 à 23:13:23 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

  • Posséder un raspberry

  • Avoir installé un OS et avoir démarré dessus

  • Se connecter au réseau par Wifi (avec le pi3) ou par Ethernet le cas échéant

  • Avoir un minimum de connaissances dans l’univers de l’administration système et réseau

Ah les joies de l’informatique ! Un monde vaste et puissant faisant appel à de multitudes compétences. Nous avons parfois des idées, mais on peut vite être découragé par le flux d’information à ingérer parfois très conséquent quand il est question d’utiliser des outils / frameworks pour atteindre un objectif final.

C’est pour dire, j’ai mis 2 ans avant de me décider d’acheter un raspberry et me lancer dans des minis projets persos pour aborder toutes ces notions ou me remémorer le temps où on construisait nos mécanos, lego et autres structures incluant l’électronique.

Et finalement, on se rend compte que ça peut prendre moins de temps qu’on l’imaginait pour atteindre certains objectifs (bon faut pas voir les robots à la Boston Dynamics direct en 2 jours), le raspberry est un mini pc très ludique et peu coûteux. Toutefois il est nécessaire d’y aller par étape et de bien comprendre pourquoi elles nous seront utiles ou nécessaires.

Si vous êtes sur cet article, je suppose que vous avez déjà installé votre pi, et que celui-ci est connecté à votre réseau local, nous allons donc passer à la configuration préliminaire.

Fixer l’adresse IP fournie par le réseau au pi

Tout d’abord donc, nous allons fixer l’adresse IP que notre réseau a attribué à notre framboise lorsque nous l’y avions connecté.

Fixer l’adresse IP va nous permettre d’identifier notre matériel sur le réseau :

  • S’assurer que l’adresse n’ait pas changé suite à certaines manipulations sur notre pi (redémarrage ou autre) alors que nous avons un programme qui tourne sur une autre machine et qui requête cette adresse spécifiquement (pour consommer un service web sur le réseau local par exemple).

  • S’assurer que l’adresse soit toujours la même pour les redirections qui seront effectuées par notre fournisseur internet lorsque nous essayerons d’accéder au raspberry à distance.

  • Garder l’adresse en mémoire pour utiliser des outils de connexion au bureau du raspberry ou par SSH, sans avoir besoin de connecter un écran au raspberry et aller chercher l’adresse IP dans le terminal…

Passons à la configuration de notre adresse IP !

Première méthode : IP fixe depuis le Raspberry

Et ça se passe du côté du fichier qui suit, éditons en supposant que le raspberry soit relié par Ethernet à la box:

nano /etc/network/interfaces

Recherchons la ligne :

iface eth0 inet dhcp

Remplaçons par :

iface eth0 inet static

address 192.168.1.x

netmask 255.255.255.0

network 192.168.1.0

gateway 192.168.1.1

Pour l’adresse, modifions le "x" en vérifiant la configuration de notre interface connectée au réseau :

ifconfig

Résultat :

inet adr:192.168.1.x Bcast:192.168.1.255 Masque:255.255.255.0

Faites bien attention à prendre votre propre adresse, c'est pour ça que j'omets volontairement le dernier nombre en le remplaçant par "x".

Deuxième Méthode : Fixer l'IP depuis la box

Il nous sera également possible d’attribuer une IP fixe à notre équipement directement via l’interface de notre Box (dans mon cas, BBox de Bouygues).

Pour se connecter à l’interface admin de la Bbox, armons-nous d’un navigateur et tapons dans le champs URL :

http://192.168.1.254/login.html

Attention, l'adresse peut différer d'un FAI (Fournisseur d'Accès Internet) à l'autre, en voici une liste.

Une fois connecté à notre interface, nous pourrons y modifier l’adresse attribuée par DHCP en une adresse fixe pour ce matériel en particulier. La Box se chargera d’identifier cet équipement sur notre réseau sans se soucier de la configuration de celui-ci.

Ayant connecté mon Raspberry PI 3 en WiFi voici la procédure à suivre, veuillez l’adapter en fonction de vos besoins :

  1. Repérer l’équipement sur le réseau

  2. Cliquer sur les 3 petits points, puis sur informations détaillées :

  3. Déployer les services de la Box :

  4. Attribuer une adresse IP Statique à notre équipement dans le service DHCP de la box :

L’adresse attribuée ainsi sera connue au niveau DHCP et ne sera donc pas attribuée à un autre équipement que le PI.

La façon d’associer une IP fixe à une adresse MAC varie d’une box à l’autre mais l’opération repose sur les mêmes principes… pas de panique.

Enfin pensez à sauvegarder la config de votre box en cas de Hard Reset pour récupérer la config de vos Rasp et autres équipements afin d'éviter une perte de temps à tout reconfigurer...

Se connecter localement en SSH au raspberry

Qu’avons-nous fait lors de l’étape préliminaire ?

Nous avons fixé l’adresse IP attribuée par le DHCP à notre framboise. Hé bien grâce à cette étape, nous n’aurons aucune question à nous poser à propos de la configuration de notre raspberry pour y accéder en SSH.

En effet, l’IP étant fixée, éteindre et rallumer le pi n’aura aucun impact sur sa configuration, l’IP qui lui sera attribué par notre box sur notre réseau local sera toujours identique (par exemple : l’ip sera toujours « 192.168.1.99 »).

[Ok ça on a compris, je crois que tu n’arrêtes pas d’en parler… abrège !]

--> Hey calm down l’ami, ça arrive !

Un serveur SSH sur le Raspberry

Sur Raspberry Pi, SSH est installé par défaut (tout dépend de la distribution que vous aurez choisie), mais est désactivé pour des raisons évidentes de sécurité. Nous allons donc l’activer !

Nous ne parlerons pas de sécurisation, je vous laisse le soin de vous documenter et de vous en occuper par vos propres moyens.

Avec Linux (et oui, Raspberry tourne sous Linux), il existe plusieurs façons d’activer SSH.

Configuration par Interface Graphique

Ouvrons le menu démarrer de notre framboise, puis dirigeons-nous vers les Préférences.

Puis cliquons sur Configuration du Raspberry Pi. Une fenêtre s’ouvre, allons dans la configuration des Interfaces, pour activer SSH et VNC par exemple :

Figure 1. Onglet de configuration des Interfaces

Onglet de configuration des Interfaces

Ah oui, promis ! C’est aussi simple que ça !

Configuration par le Terminal

Pas plus compliqué que par l’interface graphique, nous allons activer notre serveur SSH par le Terminal :

  1. Taper la commande suivante:

    sudo raspi-config

  2. Sélectionner l'option "ssh"

  3. Activer le serveur en sélectionnant l’option « Enable »

  4. Un script s’exécute, et la fenêtre nous affiche un message confirmant l’activation du SSH

Congratulation, notre serveur SSH est désormais accessible depuis un réseau local, voyons comment se connecter à notre raspberry grâce à un autre équipement tel que notre ordinateur.

Un client SSH (terminal) sur l’équipement qui en prend le contrôle

J’imagine que vous connaissez tous PuTTY, alors laissez-moi vous parler d’un autre émulateur de terminal, bien plus élaboré !

J’ai nommé : MobaXTerm

Nous n’allons pas apprendre comment l’utiliser ici, mais sachez que ce client nous offre la possibilité de stocker, sous forme de « sessions » nos préférences pour se connecter à notre périphérique en un clic. En plus il embarque un serveur X permettant aux programmes distants de s’afficher sur votre machine alors que vous êtes en SSH en vacances chez Mamie…

Toutefois, la fonctionnalité que je préfère dans MobaXTerm, c’est la possibilité de voir graphiquement l’arborescence de l’équipement avec lequel nous communiquons. De plus, nous pouvons ouvrir les fichiers sur notre machine client, effectuer nos modifications, enregistrer, et poof c’est envoyé et sauvegardé sur la machine distante, c’est ti pas génial ?

Un gain de temps considérable croyez-moi. Ou alors vous avez la possibilité d’utiliser GIT pour versionner votre code, mais chaque chose en son temps, nous y reviendrons plus tard.

Bref, ouvrons un terminal avec notre émulateur de terminal préféré et lançons-nous ! Voici la commande à taper pour se connecter :

ssh –p 22 pi@192.168.1.x

Où « –p 22 » (par défaut) correspond au port SSH défini dans notre configuration.

Et « 192.168.1.x » correspond à l’adresse IP de notre raspberry au sein de notre réseau local.

N’oubliez pas de remplacer le x en fin d’adresse IP par le chiffre attribué lorsque nous avions fixé notre adresse IP.

Se connecter à distance en SSH au raspberry

Le principe est simple, pour se connecter à distance à notre Raspberry, nous allons ouvrir les ports de la BOX et les rediriger vers les ports de l’équipement cible :

Les ports par défaut :

  • SSH : 22

  • HTTP : 80

  • HTTPS : 443

Pour se connecter en SSH à distance à notre PI, il va falloir connaître notre adresse IP publique (celle de notre box lorsqu’elle communique (bidirectionnel) sur internet).

Ensuite, nous tentons une connexion sur cette adresse IP au port 22. La box internet reçoit le message, regarde dans ses règles, elle sait que le port 22 est ouvert et redirige vers telle IP sur son réseau local sur le port défini dans cette même règle.

En gros, en contactant votre box à l’adresse x.x.x.x:22 ==> Elle va contacter votre équipement sur son propre réseau interne 192.168.1.x:yy (où yy peut être différent de 22).

Dans les écrans ci-dessous, le port externe correspond à celui de votre box, et le port interne correspond à celui de votre équipement, pour que la box sache vers quel équipement (IP) et surtout sur quel port elle doit rediriger notre tentative de connexion en SSH.

  1. Déployer les services de la Box :

  2. Notre IP ayant été fixée pour la connexion SSH en réseau local ! Passons aux règles du service de Redirection de ports :

  3. Voilà ! Il ne nous reste plus qu’à connaître notre IP publique :

  4. Faut pas déconner, j'vais pas lâcher mon IP publique comme ça :p

    1. Le serveur Web du Raspberry est ainsi disponible

    2. Notre raspberry est accessible en SSH à travers Internet, en vacances chez Mamie ? Pas de problème, on peut travailler sur notre raspberry ! Elle n’a pas internet ? Ah bah c’est problématique, faut lui prendre un abonnement ! Ou alors nous pourrions faire un hotspot avec la connexion 4G de notre portable. A vous de jouer !

Je vous renvoie à la section Un client SSH (terminal) sur l’équipement qui en prend le contrôle. Il suffit simplement de changer l’adresse par l’adresse publique de votre Box, et le tour est joué.

Versionner son code avec Git et le centraliser avec Bitbucket

Ok c’est super, j’ai ma connexion SSH, mais maintenant je fais comment pour coder ? Je ne vais quand même pas coder avec « nano », je n'ai pas l’habitude, HELP ME.

Pas de panique, nous avons déjà parlé d’un formidable outil tel que MobaXTerm, mais il existe des solutions plus adaptées pour contrôler nos codes sources et gérer les versions de nos programmes / applications etc en s’assurant qu’elles soient conformes peu importe l’endroit où nous voulons l’utiliser.

Nous allons donc succinctement parler de Git et Bitbucket.

Git

D’après wikipedia, git est un logiciel de gestion de versions décentralisé. Il va nous permettre de simplifier et gérer l’évolution de nos sources. Ainsi, en le couplant à un dépôt de sources privé sur internet, nous aurons un accès permanent à nos différents programmes (si tant est que nous ayons accès à internet… Seul défaut face à une clé USB).

Bitbucket

Ce service est un service de dépôt de sources sur internet. Il va nous permettre de créer des dépôts de sources pour les centraliser en un endroit.

Nous aurons ainsi la possibilité de créer différentes équipes, différents projets, différents dépôt (Repositories), ainsi que des Snippets pour réutiliser des bouts de code à travers nos applications. Nous pourrons donc permettre à Jacquie et Michel de collaborer sur le dépôt concernant les sources de leur site web, sans qu’ils puissent voir les projets ou dépôts des autres équipes.

Conclusion

Pour conclure, je dirai que vous auriez passé plus de temps à lire et comprendre cet article qu’à réaliser les différentes actions qui y sont décrites…

Qu’est-ce que vous faites encore là ? Il ne faut pas plus de 30 minutes pour avoir une solution complètement fonctionnelle avec les outils que je vous propose ici, alors au boulot si ce n’est pas déjà fait :p

Néanmoins, je vous conseille vivement de sécuriser votre raspberry, et de sécuriser votre serveur linux tout court. Ouvrir les ports de votre box, c’est comme donner la possibilité à un cambrioleur de voire par-dessus le portail. Si la maison qui se trouve derrière n’est pas sécurisée, il lui suffira d’ouvrir la porte en testant différentes combinaisons.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels