Redirecting you to
Article de blog sept. 24, 2020

Explication des clés SSH : Génération, authentification, informations sur les paires de clés, etc.

Les clés SSH améliorent non seulement la sécurité, mais permettent également l'automatisation des processus connectés, l'authentification unique (SSO) et la gestion des identités et des accès à grande échelle dont les entreprises d'aujourd'hui ont besoin.

Table des Matières

Qu'est-ce qu'une clé SSH ?

mis à jour le : 01.22.2024

Une clé SSH est un justificatif d'accès sécurisé utilisé dans le protocole Secure Shell (SSH). Les paires de clés SSH utilisent la technologie de l'infrastructure à clé publique (PKI), l'étalon-or de l'authentification et du cryptage des identités numériques, pour fournir une méthode d'authentification sécurisée et évolutive.

Le protocole SSH étant largement utilisé pour la communication dans les services en nuage, les environnements réseau, les outils de transfert de fichiers, les outils de gestion de la configuration et d'autres services dépendant de l'ordinateur, la plupart des organisations utilisent ce type d'authentification par clé pour vérifier les identités et protéger ces services contre une utilisation involontaire ou des attaques malveillantes.

Paire de clés - clés publique et privée

Une clé SSH repose sur l'utilisation de deux clés liées mais asymétriques, une clé publique et une clé privée, qui créent ensemble une paire de clés utilisée comme justificatif d'accès sécurisé. La clé privée est secrète, connue uniquement de l'utilisateur, et doit être cryptée et stockée en toute sécurité. La clé publique peut être partagée librement avec tout serveur SSH auquel l'utilisateur souhaite se connecter. Ces clés sont normalement gérées par l'équipe informatique d'une organisation ou, mieux encore, avec l'aide d'une autorité de certification (AC) de confiance pour s'assurer qu'elles sont stockées en toute sécurité.

Pour créer l'identité numérique, la clé publique et la clé privée sont toutes deux générées, et la paire est associée l'une à l'autre à l'aide d'un algorithme de cryptographie à clé publique puissant. Les algorithmes mathématiques les plus couramment utilisés pour la génération de clés sont Rivest-Shamir-Adleman (RSA) et l'algorithme de signature numérique à courbe elliptique (ECDSA), qui est une application à courbe elliptique de l'algorithme DSA.

Ces algorithmes utilisent diverses méthodes de calcul pour générer des combinaisons numériques aléatoires de longueur variable afin qu'elles ne puissent pas être exploitées par une attaque par force brute. La taille de la clé ou la longueur des bits permet de déterminer la force de la protection. Les clés RSA de 2048 bits ou les clés ECDSA de 521 bits offrent une puissance cryptographique suffisante pour empêcher les pirates de décrypter l'algorithme.

Comment fonctionnent les clés SSH ?

La paire de clés SSH est utilisée pour authentifier l'identité d'un utilisateur ou d'un processus qui souhaite accéder à un système distant à l'aide du protocole SSH. La clé publique est utilisée par l'utilisateur et le serveur distant pour crypter les messages. Du côté du serveur distant, elle est enregistrée dans un fichier de clé publique. Du côté de l'utilisateur, elle est stockée dans un logiciel de gestion des clés SSH ou dans un fichier sur son ordinateur. La clé privée reste uniquement sur le système utilisé pour accéder au serveur distant et est utilisée pour décrypter les messages.

Lorsqu'un utilisateur ou un processus demande une connexion au serveur distant à l'aide du client SSH, une séquence défi-réponse est lancée pour compléter l'authentification. Le serveur SSH reconnaît qu'une connexion est demandée et envoie une demande de défi chiffrée en utilisant les informations de la clé publique partagée. Le client SSH décrypte alors le message de défi et répond au serveur. L'utilisateur ou le processus doit répondre correctement au défi pour obtenir l'accès. Cette séquence défi-réponse se déroule automatiquement entre le client SSH et le serveur, sans aucune action manuelle de la part de l'utilisateur.

