SSH : Secure Shell
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectif
Se familiariser avec le protocole SSH (Secure SHell).
Mise en situation
SSH est une application d'Internet qui n'est pas aussi connue que le Web ou le mail.
Mais elle est très utile dans le monde du développement informatique car elle permet de se connecter à un serveur à distance, puis d'exécuter des commandes sur ce serveur. C'est aujourd'hui le mode de contrôle privilégié des informaticiens sur les serveurs qui font fonctionner Internet.
Rappel : Terminal et shell
Le terminal (aussi appelé invite de commande ou console) est le moyen le plus naturel pour interagir avec un ordinateur. Ce programme offre un shell (une interface système) donnant accès aux programmes de l'ordinateur. Il suffit d'un écran et d'un clavier pour utiliser ce shell.
Définition : Le programme SSH (Secure SHell)
Le programme SSH (Secure Shell) permet d'interagir de manière sécurisée avec un ordinateur distant via un shell. C'est le programme de référence pour effectuer des opérations à distance.
Toutes les commandes tapées depuis un clavier d'ordinateur à un emplacement A sont exécutées dans le shell d'un ordinateur à un emplacement B.
Les informations qui transitent sur Internet via SSH sont les chaînes de caractères représentant les commandes à exécuter et les chaînes de caractères représentant les résultats de ces exécutions.
Définition : Le protocole SSH
SSH est aussi le nom du protocole de communication utilisé par le programme SSH. Ce protocole fonctionne sur une architecture client-serveur ; l'ordinateur qui fournit les commandes est le client et l'ordinateur qui exécute les commandes sur son système est le serveur.
SSH repose généralement sur TCP pour le transport et est par défaut associé au port 22.
L'établissement d'une connexion SSH se fait en deux étapes :
l'établissement d'une communication sécurisée,
l'authentification du client.
Méthode : Établir une connexion SSH
On utilise la commande ssh
depuis un terminal :
ssh alice@adresse.ip
La machine se trouvant à l'adresse serveur.exemple.com
doit avoir un utilisateur alice
.
Sur Windows, Putty est un client SSH qui permet d'ouvrir une console sous SSH. Il est téléchargeable sur le site dédié : https://www.putty.org/
Attention :
Si ssh
se connecte pour la première fois au serveur, l'utilisateur devra accepter d'utiliser la clé publique du serveur pour des raisons de sécurité.
Remarque :
Si un serveur est associé à un nom de domaine, on peut utiliser ce domaine à la place de l'IP.
ssh alice@serveur.exemple.com
Complément : Chiffrement symétrique et chiffrement asymétrique
Le chiffrement symétrique repose sur le chiffrement et le déchiffrement de messages par une seule clé appelée clé symétrique. Ainsi, si deux ordinateurs veulent protéger leurs communications, ils peuvent se mettre d'accord sur une clé symétrique à utiliser et veiller à ce qu'ils soient les seuls à la détenir. Le chiffrement symétrique est rapide mais nécessite un canal sécurisé pour échanger la clé.
Le chiffrement asymétrique repose sur le chiffrement et le déchiffrement de messages par deux clés différentes (l'une chiffre les messages et l'autre déchiffre). Dans ce système, une clé est connue de tous : on parle de clé publique ; l'autre clé est gardée secrètement : on parle de clé privée. Le chiffrement asymétrique est plus lent mais ne nécessite par de canal sécurisé préalable.
Complément : Étape 1 : Établissement d'une communication sécurisée
Au début de la session et avant de commencer toute interaction entre le client et le serveur, c'est-à-dire avant même que le serveur vérifie que le client est légitime, les deux ordinateurs doivent se mettre d'accord sur un moyen de sécuriser leur communication.
Pour cela, le client et le serveur se mettent d'accord via le protocole de transport (TCP) sur la version du protocole SSH à utiliser et sur une méthode de chiffrement symétrique de leur communication.
Les deux ordinateurs vont utiliser des méthodes de chiffrement asymétrique pour échanger une clé symétrique. Cette clé leur permettra donc de protéger toutes les communications suivantes de la session.
À la fin de cette étape, une connexion sécurisée est établie entre le client et le serveur.
Complément : Étape 2 : Authentification de l'utilisateur côté client
Une fois une connexion sécurisée établie, le serveur doit authentifier l'utilisateur qui cherche à se connecter. Il existe deux méthodes d'authentification :
Méthode 1 : Par mot de passe
Puisque le but est ici d'ouvrir un shell à distance, le client cherche à se connecter à un utilisateur de la machine distante. Le serveur peut ainsi demander au client le mot de passe de l'utilisateur via lequel il veut se connecter.
Méthode 2 : Par clé
Chaque utilisateur présent sur le serveur possède une liste de clés publiques de clients de confiance, présentes dans un fichier
authorized_keys
.Le client envoie une des clés publiques de l'utilisateur avec lequel il veut se connecter.
Le serveur vérifie le fichier
authorized_keys
de l'utilisateur pour s'assurer que cette clé publique existe.Si oui, le serveur chiffre un nombre aléatoire avec ladite clé publique et envoie le résultat au client.
Le client utilise sa clé privée pour déchiffrer le nombre et y appliquer un certain traitement avant de le renvoyer au serveur.
Le serveur applique le même traitement au nombre qu'il a envoyé et vérifie que le résultat du client est le même que le sien.
Si le résultat est correct, et comme l'utilisateur est le seul à posséder la clé privée et déchiffrer le nombre envoyé par le serveur, il est authentifié.
Complément :
La méthode d'authentification par clé nécessite qu'une paire de clés publique/privée soit générée au préalable, et que le serveur ait stocké la clé publique du client dans le fichier authorized_keys
de l'utilisateur.
Complément : Installer un serveur SSH sur un serveur
Pour rendre un serveur accessible à distance, il faudra installer et lancer un serveur SSH. L'implémentation de référence est OpenSSH que l'on peut installer et activer ainsi sur des serveurs GNU/Linux de la famille Debian.
sudo apt update
sudo apt install openssh-server
sudo systemctl start ssh
À retenir
Le protocole SSH permet à un client d'ouvrir un shell sur un serveur distant.
Ce protocole sécurise les communications en employant plusieurs méthodes de chiffrement, de l'authentification au transfert de données.
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.