Générer une clé publique/privée avec OpenSSH

Générer une clé publique/privée avec OpenSSH

Au sommaire :

  • 1-Qu'est-ce que OpenSSH ?
  • 2-Prérequis
  • 3-OpenSSH dans mon quotidien
  • 4-Installation
  • 5-Le fonctionnement
  • 6-Les types d'authentification
  • 7-Quel type de clé SSH choisir ?
  • 8-Création d'une clé
  • 9-Copier la clé publique
  • 10-Conclusion

1-Qu'est-ce OpenSSH ?

OpenSSH (OpenBSD Secure Shell) est une suite d'outils qui permet d'établir des connexions sécurisées à travers un réseau informatique. Il est l'implémentation SSH la plus utilisée tout systèmes confondus.

OpenSSH
the main OpenSSH page

Il chiffre l'authentification, le trafic durant la session et garantie l'intégrité des données transférés.

Il est composé de différents utilitaires comme :

  • sshd (le daemon ou processus)
  • ssh qui remplace rlogin, rsh et telnet
  • scp (secure copy) qui remplace rcp (remote copy)
  • sftp (Secure File Transfert Protocol) qui remplace le ftp
  • ssh-keyscan qui cherche et trouve vos clé publique sur le réseau
  • ssh-keygen qui permet de générer une paire de clé privée/publique
  • ssh-add qui ajoute votre identité au ssh-agent

À noter que rlogin, rsh, rcp, telnet et ftp sont non chiffrés contrairement aux alternatives proposés par OpenSSH.

Partie intégrante du système OpenBSD, il est basé sur un fork de OSSH de Björn Grönvall qui lui-même était un fork de la version originale de SSH développé par Tatu Ylönen. La version 1.2.12 est en effet la dernière ayant une licence permettant un fork.

Sorti initialement le 1er décembre 1999 (23 ans déjà), il est actuellement en version 6.2, diffusé sous licence BSD et maintenu par l'équipe de OpenBSD.

À noter qu'il est également disponible sur Windows 10 depuis la build 1809, Windows 11 et Windows Server 2019/2022.

2-Prérequis

Aucun prérequis à part d'avoir une distribution Linux. Prenez note que j'utilise Debian et Ubuntu pour des questions d'habitude et de popularité.

3-OpenSSH dans mon quotidien

J'utilise OpenSSH au quotidien, que ce soit au travail ou à la maison.

Il me permet de me connecté à n'importe quelle machine de mon réseau local et ce, sans mot de passe. Il me suffit simplement de copier ma clé publique avec la commande "ssh-copy-id username@ip_address"

il me sert également à transférer des fichiers avec scp et sftp.

J'ai également installer OpenSSH sur le poste client d'un de mes amis sous Windows 10 et cela me permet de lui transférer des fichiers très facilement via l'explorateur de fichiers, scp ou sftp.

Bref, il est INDISPENSABLE et vous devez comprendre comment fonctionne ce dernier. Vous allez voir qu'il va vous rendre de fiers services si vous le manipulez bien.

4-Installation

Debian/Ubuntu

Il est installé par défaut mais si ce n'est pas le cas, voici la commande.

sudo apt install openssh-server

Enfin, vérifiez que le daemon est actif.

Windows

Depuis Windows 10 et la build 1809, il est désormais possible de se connecter au système via le protocole SSH comme sur Linux (plus besoin du logiciel Putty) avec l’intégration native de OpenSSH.

Pour installer OpenSSH Server, allez dans la barre de recherche et cliquez sur "Settings".

Cliquez sur Apps\Optional features\View features et cochez la case pour installer OpenSSH Server.

Enfin, pour activer le service au démarrage, allez dans « services ».

Localisez le service "OpenSSH SSH Server".

Et dans "Startup type", basculez du mode "Manuel" à "Automatic" puis cliquez sur "Start" pour démarrer le service à chaque démarrage.

5-Le fonctionnement

Avec la commande "ssh-keygen", OpenSSH génère une paire de clé qui comprend :

  • Une clé publique
  • Une clé privée

La clé publique chiffre le trafic entre vous et la machine cible. Vous devez la copier au préalable sur cette dernière pour pouvoir vous authentifier.

La clé privé déchiffre le trafic entre vous et la machine cible. C'est la clé la plus sensible car si vous vous la faites dérober et que vous avez pas prévu de passphrase, l'attaquant peux se connecté aux machines à votre insu.

Si vous générez une paire de clés RSA (algorithme par défaut), vous trouverez deux fichiers :

  • id_rsa (clé privée)
  • id_rsa.pub (clé publique)

Les deux clés vont de "pair" (humour). L'une ne peut fonctionner sans l'autre car comme vu plus haut, l'une chiffre et l'autre déchiffre à la volée.

