Sécurisation de vos connexions SSH

Sommaire
Dans cet article, nous allons voir comment sécuriser vos connexion SSH, en vous proposant de mettre en place un échange de clés, bien plus sécurisé qu’une simple authentification par mot de passe. Nous allons également mettre en place un fichier de configuration permettant l’utilisation de plusieurs clés.
SSH c’est quoi ?
SSH, ou Secure Socket Shell, est un protocole réseau qui permet aux administrateurs d’accéder à distance à un ordinateur, en toute sécurité. SSH désigne également l’ensemble des utilitaires qui mettent en oeuvre le protocole. Le protocole Secure Shell assure une authentification forte et des communications de données chiffrées sécurisées entre deux ordinateurs connectés sur un réseau peu sûr, tel qu’Internet. SSH est largement utilisé par les administrateurs réseau pour gérer à distance les systèmes et les applications, car il leur permet de se connecter à un autre ordinateur sur un réseau, d’exécuter des commandes et de déplacer des fichiers d’un ordinateur à un autre.
Création d’une clé
A noter que ce que je vais indiquer ici est valable aussi bien pour un client sous Linux, Mac, ou Windows (10 et 11).
Il existe différents algorithmes pour créer des clés. Le plus connu, le RSA. Toutefois, je vais vous proposer un algorithme plus récent, et surtout offrant un meilleur niveau de sécurité, le ed25519.
“Ed25519 a pour but de fournir une résistance aux attaques comparable à celle des chiffrements de 128-bits de qualité. Les clés publiques sont encodées sur 256 bits (32 octets) de long et les signatures sont deux fois plus longues.”
Pour créer votre paire de clé de type ed25519, voici la commande à utiliser :
ssh-keygen -t ed25519 -a 100
Quelques questions vous seront posées :
- L’emplacement où générer les clés (vous pouvez laisser par défaut)
- Une passphrase à saisir (non obligatoire, mais recommandé)

Une fois votre clé générée, nous allons utiliser la commande suivante pour l’ajouter au serveur que l’on souhaite :
ssh-copy-id -i .ssh/id_ed25519.pub <user>@<serveur>
Il vous faut spécifier la clé publique a utiliser, ainsi que le serveur de destination. Le mot de passe de connexion à ce dernier vous sera demandé.

Une fois cela fait, vous pouvez retenter une connexion et profiter du résultat 😎
Utiliser plusieurs clés
Afin d’augmenter davantage la sécurité, il est possible d’utiliser une clé par serveur SSH. Le plus simple, c’est de vous créer un fichier de config dédié. Ce fichier vous permettra même de vous créer des alias pour vos connexions distantes.
Le fichier, appelé config
, est à créer sous dans votre dossier utilisateur, sous .ssh
:
Host *
AddKeysToAgent yes
IdentitiesOnly yes
Host recalbox
HostName recalbox.local
User root
Port 22
IdentityFile ~/.ssh/id_recalbox
La 1ère partie s’applique à tous les hosts. Les éléments sont les suivants :
AddKeysToAgent
: ajoute le passphrase dans le trousseau du système, pour ne pas avoir à la ressaisir à chaque connexionIdentitiesOnly
: spécifie à ssh de n’utiliser que les clés présentes dans ce fichier de config
Ensuite, vous pouvez créer un bloc par serveur distant, et y indiquer les éléments suivants :
- Le host : qui sera un alias pour vos connexions (la commande ssh recalbox suffira)
- Le hostname, qui peut être une IP
- Le user
- Le port à utiliser
- Et enfin la clé, qui a été renommée
Désormais, au lieu de devoir saisir ssh <user>@<machine>
, vous pouvez maintenant saisir simplement ssh <host>
Les utilisateurs de Windows doivent activer le service ssh-agent
pour permettre le stockage des passphrases :
Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service
Côté serveur SSH
Maintenant que vous avez mis en place votre système de clé, il est possible de configurer le serveur SSH afin de n’accepter que les connexions via clé. Pour cela, il vous suffit d’éditer sur votre serveur le fichier /etc/ssh/sshd_config
pour y décommenter la ligne suivante :
#PasswordAuthentication no
Dans le cas où vous avez utilisé mon script de configuration de debian, cette ligne se trouve dans le dernier bloc du fichier. Il suffit de changer la valeur à no
.
Une fois la modification effectuée, une petite relance du service :
sudo systemctl restart sshd
Et avant de fermer votre session, ouvrez en une autre afin de vous assurer que vous pouvez toujours vous connecter… Cela vous évitera certaines mésaventures que j’ai pu expérimenter 😅