Comment générer et utiliser des clés SSH sur Raspberry Pi

Utiliser des clés SSH est généralement une bonne pratique à suivre pour des raisons de sécurité ou de commodité, car cela permet d’éviter l’utilisation de mots de passe lors de la connexion via SSH. Mais comprendre exactement leur fonctionnement, trouver les bonnes commandes et mettre tout cela en pratique est un autre défi. Laissez-moi vous expliquer tout ce qu’il faut savoir sur les clés SSH dans cet article !

Sur Raspberry Pi OS, SSH est installé par défaut et les clés SSH peuvent être générées avec la commande « ssh-keygen ». La clé publique peut alors être utilisée pour accéder à des serveurs distants sans mot de passe (une fois que le Raspberry Pi est autorisé sur chaque serveur).

Je vais commencer par répondre plus en détails à la question la plus essentielle, à savoir comment générer des clés SSH sur Raspberry Pi. J’expliquerai ensuite comment les utiliser car je pense que ce sera votre prochaine question :-).

À propos, si vous débutez sur Raspberry Pi et que vous souhaitez accélérer les choses (tout en vous amusant), n’hésitez pas à télécharger mon e-book Maitrisez Raspberry Pi en 30 jours. Il s’agit d’un défi de 30 jours dans lequel vous apprendrez une nouvelle compétence chaque jour. Vous économiserez du temps et de l’argent et pourrez enfin profiter de votre Raspberry Pi à son plein potentiel. Je vous offre d’ailleurs 10% de remise aujourd’hui si vous utilisez ce lien !

Comment générer des clés SSH sur Raspberry Pi

La première étape, si vous envisagez d’utiliser des clés SSH pour vous connecter depuis le Raspberry Pi à un autre serveur, est de vous assurer que SSH est installé, puis d’utiliser une commande pour générer les clés.

Assurez-vous que SSH est déjà installé

Sur Raspberry Pi OS (toutes versions confondues), SSH est préinstallé, il n’y a donc rien de plus à faire. Mais si vous utilisez un autre système d’exploitation, il est préférable de vérifier que SSH est installé.

Vous pouvez le vérifier en utilisant la commande du gestionnaire de paquets.
Sur Raspberry Pi OS et tous les systèmes basés sur Debian, il s’agira d’APT :
sudo apt install ssh

Si vous obtenez un résultat de ce type, cela signifie qu’il est déjà installé :

S’il n’est pas installé, il sera ajouté à votre système lorsque vous exécuterez la commande (vous devrez peut-être confirmer l’installation, mais c’est tout).

Le principe derrière ce tutoriel est d’utiliser uniquement le client SSH (pour se connecter depuis le Raspberry Pi à un autre serveur), mais si vous souhaitez également activer le serveur SSH sur le Raspberry Pi (pour y accéder à partir d’un autre ordinateur), vous pouvez suivre cet autre tutoriel qui vous explique tout sur SSH. J’aborderai également l’autre façon de procéder à la fin de cet article.

Si les commandes Linux ce n’est pas trop votre truc, n’hésitez pas à jeter un œil à cet article qui vous explique les commandes qu’il faut absolument connaître. Je vous donne aussi une antisèche à télécharger pour les avoir toujours sous la main !

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Générer des clés SSH

Une fois SSH installé, cette commande permet de générer les clés SSH :
ssh-keygen -t rsa

Remarque : Le paramètre -t est facultatif sur Raspberry Pi OS, mais sur certains systèmes, la sécurité par défaut est toujours DSA. RSA est recommandé pour sa sécurité renforcée et sa meilleure compatibilité.

Vous pouvez conserver l’emplacement du fichier par défaut (/home/$USER/.ssh/id_rsa) et aucune phrase de passe n’est requise (il suffit donc d’appuyer trois fois sur Entrée pour la générer avec les paramètres par défaut).

