Comment créer et installer des clés SSH à partir du shell Linux



La sécurité informatique est primordiale. L’utilisation de clés SSH pour les connexions à distance est une approche plus sûre que les mots de passe traditionnels. Cet article explique comment générer, installer et utiliser ces clés sous Linux.

Les limites des mots de passe

Secure Shell (SSH) est un protocole de chiffrement utilisé pour se connecter à des comptes d’utilisateurs sur des machines Linux ou Unix distantes. L’accès à ces comptes est généralement protégé par des mots de passe. Lors d’une connexion, l’utilisateur doit fournir son nom d’utilisateur et son mot de passe.

Bien que les mots de passe soient la méthode la plus courante de sécurisation, elle n’est pas sans failles. Les utilisateurs choisissent souvent des mots de passe faibles, les partagent, ou réutilisent le même mot de passe sur plusieurs systèmes. Ces pratiques compromettent la sécurité.

Les clés SSH offrent une sécurité accrue et, une fois configurées, sont aussi simples à utiliser que les mots de passe.

Pourquoi les clés SSH sont-elles plus sûres?

Les clés SSH sont créées par paires, liées et sécurisées par cryptographie. Une clé est publique, et l’autre est privée. Elles sont associées à un compte utilisateur spécifique. Chaque utilisateur d’un même ordinateur qui utilise des clés SSH aura sa propre paire unique.

La clé privée est stockée dans le répertoire personnel de l’utilisateur, tandis que la clé publique est installée sur la machine distante à laquelle on souhaite accéder.

Il est crucial de protéger la clé privée. Si elle tombe entre de mauvaises mains, la sécurité du compte serait compromise. Il est fortement recommandé de chiffrer la clé privée avec une phrase secrète.

La clé publique peut être partagée sans risque car il est impossible de déterminer la clé privée à partir d’elle. La clé privée est utilisée pour déchiffrer les messages chiffrés avec la clé publique.

Lors d’une demande de connexion, l’ordinateur distant utilise la clé publique pour chiffrer un message contenant un identifiant de session et d’autres informations. Seul l’ordinateur possédant la clé privée peut déchiffrer ce message.

L’ordinateur local déchiffre le message avec sa clé privée, puis renvoie un message chiffré à l’ordinateur distant, contenant l’identifiant de session. L’ordinateur distant vérifie que cet identifiant correspond à celui qu’il a envoyé, confirmant l’authenticité de la connexion.

Vérification de l’accès à l’ordinateur distant

Avant de configurer les clés SSH, il est important de s’assurer que la connexion SSH avec un mot de passe fonctionne correctement. Cela confirme la validité du compte utilisateur sur la machine distante et la fiabilité des informations d’identification.

Dans cet exemple, un utilisateur nommé « dave » se connecte à l’ordinateur « howtogeek » et souhaite se connecter à « sulaco ».

La commande suivante est utilisée :

ssh dave@sulaco

Le système demande le mot de passe de l’utilisateur « dave ». Une fois saisi, la connexion à « sulaco » est établie et l’invite de commande est modifiée en conséquence.

Cette connexion valide l’accès à la machine distante. L’utilisateur « dave » se déconnecte ensuite de « sulaco » avec la commande :

exit

Un message de déconnexion apparaît, et l’invite de commande revient à l’état initial « dave@howtogeek ».

Création d’une paire de clés SSH

Ces instructions ont été testées sur Ubuntu, Fedora et Manjaro, avec un processus identique et sans besoin d’installer de logiciel supplémentaire.

Pour générer les clés SSH, entrez la commande suivante:

ssh-keygen

Le processus de génération commence. Le système demande où stocker les clés. Appuyez sur Entrée pour utiliser l’emplacement par défaut, qui est sécurisé et accessible uniquement par l’utilisateur.

Il est fortement recommandé de définir une phrase secrète pour sécuriser la clé privée. Cette phrase sera demandée chaque fois que la clé sera utilisée. Évitez de laisser cette phrase vide, car cela compromettrait la sécurité. Une phrase composée de trois ou quatre mots aléatoires constitue une protection efficace.

Le système demande de saisir à nouveau la phrase secrète pour confirmer la saisie.

Les clés SSH sont alors générées et stockées.

Le « randomart » affiché peut être ignoré. Certains systèmes distants peuvent afficher cette représentation graphique à chaque connexion. Cela permet de détecter si les clés SSH du serveur ont été modifiées et ainsi d’identifier une possible intrusion.

Installation de la clé publique

La clé publique doit être installée sur la machine distante (« sulaco ») pour que cette dernière reconnaisse l’utilisateur. La commande `ssh-copy-id` permet cela. Elle établit une connexion SSH, mais au lieu de démarrer une session, elle transfère la clé publique.

ssh-copy-id dave@sulaco

L’authentification avec un mot de passe est nécessaire pour identifier le compte utilisateur cible sur la machine distante. Le mot de passe demandé est celui du compte auquel on se connecte, et non la phrase secrète précédemment créée.

Une fois le mot de passe validé, `ssh-copy-id` transfère la clé publique vers l’ordinateur distant.

L’utilisateur est renvoyé à l’invite de commande locale, sans connexion établie avec l’ordinateur distant.

Connexion via clés SSH

Pour tester la connexion avec les clés SSH, on utilise la commande :

ssh dave@sulaco

Étant donné que la clé privée est protégée par une phrase secrète, le système demande de la saisir pour poursuivre la connexion.

Après avoir entré la phrase secrète et cliqué sur « Déverrouiller », la connexion est établie. Tant que la session de terminal reste ouverte, la phrase secrète n’aura pas besoin d’être ressaisie, permettant des connexions multiples.

L’option « Déverrouiller automatiquement cette clé chaque fois que je suis connecté » permet d’éviter de saisir la phrase secrète à chaque connexion. Cependant, cette option réduit la sécurité, car une personne non autorisée pourrait utiliser la clé si l’ordinateur est laissé sans surveillance.

Une fois la phrase secrète saisie, l’utilisateur est connecté à l’ordinateur distant.

Pour vérifier le processus de bout en bout, l’utilisateur se déconnecte avec la commande `exit`, puis se reconnecte à l’ordinateur distant via la même fenêtre de terminal.

ssh dave@sulaco

La connexion à l’ordinateur distant est établie sans qu’il soit nécessaire d’entrer un mot de passe ou une phrase secrète.

Une sécurité renforcée sans mots de passe

La notion de « friction de sécurité » fait référence aux étapes supplémentaires nécessaires pour bénéficier d’une sécurité accrue. Bien que la plupart des gens préfèrent un manque de friction, les clés SSH offrent à la fois plus de sécurité et plus de commodité.