Si vous avez compris le fonctionnement, vous comprenez également les avantages que vous pouvez en tirer de vous authentifier avec votre clé plutôt qu'avec un mot de passe. C'est un gain de temps non négligeable.

6-Les types d'authentification

Il en existe 3 :

  • Mot de passe
  • Clé publique sans passphrase
  • Clé publique avec passphrase

L'authentification par mot de passe est celui utilisé par défaut par nombre de personne mais peut devenir fastidieux à la longue.

L'authentification par clé publique sans passphrase est risqué car en cas de vol, il est très facile pour l'attaquant de se faire passé pour vous.

L'authentification par clé publique avec passphrase est la solution préconisée pour faciliter et sécuriser la connexion à vos machines.

Pour ce tutoriel et pour des raisons de simplicité, nous allons créer une paire de clés sans passphrase. Nous verront l'usage du passphrase dans un prochain tutoriel orienté sécurité.

7-Quel type de clé SSH choisir ?

RSA est celui utilisé par défaut. Il est robuste, plus ancien et dispose d'une compatibilité plus large, notamment avec les clients SSH qui date d'avant la version 6.5 de OpenSSH (2014).

Mais bon là on est sur du cas ULTRA spécifique. À moins d'avoir de vieilles machines de production utilisant OpenSSH 6.5 ou plus ancien, ce qui est pas le cas des utilisateurs comme vous et moi qui sommes à jour au niveau de nos outils.

ECDSA et ED25519 sont plus récents, plus robustes mais disposent d'une compatibilité moindre, notamment avec les clients SSH qui date d'avant la version 6.5 de OpenSSH.

ECDSA est très connu du milieu des cryptomonnaies car il est celui utilisé par le Bitcoin donc autant dire qu'en terme de sécurité, au dessus c'est le soleil.

ECDSA, technologie clé de bitcoin
Bitcoin est un réseau P2P sur internet qui permet aux participants de partager une base de données de transactions. Un bitcoin (ou une fraction de bitcoin) passe d’une adresse à une autre grâce à un message de transaction signé par le propriétaire de l’adresse bitcoin d’origine. Une transaction est…

Pour ce tutoriel, nous allons utiliser RSA.

Pour en savoir plus sur ECDSA et ED25519 :

Elliptic curve digital signature algorithm — Wikipédia
EdDSA — Wikipédia

8-Création d'une clé

Pour créer une paire de clés par défaut, tapez simplement la commande suivante.

ssh-keygen
  • Confirmez le choix du dossier par défaut qui est /home/username/.ssh
  • Ajoutez ou non un passphrase (mettez-en un bien costaud)

Félicitation!!!! Vous avez généré une paire de clés pour votre compte utilisateur.

Il existe deux endroits où les clés sont stockés par défaut :

  • /etc/ssh (compte root)
  • /home/username/.ssh (comptes utilisateur)

Le compte root dispose par défaut de paires de clés RSA, ED25519 et ECDSA.

En ce qui concerne les accès, que ce soit dans "/etc/ssh" et "/home/username/.ssh", voici la configuration par défaut du système.

  • Clés publiques (_key.pub) : en lecture/écriture (rw) pour le compte et lecture seule (r) pour le groupe et l'extérieur
  • Clés privés (_key) : en lecture/écriture (rw) pour le compte

L'utilisateur et le groupe seront "username:username" pour un compte utilisateur ou "root:root" pour le compte root.

9-Copier la clé publique

Lorsque vous aurez créer votre paire de clés, il vous faudra copier la clé publique vers la machine cible :

  • Utilisez la commande "ssh-copy-id"
  • Vérifiez que l'authentification par mot de passe est activé sur la machine cible (activé par défaut)
  • Indiquez le nom de l'utilisateur sur la machine cible ainsi que son adresse IP

Note : je reprend l'exemple du tutoriel sur RetroNAS.

ssh-copy-id retronas@192.168.0.10

Bravo!!! Vous avez copier votre clé. Maintenant, tentez de vous connecté et si tout se passe bien, vous devriez avoir ceci.

ssh retronas@192.168.0.10

10-Conclusion

Si vous avez suivi ce tutoriel, vous avez appris :

  • L'historique de OpenSSH
  • Le fonctionnement
  • La différence entre les différents algorithmes
  • À créer une paire de clés
  • À copier votre clé publique
  • À vous connecté sans mot de passe

On a à peine effleurer le sujet et pour ne pas trop charger la mule, je découperai ce tutoriel en plusieurs parties.

Sources :

OpenSSH
the main OpenSSH page
OpenSSH - Wikipedia
OpenSSH — Wikipédia