Remarque : L’utilisation d’une phrase de passe lors de la génération des clés SSH peut ajouter une couche de sécurité supplémentaire. Ajoutez-en une en fonction de la situation. Pour une installation domestique de base, l’absence de phrase de passe est suffisamment sûre et plus pratique, mais si vous avez plusieurs utilisateurs, si vous hébergez des données critiques ou si vous souhaitez une protection supplémentaire, n’hésitez pas à ajouter une phrase de passe ici.

Vous aurez maintenant deux fichiers sous /home/$USER/.ssh :

  • id_rsa : La clé privée qui restera sur le Raspberry Pi. Ne la partagez jamais.
  • id_rsa.pub : La clé publique que vous partagerez avec chaque serveur auquel vous souhaitez accéder.

Voyons maintenant comment les utiliser, mais tout d’abord, laissez-moi vous expliquer la théorie sous-jacente, car elle n’est pas évidente lorsque c’est la première fois que vous l’utilisez.

Comment utiliser des clés SSH pour se connecter sans mot de passe ?

Lorsque l’on utilise des clés SSH sur Raspberry Pi, le but est souvent d’accéder à un serveur sans mot de passe, par exemple, dans un script, ou juste pour des raisons de commodité. Mais comme mentionné précédemment, si vous suivez ce tutoriel pour des raisons de sécurité, le processus est le même.

La théorie sur l’utilisation des clés SSH

Lorsque j’expliquais le fonctionnement des clés SSH à mes collègues, j’utilisais toujours l’analogie d’un lecteur d’empreintes digitales.

Par exemple, si votre téléphone est doté de cette fonction, vous devrez d’abord la configurer et enregistrer vos empreintes digitales dans le système afin qu’il puisse détecter s’il s’agit de votre doigt ou non la prochaine fois que quelqu’un essaiera de le déverrouiller.

Les clés SSH fonctionnent de la même manière. Ce n’est pas comme une clé et une serrure où l’on donne la clé à tous ceux qui ont besoin d’accéder à un serveur. C’est l’inverse. Chaque futur utilisateur doit d’abord s’enregistrer avant de pouvoir accéder au serveur sans mot de passe.

En résumé :

  • La première étape consiste à générer une clé SSH unique pour le client (nous l’avons déjà fait sur le Raspberry Pi).
  • Nous envoyons ensuite la clé publique SSH au serveur. Le serveur l’enregistrera afin de nous reconnaître lorsque nous essaierons de nous connecter par la suite.
  • Enfin, nous pouvons utiliser la clé SSH pour accéder au serveur sans mot de passe, le serveur nous connaît déjà, le mot de passe n’est donc pas nécessaire.

Comment utiliser les clés SSH

Pour simplifier, nous considérerons que vous essayez de vous connecter à un serveur Linux, ce qui est le cas 99 % du temps lorsque vous utilisez SSH. Il peut s’agir d’un autre Raspberry Pi ou de n’importe quel serveur fonctionnant sous n’importe quelle distribution Linux. Les étapes sont les mêmes.

Tester la connexion SSH avec un mot de passe

Avant d’essayer quelque chose de plus compliqué, essayons quelque chose de basique, qui consiste à se connecter manuellement au serveur depuis le Raspberry Pi en utilisant la commande SSH traditionnelle :
ssh <utilisateur>@<adresse_ip>

Vous avez donc besoin de deux choses à ce stade :

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant
  • Le nom d’utilisateur : sur un serveur Linux, il peut s’agir de « root » ou de n’importe quel utilisateur créé sur le serveur pour cet usage. S’il s’agit d’un autre Raspberry Pi, c’est peut-être « pi » pour une ancienne configuration ou l’utilisateur que vous avez créé au premier démarrage.
  • L’adresse IP : pour les serveurs Linux, vous pouvez suivre ce tutoriel pour obtenir l’adresse IP actuelle.

Une fois que vous avez ces deux informations et que vous avez exécuté la commande, vous devrez peut-être confirmer la connexion (tapez « yes » et appuyez sur « Enter »), puis le système vous demandera le mot de passe de l’utilisateur.
Par exemple, dans mon test, j’ai fait :
ssh pat@192.168.222.10

