SSH est un protocole de couche application couramment utilisé pour l’accès à distance. Dans cet article, nous allons explorer l’utilisation du protocole SSH pour se connecter à des serveurs Linux distants et configurer certains paramètres afin d’améliorer la sécurité.
SSH peut être utilisé avec n’importe quelle distribution Linux, car il est activé par défaut sur la plupart des distributions Unix et Linux modernes.
Dans ce guide, tous les tests ont été effectués sur Ubuntu 22.04 ; cependant, les mêmes instructions peuvent également être appliquées à d’autres distributions telles que Debian, CentOS, etc.
Vous pouvez utiliser différents programmes clients pour vous connecter à des serveurs Linux via SSH. Parmi les plus populaires
Windows PuTTY, Bitvise SSH Client, SuperPuTTY, mRemoteNG, MobaXterm
macOS Termius ou l’utilitaire SSH intégré au Terminal
Windows (Windows 10, Windows 11, Windows Server 2019) le client OpenSSH intégré, accessible via la ligne de commande (cmd) ou PowerShell
La syntaxe standard de la commande SSH est la suivante
ssh <utilisateur@IP_ou_domaine>
Par exemple
ssh alex@166.1.227.189
Par défaut, SSH se connecte via le port 22. Si le serveur utilise un autre port, vous pouvez le spécifier avec l’option -p
ssh alex@166.1.227.189 -p 2222
Le fichier de configuration du serveur SSH s’appelle sshd_config et se trouve dans le répertoire /etc/ssh. Il ne faut pas le confondre avec le fichier du client SSH, ssh_config. Dans cet article, nous nous concentrons uniquement sur le fichier côté serveur.
Par défaut, les connexions SSH utilisent une authentification par mot de passe, sauf si une clé SSH a été ajoutée lors de la création du serveur (les clés SSH seront abordées dans la section suivante). Dans la plupart des distributions Linux/Unix, la configuration du serveur inclut l’authentification PAM, ce qui permet aux utilisateurs disposant d’un compte système de se connecter avec leur nom d’utilisateur et leur mot de passe.
Pour se connecter avec un mot de passe, vous avez besoin de l’adresse du serveur distant et des identifiants de l’utilisateur, par exemple
ssh alex@166.1.227.189
Après avoir exécuté la commande, le mot de passe vous sera demandé. S’il est correct, l’accès au serveur sera accordé.
Lors de la première connexion, un message concernant l’« empreinte » (fingerprint) du serveur s’affichera. Saisissez yes pour continuer.
Bien que l’authentification par mot de passe fonctionne, ce n’est pas la méthode la plus sûre, car les mots de passe peuvent être devinés. Une alternative plus sécurisée consiste à utiliser des clés SSH, décrites dans la section suivante.
Les clés SSH constituent une méthode d’authentification plus sûre et plus répandue que les mots de passe. SSH utilise deux types de clés
Clé publique utilisée pour le chiffrement et pouvant être partagée publiquement
Clé privée utilisée pour le déchiffrement et devant rester strictement confidentielle
Pour générer des clés SSH, utilisez la commande suivante
ssh-keygen
Cette commande vous demandera de choisir un répertoire pour enregistrer les clés. Par défaut, elles sont stockées dans le répertoire .ssh de votre dossier personnel, par exemple /home/alex/.ssh. Appuyez sur Entrée pour utiliser le chemin par défaut.
Ensuite, il vous sera demandé de définir une phrase secrète (passphrase) pour renforcer la sécurité. Si vous préférez ne pas utiliser de phrase secrète, appuyez simplement sur Entrée.
Une fois les clés générées, la clé privée (id_rsa) et la clé publique (id_rsa.pub) seront stockées dans le répertoire .ssh.
Avant de vous connecter à l’hôte distant, copiez la clé publique sur celui-ci à l’aide de la commande ssh-copy-id
ssh-copy-id -i /home/alex/.ssh/id_rsa.pub alex@166.1.227.189
Vous devrez saisir le mot de passe de l’utilisateur distant une seule fois. Après cela, la clé publique sera ajoutée à l’hôte distant, ce qui vous permettra de vous connecter sans mot de passe
ssh alex@166.1.227.189
Si aucun mot de passe n’est demandé, l’authentification par clé fonctionne correctement.
Étant donné que les mots de passe ne sont pas suffisamment sécurisés, il est recommandé de désactiver l’authentification par mot de passe et d’utiliser uniquement l’accès par clés. Pour ce faire, modifiez le fichier de configuration du serveur SSH
nano /etc/ssh/sshd_config
Recherchez la ligne PasswordAuthentication et définissez sa valeur sur no
PasswordAuthentication no
Enregistrez les modifications, puis redémarrez le serveur SSH
systemctl restart ssh
Important avant de désactiver l’authentification par mot de passe, assurez-vous que l’authentification par clé fonctionne correctement. Dans le cas contraire, vous risquez de perdre l’accès au serveur. Si cela se produit, vous pourrez réactiver l’authentification par mot de passe via la console web du serveur.
Par défaut, le serveur SSH utilise le port 22. Vous pouvez le modifier en éditant le fichier sshd_config. Recherchez la ligne Port, supprimez le symbole # et indiquez un nouveau port (entre 1024 et 65535)
Port 2224
Après avoir enregistré les modifications, redémarrez le serveur SSH
systemctl restart ssh
Pour vous connecter au serveur en utilisant le nouveau port, utilisez l’option -p
ssh alex@166.1.227.189 -p 2224
Dans certaines distributions, la connexion de l’utilisateur root est autorisée par défaut. Étant donné que l’utilisateur root dispose de privilèges complets sur le système, il est plus sûr de désactiver cette option. Recherchez la ligne PermitRootLogin dans le fichier sshd_config et définissez-la sur no
PermitRootLogin no
Enregistrez le fichier et redémarrez le serveur SSH
systemctl restart ssh
Vous pouvez restreindre l’accès SSH à certains utilisateurs en modifiant le fichier sshd_config avec les paramètres suivants
AllowUsers spécifie les utilisateurs autorisés à se connecter via SSH. Exemple
AllowUsers test admin
DenyUsers spécifie les utilisateurs dont l’accès SSH est refusé. Exemple
DenyUsers nginx websrv
Pour appliquer les modifications, redémarrez le serveur SSH
systemctl restart ssh
SSH est un outil indispensable pour se connecter à des serveurs distants. En plus du chiffrement intégré, vous pouvez renforcer davantage la sécurité de votre serveur SSH en le configurant correctement, par exemple en désactivant l’authentification par mot de passe et en limitant l’accès à des utilisateurs spécifiques.