Utilisation de clés SSH

Pourquoi utiliser des clés SSH ?

Fonctionnement théorique de l’authentification par paires de clés

Les paires de clés SSH peuvent être utilisées comme moyens d’authentification pour des accès à un serveur SSH, SFTP ou encore Git.

Cette authentification repose sur un mécanisme de chiffrement asymétrique, c’est-à-dire qui utilise deux composants :

  • Une clé publique permettant de chiffrer des messages. Cette clé n’est pas secrète et peut être transmise à n’importe quel tiers

  • Une clé privée qui sert à déchiffrer les messages chiffrés à l’aide de la clé publique.

Avertissement

La clé privée doit absolument restée confidentielle et ne doit jamais être transmise à un tiers.

Bien qu’elles soient étroitement liées, la clé privée ne peut pas être calculée mathématiquement à partir de la clé publique. Par ailleurs un message chiffré par une clé publique ne peut être déchiffré QUE par la clé privée correspondante.

Ainsi si Bob veut envoyer un message secret à Sam, il utilisera les étapes suivantes :

  1. Bob demande à Sam de lui envoyer sa clé publique

  2. Bob chiffre son message avec la clé publique de Sam et lui envoie le résultat sur n’importe quel canal (même non sécurisé)

  3. Sam déchiffre ce que Bob lui a envoyé grâce à sa clé privée

Comme seule la clé privée permet de déchiffrer le message et que Sam l’a conservée bien secrète, même si quelqu’un a réussi à intercepter le message il sera dans l’incapacité de le déchiffrer. Bob et Sam sont donc assurés d’être les seuls à connaître le message secret.

Les étapes de la session d’authentification par clés SSH suivent la même logique :

  1. Le client envoie sa clé publique au serveur ainsi que le nom de l’utilisateur

  2. Le serveur compare cette clé à la liste des clés autorisées pour cet utilisateur

  3. Si le serveur trouve une correspondance, il génère un grand nombre aléatoire qu’il chiffre avec la clé publique du client

  4. Le serveur renvoie le message chiffré au client

  5. Le client déchiffre le message chiffré et renvoie le résultat déchiffré au serveur

  6. Le serveur compare le résultat renvoyé par le client avec le nombre aléatoire qu’il avait généré

  7. Si les deux correspondent, le serveur autorise l’accès

Note

Le chiffrement du transfert de fichier ne se fait pas à l’aide des clés utilisées pour l’authentification. Au lieu de cela, une clé de chiffrement symétrique est calculée pour la session grâce à l’algorithme Diffie-Hellman.

Avantages par rapport aux mots de passe

L’authentification par clés présente les avantages suivants par rapport à une authentification par mot de passe :

  • Pas besoin de retenir plusieurs mots de passe, il suffit de disposer des fichiers contenant les clés publique et privée sur le poste. De plus la même paire de clés peut être utilisée pour différents accès

  • Plusieurs clés SSH personnelles peuvent être spécifiées pour un même accès. Ainsi même si l’accès est partagé par plusieurs personnes, il est possible de déterminer la clé utilisée et donc la personne physique s’étant connectée

  • S’il faut révoquer l’accès pour une personne (par exemple lors du départ de l’entreprise), il suffit de supprimer de la liste d’accès la clé de la personne concernée. Les autres personnes toujours habilitées conservent leurs accès sans avoir à changer leurs paramétrages

  • Il n’est pas nécessaire de partager un secret (comme un mot de passe) entre l’entité ayant créé l’accès et le destinataire de l’accès. Ainsi seule la personne utilisant l’accès détient les informations de connexion nécessaires à son utilisation

  • Contrairement à un mot de passe qui peut être deviné rapidement en essayant toutes les combinaisons, cette attaque n’est pas possible avec des paires de clés SSH même en disposant de supercalculateurs

Par ailleurs cette méthode d’authentification est supportée par la plupart des logiciels comme Filezilla (SFTP), WinSCP ou Putty (SSH).

Consignes de sécurité

  1. Ne JAMAIS communiquer votre clé privée à un tiers. La clé publique peut être communiquée en toute sécurité

  2. Il est préférable de protéger votre clé privée par un mot de passe suffisamment long. Cela permet de verrouiller l’utilisation de la paire de clés même si une personne non autorisée accède physiquement au poste informatique (par exemple en cas de vol)

  3. Conserver secrète votre clé privée et prendre les mesures pour qu’elle ne soit pas accessible par quelqu’un d’autre. Par exemple, éviter d’en conserver une sauvegarde sur une clé USB qui pourrait être perdue ou volée (surtout si la clé n’est pas verrouillée par mot de passe)

  4. Préférer l’utilisation de paires de clés générées par personne, voire par poste (par exemple si quelqu’un a un PC fixe et un portable). Cela permettra de révoquer facilement l’accès en cas de départ ou de vol

  5. Utiliser des tailles de clés suffisamment grandes. Pour les clés ECDSA, prendre une taille de clé de 521 bits. Pour les clés RSA, prendre une taille de clé de 4096 bits minimum

Création des clés SSH

Linux & Mac

  • Démarrer l’application Terminal

  • Saisir la commande suivante (en remplaçant le dernier champ par votre adresse email) et faire « Entrée » :

ssh-keygen -t ecdsa -b 521 -C "mon.adresse@mail.fr"
  • On obtient le résultat suivant, la commande vous propose de modifier l’emplacement de la clé privée :

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_ecdsa):