Une fois connecté, vous pouvez taper cette commande pour revenir à l’invite du Raspberry Pi :
exit

Transférer la clé publique au serveur

Maintenant, nous devons transférer la clé publique que vous avez générée vers le serveur distant. Comme SSH est activé et fonctionne, le moyen le plus simple est de transférer la clé via SFTP vers le serveur distant.

J’utilise généralement SCP pour ce faire. Sur le Raspberry Pi, suivez ce format de syntaxe :
scp <clé_publique> <utilisateur>@<ip>:<chemin_distant>/<fichier_distant>

  • Remplacez <clé_publique> par le chemin complet du fichier que nous venons de générer.
  • Remplacez <utilisateur> et <ip> par les mêmes valeurs que celles que vous avez utilisées pour tester la connexion SSH.
  • <chemin_distant> et <fichier_distant> peuvent être n’importe quoi, je mets généralement la clé publique dans le répertoire personnel et je lui attribue un nom comportant le client pour lequel elle est utilisée.

Pour clarifier, voici à quoi cela ressemble dans mon exemple :
scp /home/pat/.ssh/id_rsa.pub pat@192.168.222.10:/home/pat/id_rsa_rpi.pub

J’ai maintenant le fichier « id_rsa_rpi.pub » dans le répertoire personnel du serveur distant et je peux l’utiliser dans l’étape suivante pour permettre au Raspberry Pi d’accéder à ce serveur.

L’ajouter aux clés autorisées pour l’utilisateur

La dernière étape consiste à indiquer au serveur distant d’autoriser la connexion à partir du Raspberry Pi en utilisant la clé publique comme empreinte digitale. Voici les étapes à suivre pour ce faire :

  • Ouvrez un terminal sur le serveur distant. Pour ce faire, vous utiliserez généralement SSH à partir du Pi :
    ssh <utilisateur>@<adresse_ip>
  • Ajouter la clé publique au fichier authorized_keys.
    La clé publique se trouve là où vous l’avez envoyée à l’étape précédente (/home/pat/id_rsa_rpi.pub dans mon exemple), et le fichier authorized_keys se trouve sous .ssh dans le répertoire d’origine du dossier distant (la commande suivante le créera s’il n’existe pas).
    La syntaxe de la commande est la suivante :
    cat <clé_publique> >> /home/$USER/.ssh/authorized_keys
    Dans mon exemple, j’ai utilisé :
    cat id_rsa_rpi.pub >> .ssh/authorized_keys
  • Revenons au Raspberry Pi.
    Vous pouvez vous déconnecter de SSH avec :
    exit

Tester la connexion

Si tout fonctionne comme prévu, vous pouvez maintenant vous connecter depuis le Raspberry Pi au serveur distant sans mot de passe (ou en utilisant la phrase de passe utilisée lors de la génération de la clé, si vous en avez utilisé une).

Vous pouvez l’essayer avec :
ssh <utilisateur>@<adresse_ip>
Il s’agit de la même commande qu’à la première étape, mais les clés SSH ont été échangées, et donc aucun mot de passe ne devrait être demandé.

Et vous devriez être directement connecté. Dans mon exemple, cela ressemble à ceci :

Je sais, mes deux Pi ont le même nom d’hôte, ce qui est une mauvaise pratique. Mais comme vous pouvez le voir, je me connecte directement sans taper de mot de passe, ce qui était le but.

Remarque : si, pour une raison quelconque, vous avez plusieurs clés publiques sur le Raspberry Pi (parfois l’hôte du serveur en fournit une), vous pouvez spécifier le fichier à utiliser dans votre commande SSH avec l’option « -i », comme ceci :
ssh -i <clé_publique> <utilisateur>@<adresse_ip>

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Vous voulez discuter avec d'autres passionnés de Raspberry Pi ? Rejoignez la communauté, partagez vos projets en cours et posez vos questions sur le forum (en anglais).

Dans l’autre sens : utiliser des clés SSH pour accéder à un Raspberry Pi