Diagramme montrant comment l'authentification par clé SSH se produit automatiquement entre le client SSH et le serveur SSH.

Authentification par clé publique SSH ou par mot de passe

À un niveau élevé, les clés SSH fonctionnent comme des mots de passe en contrôlant l'accès. Mais la similitude s'arrête là. Les identités numériques doivent être solides pour ne pas être volées, pratiques pour que l'accès soit rapide et jamais interrompu, et à l'épreuve du temps pour que les entreprises puissent rester à l'affût des menaces éventuelles.

Les mots de passe offraient autrefois une certaine sécurité, mais ils ne sont plus aussi efficaces qu'avant. En effet, les acteurs malveillants sont devenus de plus en plus habiles à voler les mots de passe en transit sur l'internet, à les extraire des référentiels et à les obtenir par des attaques par force brute.

Ces risques et problèmes de sécurité sont aggravés par le facteur humain : les gens réutilisent, partagent et oublient continuellement leurs mots de passe. Le coût pour les entreprises est élevé, non seulement en raison de la perte de données, des interruptions et de la compromission d'informations, mais aussi parce que la saisie des mots de passe prend du temps, nécessite des ressources d'assistance importantes et doit être fréquemment réinitialisée.

Grâce à la puissance cryptographique et aux méthodes d'authentification de l'ICP, les clés SSH ne sont pas sujettes aux attaques malveillantes et les informations d'identification valides ne sont pas exposées si un serveur a été compromis. La cryptographie PKI est améliorée en permanence, ce qui permet de protéger les identités contre les menaces nouvelles et en constante évolution.

L'authentification par clé SSH est également plus pratique que l'authentification par mot de passe. Les clés connectent les utilisateurs et les processus à un serveur en initiant l'authentification et en accordant l'accès automatiquement, de sorte que les utilisateurs n'ont pas à se souvenir ou à saisir leur mot de passe pour chaque système.

Cela étant dit, vous devez toujours protéger vos clés privées SSH par un mot de passe ou les stocker sur un jeton matériel pour plus de sécurité.

Où trouver vos clés SSH ?

Avant de pouvoir utiliser les clés SSH, vous devez vous assurer que votre compte d'utilisateur en dispose et, si ce n'est pas le cas, vous devez les créer. Il existe plusieurs façons de le faire, notamment en utilisant des Yubikeys ou d'autres solutions de sécurité matérielle, qui sont souvent les plus sûres. Cependant, pour une configuration plus basique, vous pouvez utiliser le répertoire .ssh.

Si vous choisissez d'utiliser le répertoire .ssh, vous pouvez trouver votre paire de clés SSH en suivant les étapes suivantes :

  1. Allez dans votre répertoire personnel et cherchez le répertoire SSH. Pour Linux et MacOS, l'emplacement par défaut est le répertoire ~/.ssh. Sous Windows, l'emplacement par défaut est C:\Users\<username>\.ssh.
  2. Recherchez deux fichiers dont le nom ressemble à id_dsa ou id_rsa. L'un d'eux portera l'extension .pub et l'autre non (par exemple, id_rsa.pub et id_rsa). Le fichier .pub est la clé publique et l'autre est la clé privée. La clé publique n'est pas toujours présente, car elle n'est pas nécessaire au fonctionnement du client.

Si vous ne trouvez pas ces fichiers dans le répertoire, ou si vous n'avez pas de répertoire du tout, vous devrez créer les clés SSH.

Comment générer une paire de clés SSH

Pour générer la paire de clés publiques/privées SSH, on peut le faire manuellement ou utiliser un système automatisé de gestion des certificats.

Les systèmes d'exploitation les plus courants permettent de générer et de stocker manuellement de nouvelles clés SSH. Sur les systèmes Windows, elles peuvent être générées à l'aide de l'outil de ligne de commande ssh-keygen ou d'un client SSH, comme PuTTy. Sur les systèmes MacOs et Linux, elles sont générées à l'aide d'une fenêtre de terminal.

