Rappel :
Nous avons vu plus haut comment contrôler le Raspberry Pi depuis un autre ordinateur au moyen d'un client SSH sur cet ordinateur.
Nous allons voir ici comment préparer et configurer son Raspberry entièrement à distance, depuis un autre ordinateur, avec l'avantage pratique de ne même pas avoir besoin d'un clavier ni d'un écran dédié. Pour cela, deux opérations distinctes seront à réaliser AVANT le tout premier démarrage du Raspberry, directement dans les fichiers sur la carte micro-SD :
activer le protocole SSH
attribuer une adresse IP fixe
Toutes les manipulations décrites ci-dessous ont été faites sur un ordinateur fonctionnant sous Linux Ubuntu 20.04
Activer le protocole SSH directement sur la carte micro-SD⚓
Hypothèse :
Situation de départ : nous venons donc de copier l'image du système Raspbian sur notre carte micro-SD.
Elle est prête à être insérée dans notre Raspberry pour son premier démarrage, comme on l'a vu plus haut dans le premier chapitre (premier démarrage).
Tout le problème consiste à pouvoir activer le protocole SSH avant d'insérer la carte dans le Raspberry et de l'allumer, si on veut pouvoir le contrôler à distance dès son premier démarrage.
Méthode :
1. Brancher à nouveau la carte micro-SD sur l'ordinateur qui a servi à la préparer, avec Raspberry Pi Imager.
Le système va la détecter et afficher deux partitions :
boot qui contient quelques fichiers
rootfs qui contient l'arborescence du système Raspbian Buster installé
Pour activer le SSH sur votre Raspberry, il suffit de créer un nouveau fichier nommé ssh dans la partition boot.
C'est tout !
2. Nous allons donc ouvrir un éditeur de texte pour créer un nouveau fichier – que nous allons laisser entièrement vide) et qu'on va « Enregistrer sous… » le nom ssh dans la partition rootfs.
Attention :
il doit rester entièrement vide
on ne met aucune extension de fichier à son nom : il s'appelle « ssh » – tout court – pas de ssh.txt ou autre !
Cette création du fichier ssh peut également être faite en ligne de commande, dans un terminal, au moyen de la commande touch en saisissant la commande suivante (adaptée à mon exemple) :
touch /home/alain/media/boot/ssh
3. Quand c'est fait, nous voyons ce fichier dans la liste des contenus de la partition boot.
Ça y est, cette première étape est terminée, le protocole SSH sera fonctionnel sur le Raspberry dès son premier démarrage, nous permettant ainsi d'en prendre tout de suite le contrôle depuis un autre ordinateur.
Attribuer une adresse IP fixe directement sur la carte micro-SD⚓
Conseil :
Pour pouvoir contrôler le Raspberry à distance via SSH, la manipulation est bien plus aisée s'il a une adresse IP fixe dans notre réseau local.
Il est possible de le faire avant même son premier démarrage, en modifiant un des fichiers système, sur la carte micro-SD.
Méthode :
1. Brancher à nouveau la carte micro-SD sur l'ordinateur qui a servi à la préparer.
Il va falloir modifier un fichier qui se trouve dans l'arborescence du système Raspbian, sur la partition rootfs.
Ce fichier s'appelle dhcpcd.conf et il se trouve dans le répertoire /etc
Il ne peut pas être modifié en l'ouvrant directement dans l'éditeur de texte de votre ordinateur étant donné que l'utilisateur standard de l'ordinateur n'a pas les droits de modification sur ce fichier, on ne l'aura qu'en lecture seule si on procède de la sorte.
Il va donc falloir l'ouvrir via le terminal, avec les droits administrateur.
2. Chercher le chemin d'accès au fichier
Pour l'ouvrir avec les droits administrateur, via le terminal, on a besoin de connaître le chemin d'accès à ce fichier : un clic-droit ➜ propriétés nous renseigne à ce sujet.
Le chemin d'accès au fichier à utiliser ensuite dans le terminal sera :
/media/alain/rootfs/etc/dhcpcd.conf
NB : ce chemin commence par /media/alain car la partition rootfs de la carte micro-SD est pour le moment ouverte sur l'ordinateur qui a servi à la préparer, elle est donc montée dans le répertoire /media de l'utilisateur, comme une simple clé USB ou un disque externe.
3. Éditer le fichier via le terminal
On peut donc maintenant ouvrir le terminal (raccourci clavier Ctrl + Alt + T) et saisir la commande suivante pour éditer le fichier en question avec gedit qui est l'éditeur de texte par défaut sur le système Linux Ubuntu :
sudo gedit /media/alain/rootfs/etc/dhcpcd.conf
Dès qu'on valide par entrée, et après avoir saisi le mot de passe administrateur, le fichier dhcpcd.conf va s'ouvrir dans l'éditeur de texte, mais cette fois-ci avec les droits suffisants pour le modifier.
NB : il est possible d'éditer le fichier directement dans le terminal avec l'éditeur nano (un peu moins simple à utiliser, la souris n'est pas active, il faut passer uniquement par le clavier).
pour enregistrer les modifications : combinaison de touches Ctrl + O au clavier et valider par la touche Entrée.
pour quitter ensuite l'éditeur nano : combinaison de touches Ctrl + X.
4. Trouver la partie à modifier
Rechercher la partie « # Example static IP configuration » (exemple de configuration d'adresse IP fixe)
C'est dans cette partie qu'il va falloir apporter quelques modifications.
NB : toutes ces lignes commencent par le caractère # ce qui fait qu'elles sont « inactives », elles sont considérées comme des commentaires dans le fichier, à ne pas exécuter.
Il va falloir « dé-commenter » 3 de ces lignes, c'est à dire enlever le caractère # pour les rendre actives, et/ou les modifier.
5. Modifier le fichier
Il faut dé-commenter les 3 lignes en jaune :
interface eth0 (pas d'autre modification)
static ip_address=192.168.1.60 ➜ je modifie ce qui existe pour renseigner l'adresse IP que je souhaite attribuer au Raspberry, ici 192.168.1.60 pour moi.
static routers=192.168.1.1 ➜ je modifie ce qui existe pour renseigner l'adresse IP de mon routeur (passerelle).
NB 1 : eth0 est le nom de l'interface réseau Ethernet pour la connexion filaire du Raspberry. Dans un premier temps, c'est la seule active et c'est celle qu'on utilisera lors du premier démarrage du Raspberry ; la configuration initiale est plus simple en filaire, on se préoccupera du WiFi plus tard si nécessaire.
NB 2 : Il faut évidemment que l'adresse IP choisie pour le Raspberry respecte le plan d'adressage des adresses utilisées par mon routeur. Dans mon exemple, j'ai un routeur Orange (Livebox) dont l'adresse (passerelle) est 192.168.1.1 et qui fournit des adresses IP du genre 192.168.1.XX pour mon réseau local.
NB 3 : il est préférable de choisir une adresse IP qui soit en dehors de la plage d'adresses attribuées automatiquement et de manière dynamique par le serveur DHCP de votre box.
Par exemple pour ma box, cette plage d'adresses contient toutes les adresses entre 192.168.1.10 et 192.168.1.50 :
En choisissant l'adresse 192.168.1.60 pour le Raspberry, je suis donc bien en dehors de cette plage d'adresses et je ne risque pas un éventuel conflit d'adresse IP avec une nouvelle machine qui se connecterait sur mon réseau local.
6. Enregistrer les modifications et quitter
Je m'assure bien d'avoir enlevé le signe # au début de ces 3 lignes, je ne touche pas aux autres lignes.
J'enregistre les modifications : Ctrl + S (ou bien Menu ➜ Enregistrer)
Je referme la fenêtre de l’éditeur de texte gedit
Je peux également maintenant refermer le terminal
Premier démarrage et premières configurations entièrement via SSH⚓
Hypothèse :
Situation de départ : nous venons d'activer SSH et d'attribuer une adresse IP fixe au Raspberry en intervenant directement sur les fichiers, sur la carte micro-SD.
Elle est prête à être insérée dans notre Raspberry pour son premier démarrage que nous contrôlerons entièrement à distance, via SSH.
Conseil : Branchements préalables nécessaires
La carte micro-SD est maintenant insérée dans son logement sur le Raspberry Pi.
un câble Ethernet est branché sur la prise correspondante sur le Raspberry et le relie au routeur (Box d'accès à internet).
Le cordon d'alimentation est branché sur le Raspberry et l'adaptateur secteur est prêt à être branché sur une prise électrique.
Il n'y a aucun clavier, aucune souris, aucun écran relié au Raspberry.
Rappel :
Dans mon exemple, toutes les manipulations décrites sont faites depuis un ordinateur fonctionnant sous Linux Ubuntu 20.04. Elles peuvent également être faites depuis un ordinateur fonctionnant sous Windows 10, via le « Windows Power Shell ». À ce sujet, on se reportera au chapitre correspondant.
Première connexion SSH⚓
Méthode :
1. Branchement
Brancher l'adaptateur secteur pour alimenter le Raspberry et lancer son premier démarrage. Patienter quelques secondes.
2. Établissement d'une connexion SSH avec le Raspberry
Ouvrir le terminal sur l'ordinateur qui servira à contrôler le Raspberry.
Saisir la commande :
ssh pi@192.168.1.60
ssh… pour utiliser le protocole ssh
pi : c'est le nom de l'utilisateur par défaut sur le Raspberry
@192.168.1.60 : pour indiquer sur quelle machine, à quelle adresse IP la connexion SSH doit être établie.
On obtient une alerte de sécurité nous prévenant que ce périphérique auquel on tente de se connecter n'est pas encore connu et authentifié sur notre machine. On va l'ajouter en répondant « yes » et en validant par la touche Entrée.
3. Connexion avec le Raspberry Pi
Après avoir validé la commande à l'étape précédente, le mot de passe d'utilisateur du Raspberry est demandé pour établir la connexion SSH.
ATTENTION : à ce stade, c'est le mot de passe par défaut de l'utilisateur par défaut du Raspberry qu'il faudra saisir.
➜ Ce mot de passe est : raspberry
Il faudra bien évidemment le modifier dès qu'on sera connecté avec le Raspberry.
➜ IMPORTANT : sur tous les systèmes Linux, quand on saisit un mot de passe dans le terminal, pour des raisons de sécurité, RIEN n'apparaît, on ne voit pas les caractères saisis, ni même des petites étoiles ou des petits cercles, comme on est habitué à voir sur d'autres systèmes. C'est normal.
La dernière ligne visible sur le terminal nous montre bien que nous sommes maintenant aux commandes du Raspberry : pi@raspberrypi : ~ $ (et non plus aux commandes de l'ordinateur qui exécute la fenêtre du terminal par lequel on a pris le contrôle du Raspberry).
Nous sommes désormais l'utilisateur « pi » sur la machine « raspberrypi ».
Changement du mot de passe par défaut⚓
On va tout suite modifier le mot de passe par défaut pour accéder au Raspberry en tant qu'utilisateur « pi » :
Dans le terminal, saisir la commande : passwd
Saisir le mot de passe actuel (par défaut) : raspberry
Saisir le nouveau mot de passe
Confirmer le nouveau mot de passe
Le mot de passe est alors modifié.
C'est ce nouveau mot de passe qu'on utilisera désormais pour toutes les autres actions à effectuer par la suite.
Exécuter l'utilitaire raspi-config⚓
Tout un ensemble de paramètres, notamment la langue, la région, l'heure, etc. peuvent être configurés depuis un utilitaire dédié qui s'exécute dans le terminal.
Cet utilitaire s'appelle raspi-config, on va l'exécuter en tant qu'administrateur pour effectuer les réglages indispensables.
Méthode : Configuration avec raspi-config
1. Lancer raspi-config
On va lancer dans le terminal l'interface de configuration raspi-config en tant qu'administrateur avec la commande :
sudo raspi-config
2. Navigation et validation des choix
On navigue entre les différentes options des listes avec les flèches haut et bas du clavier.
On accède aux choix « Select » ou « Finish » ou « OK » ou « Cancel » avec les flèches gauche et droite du clavier, ou bien avec la touche Tabulation
3. Mise à jour de l'utilitaire raspi-config
Première des choses à faire : mettre à jour l'utilitaire raspi-config lui-même pour être certains d'utiliser la dernière version.
Pour ça, on se dirigera vers l'option 8 du menu principal.
On valide, on laisse s'exécuter le processus, puis raspi-config est relancé.
4. Paramétrage de la localisation
On se rend maintenant sur l'option 4 du menu principal pour paramétrer la localisation, les options de langue, d'heure, de clavier, etc.
Après avoir validé on tombe sur un sous-menu avec 4 entrées : on les configurera toutes, l'une après l'autre, dans l'ordre.
Premier choix à valider : la langue, avec la première entrée « Change locale » qu'on choisit, puis on valide.
Sur cet écran, il va falloir faire défiler la longue liste des langues avec la flèche bas ↓ du clavier pour choisir la ligne fr_FR.UTF-8 UTF-8
ATTENTION : pour choisir une ligne, il faut appuyer sur la barre d'espace. Cela met une petite étoile entre les crochets à gauche de la ligne.
On va ensuite se positionner sur OK avec la touche Tabulation puis on valide.
On arrive sur un écran de confirmation où il faut choisir la langue par défaut.
Avec la flèche du clavier, on choisit donc la langue française puis on valide avec OK.
Il faut alors patienter quelques secondes (ou dizaines de secondes, en fonction de votre connexion internet) pour laisser le temps de télécharger les fichiers pour la langue française et de faire les modifications nécessaires.
Pendant ces quelques secondes, on retrouve le terminal où on peut voir l'avancement des opérations, puis on se retrouve à l'écran d'accueil de raspi-config.
On va donc devoir refaire le choix du menu 4 « Localisation options » pour choisir ensuite la 2e entrée : « Change timezone ».
Après un écran intermédiaire où on pourra confirmer qu'on est bien sur une zone « Europe » on arrivera sur la liste des différentes « Time zone » où le réglage par défaut est positionné sur « London ».
On fera défiler la liste pour s'arrêter sur « Paris » avant de valider.
La paramétrage est pris en compte et on se retrouve à l’écran d'accueil de raspi-config.
➜ option 4 : Localisation options
➜ choix 3 : Change keyboard layout : pour adapter les réglages de votre clavier à la configuration de langue choisie.
Là encore, après quelques secondes sur le terminal, on se retrouvera à l'écran d'accueil de raspi-config.
On va revenir une dernière fois sur l'option 4 « Localisation options » pour aller ensuite entrer sur le 4e choix : « Change Wifi country » pour adapter la configuration WiFi au pays où nous sommes.
Faire défiler la liste pour arriver jusqu'à la ligne FR France puis valider.
On sera alors ramené encore une fois sur l'écran d'accueil de raspi-config.
Les paramétrages essentiels ont maintenant été faits, on peut refermer l'utilitaire de configuration en sélectionnant « Finish » puis en validant.
On se retrouve dans le terminal.
Attention :
Il ne reste plus qu'à faire redémarrer le Raspberry pour que toutes ces modifications soient effectivement prises en compte.
➜ Pour cela, on utilise la commande : sudo reboot
Comme le Raspberry redémarre, vous allez constater dans le terminal que la connexion SSH avec lui est interrompue… forcément.
On va lui laisser une trentaine de secondes pour faire son redémarrage, puis on va de nouveau établir la connexion SSH pour passer à la suite des opérations (mises à jour du système, etc.) :
Rappel : pour cela, on va utiliser la commande ssh pi@192.168.1.60 où 192.168.1.60 est l'adresse IP fixe de mon Raspberry, bien évidemment, cette adresse sera à modifier en fonction de votre configuration.
Mise à jour du système via SSH⚓
Hypothèse :
Maintenant que la configuration initiale est faite, grâce à l'utilitaire de configuration raspi-config, après l'avoir fait redémarrer, on peut procéder à la mise à jour du système.
Nous sommes toujours connectés au Raspberry via SSH, dans le terminal.
Méthode : Mise à jour du système
1. Vérification de l'existence de mises à jour
Dans le terminal connecté au Raspberry en SSH, on saisit la commande :
sudo apt update
On entre le mot de passe administrateur du Raspberry et la recherche de mises à jour est lancée, on voit ici qu'il y a 152 paquets logiciels qui peuvent être mis à jour.
ATTENTION : le mot de passe administrateur pour le Raspberry a été modifié dans les étapes précédentes. Il ne s'agit donc plus ici du mot de passe par défaut « raspberry » mais bien de celui que vous aurez défini vous-mêmes.
2. Téléchargement et installation des mises à jour.
Nous allons maintenant lister et confirmer l'installation des mises à jour disponibles.
Pour cela, on entre la commande :
sudo apt upgrade
La liste des paquets à mettre à jour est alors affichée, on est informés de l'espace que ça prendra sur la mémoire disponible, et on est invité à confirmer l'installation : il suffit de saisir la lettre « o » pour Oui, puis de valider par Entrée.
NB : il y a autant de mises à jour car c'est la toute première vérification suite à l’installation du système. Cela va donc prendre un certain temps pour les télécharger, en fonction de votre connexion internet et surtout pour les installer (plusieurs minutes), étant donné que le Raspberry Pi n'est pas un monstre de puissance processeur. C'est normal.
Les prochaines recherches de mises à jour seront bien plus légères et rapides (quelques secondes ou dizaines de secondes), avec beaucoup moins de paquets à chaque fois.
Il faut maintenant patienter pendant le téléchargement et l'installation de toutes les mises à jour : 18 minutes sur mon Raspberry Pi 3 (2 min 15 s pour télécharger les 572 Mo des 152 paquets à mettre à jour, et tout le reste du temps pour les installer).
Conseil :
Les deux commandes décrites ci-dessus peuvent être combinées sur une seule et même ligne de commande, pour qu'elles s'exécutent l'une après l'autre, de manière enchaînée, sans interruption :
sudo apt update && sudo apt upgrade -y
➜ On combine les deux commandes au moyen de l'opérateur && et on ajoute l'option -y à la fin de la 2e commande pour forcer la réponse "Oui" lors de l'opération d’installation de mise à jour des paquets.
Complément :
Nous avons donc maintenant un Raspberry Pi entièrement configuré, avec un système à jour, et que nous sommes capable de contrôler à distance à travers le protocole SSH.
➜ Ceci sera particulièrement intéressant dans quelques cas typiques d'utilisation du Raspberry comme serveur VPN, ou comme résolveur DNS (pour bloquer toutes les pubs), ou comme serveur Cloud avec NextCloud, par exemple, etc.
De très nombreuses possibilités d'utilisation s'offrent à nous de cette manière, par exemple l'installation et l'utilisation de Pi-hole pour bloquer toutes les publicités pour tous les appareils connectés au niveau de votre réseau local (cf. chapitre suivant).