Si votre objectif est d’accéder à un Raspberry Pi via SSH en utilisant des clés SSH au lieu d’un mot de passe, la théorie est fondamentalement la même. Ce qui diffère, c’est la manière dont vous générez les clés SSH sur votre ordinateur, et cela dépend du système d’exploitation que vous utilisez.

À partir d’un ordinateur Linux ou Mac

Si votre ordinateur, le client, fonctionne sous Linux ou macOS, les étapes et les commandes sont les mêmes.

Il faut que SSH soit installé sur le Raspberry Pi. Vous pouvez ensuite utiliser ssh-keygen pour générer les clés, et scp ou n’importe quel client SFTP pour envoyer le fichier au Raspberry Pi.

Sur le Raspberry Pi, suivez les mêmes étapes pour ajouter la clé publique au fichier des clés autorisées.

À partir d’un ordinateur Windows

Si votre ordinateur tourne sous une version récente, il y a de fortes chances que vous puissiez suivre les mêmes étapes. Pour être honnête, je le fais rarement et j’ai été étonné de découvrir que toutes les commandes (ssh, ssh-keygen et scp sont maintenant disponibles sur Windows 11).

Donc, si vous utilisez Windows 11 (et peut-être Windows 10), vous pouvez suivre les mêmes étapes que dans la procédure pour Raspberry Pi :

  • Ouvrez l’invite de commande sous Windows (Win+R, tapez « cmd », appuyez sur Entrée).
  • Générer les clés avec :
    ssh-keygen
  • Envoyez le fichier au Raspberry Pi avec scp :
  • Copiez la clé dans authorized_keys, et vous pourrez accéder au Pi sans mot de passe :

Sur les anciennes versions de Windows, vous devrez installer la suite complète du client Putty (ou tout autre client capable de gérer les clés SSH). Vous devrez utiliser PuttyGen pour générer une nouvelle clé SSH, puis l’ajouter à l’outil Pageant pour l’utiliser lorsque vous vous connectez via le client Putty habituel.

Il s’agit d’un format de fichier différent et d’un processus entièrement différent, c’est pourquoi je recommande de trouver un tutoriel détaillé sur les clés SSH Putty si cela ne fonctionne pas de cette manière.

Vous pouvez également utiliser Termius, mon client SSH actuel, qui le fait nativement avec une interface plus intuitive (vous pouvez importer ou générer des clés lorsque vous créez une nouvelle identité).

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Ressources supplémentaires pour votre Raspberry Pi

Initiation au Raspberry Pi en vidéo
Si vous débutez et voulez passer rapidement à la vitesse supérieure, j’ai exactement ce qu’il vous faut.
Regardez ma formation vidéo qui vous aidera à démarrer du bon bien, choisir votre matériel, installer les meilleures applications et vous lancer directement dans vos premiers projets avec mon aide.
Regarder les vidéos dès maintenant

Maîtrisez votre Raspberry Pi en 30 jours
Vous avez besoin de plus ? Si vous êtes à la recherche des meilleures astuces pour devenir expert sur Raspberry Pi, ce livre est fait pour vous. Développez vos compétences sous Linux et pratiquez via de nombreux projets en suivant mes guides étape par étape. 10% de remise aujourd’hui !
Télécharger le livre au format PDF ici

Maîtrisez Python sur Raspberry Pi
Pas besoin d’être un génie pour coder quelques lignes pour votre Raspberry Pi.
Je vous apprends juste ce qu’il faut sur Python afin de réaliser n’importe quel projet. La seconde partie du livre est d’ailleurs consacrée à des exemples de projets ou je vous guide pas à pas.
Ne perdez pas de temps, apprenez le strict nécessaire et économisez 10% avec ce lien :
Télécharger maintenant

Autres ressources pour profiter de votre Raspberry Pi
J’ai regroupé toutes mes recommandations de logiciels, sites utiles et de matériel sur cette page de ressources. Je vous invite à la consulter régulièrement pour faire les bons choix et rester à jour.
Visiter les pages ressources


Ce tutoriel ne marche plus à 100%? Prévenez-moi pour que je le mette à jour!

A lire également

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *