Accéder au Pi par SSH depuis Windows : authentification par clé

key_pc_1

Pour accéder à un serveur (le Rasperry Pi) par SSH, il y a deux solutions :

  • taper un mot de passe à chaque connexion
  • s'identifier par une clé avec ou sans mot de passe.

L'utilisation d'une clé SSH avec mot de passe est la solution la plus sûre.

 

Malgré tout, nous allons voir ici l'installation d'une clé sans mot de passe pour des raisons de commodité mais aussi pour pouvoir plus tard mettre en place une sauvegarde automatique d'un serveur nextcloud sur le Pi.

Ce guide concerne une installation depuis Windows. La version Linux est disponible ici.

Clé SSH : Fonctionnement

 

Pour se connecter en SSH à un serveur, le client (l'ordinateur depuis lequel on établit la connexion) va devoir s'authentifier.

Soit il le fait grâce à un mot de passe, soit par une clé.

 

Avantages d'une clé d'authentification SSH

L'identification par  un mot de passe a plusieurs inconvénients :

  • il faut taper un mot de passe à chaque connexion SSH. Il est difficile dans ce contexte d'opérer une connexion automatique (dans le cas d'une sauvegarde automatique depuis un poste client par exemple).
  • pour éviter les attaques par force brute, il faut choisir un mot de passe complexe, difficile à retenir et pénible à taper au clavier.
  • l'échange de mot de passe est susceptible d'être vulnérable à une attaque de l'homme du milieu (interception de l'échange entre le client et le serveur) ou d'un key-logger (logiciel espion enregistrant les frappes sur le clavier).

L'identification par clé SSH permet de dépasser ces inconvénients :

  • possibilité d'authentification sans mot de passe et sans frappe sur le clavier.
  • inviolabilité de la clé largement supérieure à un mot de passe complexe.

 

Inconvénients d'une clé d'authentification SSH

Il y a tout de même quelques inconvénients à l'utilisation d'une clé SSH :

  • si l'on utilise une clé SSH sans mot de passe, elle est stockée sur l'ordinateur client en clair. N'importe qui ayant accès à cet ordinateur peut donc lire ou recopier la clé. Il est donc important que l'ordinateur client disposant de cette clé soit lui-même protégé (chiffrement du disque dur par exemple).

 

  • la clé privée doit être présente sur chaque appareil client. Si on est susceptible de se connecter depuis plusieurs ordinateurs, cela pose le problème de transfert de la clé privée à chacun des clients. Ce point est à considérer en particulier quand on ne peut pas faire une copie physique par clé USB par exemple (le transfert de la clé privée par internet est en effet déconseillé pour des raisons de sécurité).

 

Principe de l'authentification par clé

L'authentification par clé fait intervenir 2 clés :

  • une clé privée stockée sur l'ordinateur client (celui depuis lequel on se connecte)
  • une clé publique sur le serveur (celui vers lequel on se connecte).

Lorque l'on se connecte, le serveur va vérifier que la clef publique dont il dispose correspond à la clé privée stockée sur le client. Si c'est le cas, la connexion est établie.

Il est possible d'ajouter un mot de passe à cette authentification. À la première connexion SSH lors d'une session, il faut alors donner le mot de passe configuré pendant de la génération des clefs.

Durant le reste de la session, il ne sera plus nécessaire de redonner ce mot de passe.

Installation de l'authentification SSH par clé

Préparatifs

Nous allons commencer par télécharger deux utilitaires si nous ne les avons pas encore :

  • putty.exe : permet de se connecter en SSH depuis Windows
  • puttygen.exe : permet de générer des clés d'authentification SSH.

 

Ensuite, nous nous connectons sur le serveur (ici le Raspberry Pi) pour créer un répertoire qui accueillera la clef SSH publique.

Nous lançons l'utilitaire putty.exe, nous rentrons l'adresse réseau du Pi puis donnons le mot de passe.

Une fois sur le Pi, dans le terminal, taper les commandes suivantes :

lambda_user@myweb:~ $ cd
lambda_user@myweb:~ $ mkdir .ssh
lambda_user@myweb:~ $ logout

Création de la clé SSH

Dans le cas où aucune clé SSH n'existe déjà, nous allons en créer une grâce à l'utilitaire puttygen.exe.

Lancer puttygen.exe

