Le protocole SSH, ou Secure Shell, est un outil essentiel pour établir des connexions sécurisées avec des ordinateurs distants à travers un réseau.
Dans l’univers des réseaux, les machines communiquent en suivant des règles établies, des protocoles. L’un des premiers protocoles mis au point fut Telnet, permettant à un utilisateur de contrôler une machine à distance.
Cependant, Telnet souffrait d’un défaut majeur : le manque de sécurité. Toute personne présente sur le réseau pouvait intercepter et lire les données transmises. C’est pourquoi, au milieu des années 90, le protocole SSH a émergé comme une alternative plus sûre à Telnet.
Si vous êtes un développeur ou un administrateur système, vous avez probablement déjà utilisé SSH. Si ce n’est pas le cas, c’est le moment de l’apprendre, car il s’agit d’une compétence fondamentale.
Qu’est-ce que SSH ?
SSH, ou Secure Shell, est un protocole réseau conçu pour établir des communications sécurisées avec des machines distantes, principalement des serveurs. Il offre un chiffrement robuste et est largement utilisé par les administrateurs et développeurs pour gérer les systèmes et applications à distance, exécuter des commandes ou transférer des fichiers.
Pourquoi utiliser SSH ?
SSH a vu le jour en 1995 pour pallier les faiblesses des protocoles d’accès à distance non sécurisés tels que rlogin, rsh et Telnet.
Prenons l’exemple de Telnet, développé en 1969. Cet outil simple permet d’accéder à un serveur distant et d’y exécuter des commandes, comme si l’utilisateur était physiquement devant. Cependant, Telnet transmet les données en clair, sans cryptage.
Les commandes exécutées via Telnet peuvent être diverses : lancer des programmes, créer des dossiers, gérer des fichiers, démarrer ou arrêter des services, etc.
Le problème réside dans le fait que les données transitent par de multiples réseaux, et qu’il est possible qu’elles soient interceptées, voire modifiées en cours de route, avant d’atteindre le serveur de destination.
À une époque où la sécurité n’était pas une priorité, les communications en clair étaient courantes. Par conséquent, les données transmises sur internet pouvaient être facilement espionnées et lues, car elles n’étaient pas chiffrées.
Les protocoles en clair sont donc très vulnérables et ne doivent en aucun cas être utilisés pour la transmission de données sensibles telles que des mots de passe. C’est pourquoi SSH est devenu l’alternative sécurisée aux anciens protocoles d’accès à distance.
Comment fonctionne SSH ?
SSH repose sur une architecture client-serveur pour sécuriser les communications. Un client SSH se connecte à un serveur SSH. Par défaut, le serveur écoute sur le port TCP 22, mais ce port peut être modifié par mesure de sécurité.
L’authentification entre le client et le serveur se fait à l’aide de techniques de cryptographie à clé publique. De plus, pour les échanges de données, le protocole utilise des algorithmes de chiffrement et de hachage symétriques performants, assurant confidentialité et intégrité.

Linux est un système d’exploitation privilégié pour les serveurs distants, grâce à sa robustesse et sa sécurité. De nombreux serveurs Linux fonctionnent sans interruption pendant des années.
La plupart des sessions SSH (période durant laquelle nous accédons à un serveur) se résument aux deux opérations suivantes:
- Authentification
- Exécution de commandes
Il existe différentes méthodes d’authentification pour les serveurs SSH.
Parmi les plus courantes, on trouve :
L’authentification par mot de passe, méthode par défaut pour les clients OpenSSH. Cette méthode est basique, mais pas la plus sûre.
Même si les mots de passe sont transmis chiffrés, des attaques par force brute peuvent contourner cette authentification.
L’authentification par clé, quant à elle, renforce la sécurité grâce à des paires de clés SSH, une alternative plus fiable et sécurisée.
Une fois que le serveur a authentifié le client, une connexion sécurisée est établie.
Accéder à un serveur distant avec SSH
Si vous utilisez Mac ou Linux, vous pouvez directement utiliser le terminal pour exécuter des commandes SSH, car OpenSSH est installé par défaut.
Sous Windows, il est nécessaire d’installer un client émulateur de terminal. PuTTY est un client SSH populaire pour Windows.
Pour se connecter à un serveur distant via SSH, vous devez connaître au moins deux éléments.
La syntaxe de base de la commande SSH est la suivante :
$ ssh <nom-utilisateur> @ <hôte> -p <port-no>
Le nom d’utilisateur est celui de la machine distante (et non de votre machine locale), et l’hôte est l’adresse IP ou le nom de domaine du serveur.
Prenons un exemple de connexion avec le site OverTheWire, qui propose des défis de wargame.
Nous allons nous connecter au défi bandit, qui enseigne comment se connecter avec SSH.
Informations d’identification :
Nom d’utilisateur et mot de passe : bandit0
Hôte et port : bandit.labs.overthewire.org, 2220
Après avoir saisi la commande suivante et appuyé sur Entrée :
$ ssh [email protected] -p 2220
Le système vous demandera votre mot de passe. Saisissez-le et appuyez sur Entrée.

Si le mot de passe est correct, vous êtes connecté au serveur distant, et votre terminal affichera une sortie similaire à l’image ci-dessus.
Vous pouvez désormais utiliser le terminal du serveur distant pour exécuter des commandes et effectuer vos opérations.
Pour terminer une session SSH, utilisez la commande « exit » :
$ exit
Le message « Connexion fermée » confirmera la déconnexion.
Conclusion
La popularité de SSH réside dans le fait que toutes les communications entre le client et le serveur sont chiffrées.
L’utilisation de SSH peut sembler complexe, mais elle est en réalité plus simple qu’on ne le pense. Vous avez maintenant une compréhension de base de SSH, de son fonctionnement, des aspects de sécurité qui le sous-tendent, et de son rôle essentiel dans la communication.
Pour aller plus loin, vous pouvez explorer des ressources pour approfondir vos connaissances en administration système.
