Se connecter à distance au Raspberry Pi
Introduction
Les deux derniers chapitres nous ont présenté les deux principales manières d’interagir avec votre carte Raspberry Pi qui sont le mode graphique et le mode console. Elles impliquent de disposer d’un écran et d’un clavier pour le mode console, et d’une souris en supplément pour le mode graphique.
Parfois, pour des raisons de place un Raspberry Pi est en service sans écran ni clavier connecté. D’autres applications nécessitent l’installation de la carte dans un environnement qui n’est pas facilement accessible à l’humain, où l’écran et la souris physiquement reliés à la carte n’ont aucun intérêt. Il est alors intéressant de pouvoir s’y connecter à distance pour réaliser différentes tâches sans être physiquement à proximité de la carte.
Dans ce chapitre nous allons aborder les deux modes de prise en main à distance, l’un s’appliquant au mode console et l’autre au mode graphique. Le mode console faisant intervenir le protocole SSH (Secure Shell = Shell sécurisé) reste toujours disponible, quels que soient les versions ou les systèmes d’exploitation. Le mode graphique, lui, nécessite des logiciels supplémentaires qui ont été intégrés à Raspberry...
En mode texte
1. Le protocole SSH
Depuis la nuit des temps informatiques, le mode d’accès à distance par défaut entre ordinateurs est le mode console, car très peu consommateur de bande passante sur le lien de communication entre les deux machines. Le protocole SSH (Secure Shell = Shell sécurisé) est très vite devenu un standard universel pour la prise en main en mode console, tout en assurant la sécurité des échanges. En effet, en mode console, seuls les caractères frappés au clavier et ceux générés par l’esclave transitent sur le lien réseau, et il est aisé d’observer sur ce lien les échanges et donc de reconstituer les communications, voire de les modifier. Imaginez votre mot de passe circuler sur le réseau durant la phase d’authentification ou bien le contenu de votre fichier texte en cours d’édition sous nano ou vi.
SSH inclut un mécanisme de cryptage des données faisant intervenir des clés de chiffrement. À la première connexion avec l’hôte, ces clés de chiffrement sont auto-générées (au hasard) et doivent être échangées entre l’hôte et le client afin qu’ils puissent parler le même langage. Une fois ces clés échangées, elles sont mémorisées de part et d’autre, et n’ont aucune raison valable d’être de nouveau échangées ! Sauf si l’un des deux protagonistes a pris la place de celui que vous vous attendiez à contacter. En clair, un échange de clés est toujours indiqué par les logiciels, et s’il est normal à la première connexion, il ne l’est plus pour les suivantes, et c’est un élément qui doit vous indiquer qu’il y a potentiellement un problème de sécurité, voire de piratage.
Ce protocole étant assez utilisé, il est devenu peu à peu une porte ouverte à la prise en main à distance malveillante. Il n’est pas rare que son numéro de port (le TCP 22) soit bloqué par défaut sur les pare-feu afin de limiter son utilisation à ceux...
En mode graphique
1. VNC Server
La prise en main à distance sur le Raspberry Pi peut également se faire en mode graphique (pour les variantes de Raspberry Pi OS avec environnement graphique, c’est-à-dire Desktop ou Full). Dans ce cas, il faut activer un serveur sur le Raspberry Pi dont le rôle est de transmettre l’image de l’écran vers la machine distante et de récupérer les frappes au clavier et les déplacements de la souris. Ces informations seront transmises au travers du réseau entre les machines. Inutile de vous préciser que la quantité d’informations à transmettre est bien plus conséquente qu’avec le protocole SSH.
Si par exemple votre Raspberry Pi est un Pi Zero, il est vivement conseillé d’utiliser la ligne de commande, le mode graphique étant beaucoup plus gourmand en ressources.
Dans Raspberry Pi OS, la Fondation a choisi d’intégrer VNC Server. C’est ce programme qui sera chargé de gérer la connexion des clients, de leur fournir l’image de l’écran et de recevoir les frappes de clavier et les déplacements de souris.
Comme pour SSH, VNC Server doit être activé par l’un des moyens suivants :
-
Via l’outil raspi-config, Interface Options, I3 - VNC (chapitre Installer Raspberry Pi OS, sous-section Interface options).
-
Via l’outil graphique équivalent Configuration du Raspberry Pi, onglet Interfaces (chapitre Installer Raspberry Pi OS, sous-section L’onglet Interfaces).
Vous noterez qu’il n’est pas possible d’activer VNC Server avant l’installation. Si vous souhaitez prendre la main de manière graphique immédiatement après l’installation, deux solutions sont possibles :
-
Vous branchez temporairement écran, clavier et souris sur votre Pi le temps d’activer VNC Server.
-
Vous activez SSH à l’installation. Vous réaliserez une première connexion en ligne de commande dans laquelle vous lancerez raspi-config afin d’accéder à Interface Options, I-3 VNC.
Une fois activé, le serveur VNC se matérialise par une petite icône RVNC (Real VNC) dans le tableau de bord :
Un clic gauche sur cette icône vous permettra d’accéder rapidement aux informations d’identification...
Conclusion
Il est parfois nécessaire de pouvoir utiliser un Raspberry Pi à distance. Il est même possible que ce soit le seul moyen d’exécuter des commandes sur un Raspberry Pi inaccessible physiquement.
La méthode offrant le maximum de compatibilité entre le client et le Raspberry Pi est la ligne commande avec SSH. C’est le mode de secours ultime qui fonctionnera avec toutes les cartes Raspberry Pi et sur tous types de réseau, car très peu consommateur de ressources et ne nécessitant quasiment aucun logiciel additionnel.
Le mode graphique quant à lui, est plus confortable, mais fait entrer en jeu plus de contraintes techniques. Notez par exemple qu’à l’heure de l’écriture de ces lignes RealVNC Server ne fonctionne pas encore avec la dernière version de Raspberry Pi OS Bookworm, la cause étant l’utilisation de Wayland à la place de X11 comme moteur de rendu graphique. Même problème avec TightVNC Server qui n’a pas suivi les évolutions spécifiques à Raspberry Pi OS.