Faire « Entrée » pour conserver le chemin par défaut /home/user/.ssh/id_ecdsa (cette valeur devrait convenir pour la plupart des besoins et si vous n’avez jamais généré de clés). Si vous souhaitez changer le chemin, saisir le chemin désiré et faire « Entrée »

  • L’étape suivante consiste à configurer une passphrase pour votre clé SSH :

Enter passphrase (empty for no passphrase):

Si vous souhaitez indiquer un mot de passe pour verrouiller l’accès à votre clé privée, le saisir et faire « Entrée » (note: il est normal que rien ne s’affiche lorsque vous saisissez le mot de passe). Attention il faudra vous souvenir de ce mot de passe pour pouvoir utiliser votre clé, veillez donc à bien le retenir. Sinon laisser vide et faire « Entrée ».

  • Le programme vous demande alors de confirmer le mot de passe. Effectuer la même manipulation qu’à l’étape précédente :

Enter same passphrase again:
  • Le programme génère ensuite la clé et indiquera où elle est stockée ainsi que d’autres informations :

Your identification has been saved in /home/user/.ssh/id_ecdsa.
Your public key has been saved in /home/user/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:YZPb3LOCPI4rfuzE99u5OdYDIxanU8PaOQLlBJ5Q1s4
The keys randomart image is:
+---[ECDSA 521]---+
|      ..+o       |
|       + o+      |
|        B* .     |
|       ..*E.=    |
|        S.oBoo   |
|     . . .B *o   |
|     .o =..+.=   |
|    ..o+ o oooo  |
|   ..++.. oo=o . |
+----[SHA256]-----+
  • Pour afficher la clé publique, entrer la commande suivante (en adaptant le chemin si vous l’avez changé) et faire « Entrée »:

cat ~/.ssh/id_ecdsa.pub

Le fichier de clé publique peut également être ouvert avec n’importe quel éditeur de texte type bloc-note (note: le répertoire .ssh est un répertoire caché à la racine du dossier de l’utilisateur) Un exemple de résultat à transmettre pour la demande de création d’accès :

ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAGX3jwiDSl9dNS5v/s+CWScrBiUvAMMMbPvex6K8t38WJMGQlfv8GrVeARyrHmj3Z
Awkn1LYYYxnjI8eNYJ3SK+8AGGUB49NlMvNVRVKDqr0liCUmFmC8p16C7AaQimL3bK84NIq9/XQLrKpLiExeUdWB7yAZxDty+pc7NKt502CH9INA== mon.adresse@mail.fr

Avertissement

Pour la création de vos accès, nous transmettre UNIQUEMENT le fichier de clé publique id_ecdsa.pub

  • Si la paire de clés doit être utilisée avec un logiciel tel que Filezilla, il peut être pratique de copier la clé dans un répertoire visible et de rajouter l’extension .pem :

cp ~/.ssh/id_ecdsa.pub ~/id_ecdsa.pem.pub
cp ~/.ssh/id_ecdsa ~/id_ecdsa.pem
chmod 0600 ~/id_ecdsa.pem

Windows

  1. Télécharger le logiciel Puttygen et l’installer

  2. Lancer le logiciel Puttygen

  3. Renseigner les paramètres suivants :

    • « Type of key to generate » : ECDSA

    • « Curve to use for generating this key » : nistp521

../_images/Puttygen_step_1.png
  1. Cliquer sur « Generate » et déplacer la souris dans le cadre gris jusqu’à ce que la barre de progression soit complètement remplie

../_images/Puttygen_step_2.png
  1. Une fois la clé générée, indiquer dans « Key comment » votre adresse e-mail

../_images/Puttygen_step_3.png
  • Si vous souhaitez protéger votre clé par un mot de passe, l’indiquer dans les champs « Key passphrase » et « Confirm passphrase »

../_images/Puttygen_step_4.png
  1. Copier la clé publique affichée dans le cadre

  2. Ouvrir le bloc-note et coller la clé publique. Enregistrer le fichier (avec le nom ssh_key.pub par exemple) et fermer le bloc-note

../_images/Puttygen_step_5.jpg
  1. Enregistrer la clé privée en cliquant sur « Save private key », donner un nom à ce fichier (ssh_key_private.ppk par exemple)

Avertissement

Pour la création de vos accès, nous transmettre UNIQUEMENT le fichier de clé publique ssh_key.pub.

Utilisation des clés pour se connecter

Filezilla

  1. Lancer Filezilla.

  2. Dans le menu supérieur, sélectionner Fichier > Gestionnaire de sites

  3. Cliquer sur « Nouveau site » et renseigner les paramètres suivants à partir des paramètres transmis par mail :

    • Hôte

    • Port

    • Protocole : SFTP - SSH File Transfer Protocol

    • Type d’authentification : Fichier de clé

    • Identifiant : (nom de l’utilisateur)

../_images/Filezilla_sftp_step1.png
  1. Sélectionner le fichier de clé à utiliser via le bouton « Parcourir » :

Pour Windows

  • Sélectionner « PPK files » et sélectionner le fichier PPK enregistré par Puttygen :

../_images/Filezilla_sftp_step2.png

Pour Linux & Mac

  • Sélectionner « PEM files » et sélectionner le fichier de clé privé généré. Note : il peut être nécessaire de rajouter au fichier de clé privé une extension « .pem » et au fichier de clé publique avec extension .pem.pub

../_images/Filezilla_sftp_step3.png
  1. Cliquer sur le bouton « Connexion ». Si un mot de passe vous est demandé, il s’agit du mot de passe de verrouillage de votre clé