Pour générer une clé SSH, suivez les étapes suivantes en ligne de commande :

  1. Entrez la commande key gen $ ssh-keygen -t rsa
  2. Saisissez le fichier dans lequel vous souhaitez enregistrer les clés. Généralement, les clés sont stockées dans le répertoire personnel ou le répertoire ~/.ssh/ (par exemple, /home/foldername/.ssh/id_rsa ou /c/Users/username/.ssh/id_rsa). Appuyez sur la touche « Entrée » une fois que vous avez choisi le nom de fichier que vous préférez.
  3. Saisissez une phrase d'authentification ou laissez le champ vide si vous ne souhaitez pas de phrase d'authentification. Remarque : la phrase de passe fournit une couche supplémentaire de protection par mot de passe pour la paire de clés, mais l'utilisateur doit saisir la phrase de passe à chaque fois qu'il utilise la paire de clés.

Une fois la paire de clés générée, l'étape suivante consiste à placer la clé publique sur le serveur distant. Un administrateur système peut copier la clé publique SSH dans le fichier authorized_keys du serveur distant à l'aide de la commande ssh-copy-id (par exemple, $ ssh-copy-id nomutilisateur@adresseIP). Vous pouvez également coller les clés à l'aide d'une commande Secure Shell (par exemple : $ cat ~/.ssh/id_rsa.pub | ssh nomutilisateur@adresseIP « mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys »).

Ces étapes vous permettent ensuite d'utiliser le fichier de clés privées pour l'authentification SSH.

Configuration de SSH

Vous pouvez configurer SSH en modifiant le fichier de configuration du système sur le serveur. En général, le nom du fichier est /etc/ssh/sshdc_config.

Une fois que vous avez accédé au fichier /etc/ssh/ssh_config, vous pouvez l'utiliser pour contrôler quels utilisateurs et quels groupes ont un accès SSH au serveur.

De même, la configuration du client local peut être effectuée dans un fichier .ssh/config. Ce fichier permet à un utilisateur d'ajouter une configuration spécifique à chaque hôte, y compris, mais sans s'y limiter, de définir la clé privée à utiliser pour chaque serveur, le nom d'utilisateur et les tunnels SSH à mettre en place.

Gestion des clés SSH

Une bonne gestion des clés SSH est essentielle pour les organisations, car ces clés permettent d'accéder aux systèmes et aux données critiques de l'entreprise. Cependant, la gestion manuelle de ces clés peut prendre beaucoup de temps et être sujette à des erreurs. La situation est d'autant plus complexe que les entreprises ont généralement des milliers, voire des millions de clés stockées dans leur environnement. La sécurité qu'elles assurent peut facilement être compromise si des politiques de configuration, d'approvisionnement et de résiliation ne sont pas mises en place et gérées activement.

Par exemple, lorsque des clés émises ne sont plus nécessaires, comme c'est le cas lorsque des employés quittent une organisation, le personnel informatique peut oublier de les résilier. La découverte de ces clés orphelines est presque impossible, ce qui crée un risque qu'elles existent sur des systèmes qui ne sont pas étroitement contrôlés. Si ces clés orphelines ne sont pas protégées, elles peuvent être volées par un acteur malveillant, qui peut alors utiliser les informations d'identification encore actives pour accéder aux systèmes et données critiques de votre entreprise.

Des solutions dédiées à la gestion des clés SSH utilisant le programme d'aide ssh-agent sont disponibles pour provisionner, configurer et mettre fin aux clés. L'utilisation de ces solutions est nettement meilleure que la gestion manuelle, mais cette approche oblige les équipes informatiques très occupées à utiliser un autre outil de gestion en plus de leurs solutions de sécurité et d'administration existantes. Les équipes informatiques devraient plutôt utiliser une solution centralisée de gestion des certificats qui gère automatiquement tous les certificats basés sur l'ICP. L'utilisation d'une approche unique de la gestion des certificats permet au personnel informatique d'effectuer toutes les tâches de gestion des clés dans un seul tableau de bord.