Sur la page d'accueil, vérifier que le protocole SSH-2 RSA est bien coché, dans Number of bits in a generated key, mettre 4096 puis cliquer Generate :

 

putty 1er écran

 

La génération de la clé se lance. Bouger la souris dans la partie vide afin d'augmenter l'entropie :

 

puttygen entropie

 

Une fois que la clé est générée, cliquer sur Save private key afin d'enregistrer la clé privée sur le disque dur.

Si vous souhaitez donner un mot de passe à la clé privée afin qu'elle ne soit pas lisible sur l'ordinateur client, remplir Key Passphrase et Confirm passphrase. C'est une procédure plus sûre mais qui obligera à donner le mot de passe à chaque première connexion au serveur (au Pi) durant une session.

 

puttygen enregistrer clé privée

 

Si nous avons choisi de ne pas donner de mot de passe, un écran d'avertissement nous demande de confirmer ce choix :

 

puttygen sans mot de passe

 

Dans l'écran suivant, donner un nom à la clé privée (et éventuellement changer le répertoire de destination) :

 

puttygen nom clé privée

 

La clé privée est maintenant enregistrée.

Ne pas fermer puttygen.exe !

L'étape suivante va consister à envoyer la clé publique sur le serveur (le Raspberry Pi).

Copie de la clé publique sur le serveur

Maintenant que les deux clés ont été créées, il faut copier la clé publique sur le serveur (le Raspberry Pi).

Avec putty.exe, on se connecte sur le Pi :

 

putty connexion pi

 

Une fois connecté, on lance les commandes suivantes :

$ cd ~/.ssh
$ nano authorized_keys

Cela va ouvrir l'éditeur de texte.

On retourne dans la fenêtre de puttygen, on sélectionne le texte dans la cartouche du haut Public key for pasting in OpenSSH authorized_keys file, clic droit et copier :

 

puttygen copie clé publique

 

Puis on colle le code sélectionné dans la fenêtre ouverte sur le Pi.

Ctrl-o pour enregistrer, Ctrl-x pour fermer nano. On ferme ensuite putty.

$ logout

 

Il faut maintenant enregistrer les différents paramètres dans putty.

Relancer putty.exe.

Dans le menu de gauche, aller sur SSH puis sur Auth. Dans la fenêtre à droite, à droite de la cartouche Private key file for authentification, cliquer Browse...

 

putty browse private key

 

Aller chercher le fichier précédemment enregistré contenant la clé privée et cliquer sur ouvrir :

 

fichier clé privé

 

Toujours dans putty, dans le menu à gauche, sous Connection, se positionner sur Data et dans la cartouche Auto-login username, mettre le nom de votre utilisateur du serveur Pi :

 

putty auto-login

 

Dans le menu de gauche de putty, revenez enfin tout en haut sur Session, rentrer l'adresse sur le réseau du serveur Pi (ici 192.168.0.15), dans Saved session, inscrivez Pi puis cliquer sur Save :

 

putty sauvegarder session

 

Dorénavant, il suffira de vous mettre sur la session sauvegardée "Pi" pour pouvoir ouvrir une connexion SSH avec le Pi sans taper de mot de passe.

Désactiver l'authentification par mot de passe

Maintenant que l'authentification par clé est fonctionnelle, on peut désactiver l'authentification par mot de passe pour gagner en sécurité.

On peut également garder les deux méthodes d'authentification si on souhaite utiliser le mot de passe pour se connecter depuis des ordinateurs différents et uniquement utiliser la clé pour une sauvegarde automatique du serveur vers le client par exemple.

Pour enlever la possibilité de s'authentifier par mot de passe, sur le serveur (le Raspberry Pi), il faut modifier la configuration de SSH.

On se connecte en SSH par l'intermédiaire de putty.exe, ce qui nous permet de vérifier que l'identification par mot de passe fonctionne.

Si c'est bien le cas, on peut désactiver l'authentification par mot de passe.

Une fois sur le serveur :

$ sudo nano /etc/ssh/sshd_config

Dans la fenêtre qui s'ouvre, chercher la ligne :

PasswordAuthentication yes

et modifier ainsi :

PasswordAuthentication no

Ctrl-o pour enregistrer les changements, Ctrl-x pour quitter l'éditeur.

Redémarrer le serveur pour prendre en compte les modifications.

 

La connexion SSH grâce à une clef et sans mot de passe est installée.

You may also like...

Laisser un commentaire

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