15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
30.10.2024

Comment installer et configurer un serveur SSH sur Debian (Guide complet)

SSH (Secure Shell) est l’un des protocoles les plus fondamentaux dans l’administration moderne des serveurs. Il fournit un canal chiffré et authentifié pour accéder à distance et gérer les serveurs Linux — en faisant un outil indispensable pour les administrateurs système, les développeurs et toute personne gérant une machine distante. Que vous gériez un environnement VPS Hosting ou un Serveur Dédié, l’installation et le renforcement de votre serveur SSH sont parmi les premières tâches que vous devriez accomplir.

Dans ce guide complet, vous apprendrez comment installer OpenSSH sur Debian, le configurer de manière sécurisée, mettre en place l’authentification par clé et appliquer les meilleures pratiques de renforcement pour protéger votre serveur contre les accès non autorisés.

Prérequis

Avant de commencer, assurez-vous d’avoir :

  • Un serveur basé sur Debian (Debian 10 Buster, 11 Bullseye ou 12 Bookworm)
  • Un utilisateur non-root avec les privilèges sudo, ou un accès root direct pour la configuration initiale
  • Une connaissance de base de la ligne de commande Linux
  • Un accès réseau à votre serveur

Étape 1 : Mettre à jour votre système et installer le serveur OpenSSH

Avant d’installer un logiciel, il est recommandé d’actualiser votre index de paquets et de mettre à niveau les paquets existants vers leurs dernières versions. Cela garantit la compatibilité et réduit les vulnérabilités de sécurité.

sudo apt update && sudo apt upgrade -y

Installez maintenant le paquet du serveur OpenSSH :

sudo apt install openssh-server -y

Le gestionnaire de paquets téléchargera et installera OpenSSH ainsi que toutes les dépendances requises. Une fois l’installation terminée, le service SSH est généralement démarré automatiquement.

Vérifier que le service SSH est en cours d’exécution

Confirmez que le service ssh est actif et activé :

sudo systemctl status ssh

Vous devriez voir une sortie similaire à :

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since ...

Si le service ne fonctionne pas, démarrez-le manuellement et activez-le pour qu’il se lance au démarrage :

sudo systemctl start ssh
sudo systemctl enable ssh

Étape 2 : Comprendre le fichier de configuration SSH

Le fichier de configuration principal du démon SSH se trouve à :

/etc/ssh/sshd_config

Ce fichier contrôle pratiquement tous les aspects du comportement de votre serveur SSH — du port sur lequel il écoute aux méthodes d’authentification autorisées. Avant d’apporter des modifications, créez une sauvegarde du fichier original :

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Ouvrez maintenant le fichier avec un éditeur de texte :

sudo nano /etc/ssh/sshd_config

Les sections ci-dessous vous guident à travers les options de configuration les plus importantes.

Étape 3 : Renforcer votre configuration SSH

3.1 Changer le port SSH par défaut (Recommandé)

Par défaut, SSH écoute sur le port 22. C’est largement connu, et des robots automatisés analysent constamment Internet à la recherche de connexions ouvertes sur le port 22 pour tenter des attaques par force brute. Changer le port vers une valeur non standard réduit considérablement ce bruit.

Localisez la ligne suivante (elle peut être commentée avec #) :

#Port 22

Décommentez-la et changez la valeur :

Port 2222

> Remarque : Choisissez un numéro de port entre 1024 et 65535 qui n’est pas déjà utilisé par un autre service. Les alternatives courantes incluent 2222, 2200 ou 4422. N’oubliez pas de mettre à jour vos règles de pare-feu en conséquence (voir Étape 5).

3.2 Désactiver la connexion root (Fortement recommandé)

Autoriser la connexion root directe via SSH représente un risque de sécurité important. Si un attaquant devine ou force le mot de passe root, il obtient le contrôle total de votre serveur. Désactivez-le en trouvant et modifiant cette directive :

PermitRootLogin no

Si vous devez effectuer des tâches administratives, connectez-vous en tant qu’utilisateur ordinaire et élevez les privilèges en utilisant sudo.

3.3 Restreindre l’accès SSH à des utilisateurs spécifiques

Vous pouvez mettre sur liste blanche des comptes utilisateurs spécifiques autorisés à se connecter via SSH. Cela empêche les comptes non autorisés ou système d’être utilisés comme points d’entrée :

AllowUsers your_username deploy_user

Vous pouvez également restreindre l’accès par groupe :

AllowGroups sshusers

3.4 Désactiver l’authentification par mot de passe (Après la configuration de l’auth par clé)

Une fois que l’authentification par clé SSH fonctionne (voir Étape 6), désactivez complètement les connexions par mot de passe pour éliminer les vecteurs d’attaque par force brute :

PasswordAuthentication no

3.5 Directives de renforcement supplémentaires

Ajoutez ou modifiez les lignes suivantes pour une posture de sécurité plus robuste :

# Disable empty passwords
PermitEmptyPasswords no

# Limit authentication attempts per connection
MaxAuthTries 3

# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2

# Disable X11 forwarding if not needed
X11Forwarding no

# Use only SSH Protocol 2
Protocol 2

# Restrict to specific address family (IPv4 only example)
AddressFamily inet

La section pertinente de votre /etc/ssh/sshd_config final devrait ressembler à ceci :

Port 2222
PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers your_username
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2

Étape 4 : Valider la configuration et redémarrer SSH

Avant de redémarrer le service, testez toujours votre fichier de configuration pour détecter les erreurs de syntaxe. Un sshd_config mal configuré peut vous bloquer l’accès à votre serveur :

sudo sshd -t

Si aucune erreur n’est retournée, appliquez les modifications en redémarrant le démon SSH :

sudo systemctl restart ssh

Vérifiez que le service a redémarré correctement :

sudo systemctl status ssh

> ⚠️ Important : Avant de fermer votre session SSH actuelle, ouvrez une deuxième fenêtre de terminal et testez la nouvelle configuration. Ainsi, si quelque chose se passe mal, vous avez toujours une session active pour corriger le problème.

Étape 5 : Mettre à jour les règles de pare-feu

Si vous utilisez UFW (Uncomplicated Firewall) — l’outil de pare-feu par défaut sur Debian — vous devez autoriser le trafic sur votre nouveau port SSH.

Si vous avez changé le port vers 2222 :

sudo ufw allow 2222/tcp
sudo ufw reload

Si vous avez conservé le port par défaut 22 :

sudo ufw allow ssh
sudo ufw reload

Vérifiez l’état actuel du pare-feu :

sudo ufw status verbose

Si UFW n’est pas encore activé, activez-le (assurez-vous d’abord que votre port SSH est autorisé pour éviter d’être bloqué) :

sudo ufw enable

Étape 6 : Configurer l’authentification SSH par clé

L’authentification par clé SSH est bien plus sécurisée que la connexion par mot de passe. Elle utilise la cryptographie asymétrique — une paire de clés composée d’une clé privée (gardée secrète sur votre machine cliente) et d’une clé publique (stockée sur le serveur). Même si un attaquant connaît votre nom d’utilisateur, il ne peut pas se connecter sans la clé privée.

6.1 Générer une paire de clés SSH sur votre machine cliente

Exécutez la commande suivante sur votre machine locale (pas le serveur) :

ssh-keygen -t ed25519 -C "your_email@example.com"

> Pourquoi Ed25519 ? Ed25519 est un algorithme moderne à courbe elliptique qui offre une meilleure sécurité et de meilleures performances par rapport à l’ancien algorithme RSA. Si votre système ne le prend pas en charge, utilisez RSA avec une clé de 4096 bits : ssh-keygen -t rsa -b 4096

Lorsque vous y êtes invité, choisissez un emplacement de sauvegarde (la valeur par défaut est ~/.ssh/id_ed25519) et définissez une phrase de passe solide pour une couche de protection supplémentaire.

6.2 Copier la clé publique sur votre serveur

Utilisez ssh-copy-id pour transférer de manière sécurisée votre clé publique vers le serveur :

ssh-copy-id -p 2222 username@your_server_ip

Cette commande ajoute votre clé publique à ~/.ssh/authorized_keys sur le serveur avec les permissions correctes.

Si ssh-copy-id n’est pas disponible, vous pouvez le faire manuellement :

# On your local machine, display your public key:
cat ~/.ssh/id_ed25519.pub

# On the server, add it to authorized_keys:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

6.3 Tester la connexion par clé

Depuis votre machine cliente, connectez-vous au serveur :

ssh -p 2222 username@your_server_ip

Vous devriez être invité à saisir votre phrase de passe de clé (pas votre mot de passe de compte). Une fois confirmé, vous êtes connecté de manière sécurisée.

6.4 Désactiver l’authentification par mot de passe

Maintenant que l’auth par clé fonctionne, revenez à /etc/ssh/sshd_config et assurez-vous que :

PasswordAuthentication no

Redémarrez SSH pour appliquer :

sudo systemctl restart ssh

Étape 7 : Surveiller et maintenir la sécurité SSH

L’installation et la configuration de SSH ne sont pas des tâches ponctuelles. Une surveillance continue est essentielle pour détecter les tentatives d’intrusion et maintenir un environnement sécurisé.

Vérifier les tentatives de connexion échouées

sudo journalctl -u ssh | grep "Failed password"

Ou en utilisant lastb pour afficher les tentatives de connexion échouées :

sudo lastb | head -20

Installer Fail2Ban pour bloquer les attaques par force brute

Fail2Ban surveille les fichiers journaux et bannit automatiquement les adresses IP qui présentent un comportement malveillant (comme des tentatives de connexion répétées et échouées) :

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Créez une configuration de jail locale pour SSH :

sudo nano /etc/fail2ban/jail.local

Ajoutez ce qui suit :

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600

Redémarrez Fail2Ban pour appliquer :

sudo systemctl restart fail2ban

Maintenir OpenSSH à jour

Mettez régulièrement à jour OpenSSH pour corriger les vulnérabilités connues :

sudo apt update && sudo apt upgrade openssh-server -y

Se connecter à votre serveur SSH : Référence rapide

ScénarioCommande
Port par défaut (22)ssh username@your_server_ip
Port personnaliséssh -p 2222 username@your_server_ip
Fichier d’identité spécifiquessh -i ~/.ssh/id_ed25519 username@your_server_ip
Sortie détaillée (débogage)ssh -v username@your_server_ip
Copier des fichiers via SSHscp -P 2222 file.txt username@your_server_ip:/path/

Choisir le bon environnement d’hébergement pour SSH

Les étapes de ce guide s’appliquent à tout serveur basé sur Debian, mais le type d’hébergement que vous utilisez affecte la façon dont vous accédez à votre environnement et le gérez :

  • VPS Hosting : Un VPS avec cPanel ou d’autres Panneaux de contrôle VPS vous donne un accès SSH root complet ainsi qu’une interface de gestion graphique — idéal pour les utilisateurs qui souhaitent à la fois puissance et commodité.
  • Serveurs Dédiés : Avec un Serveur Dédié, vous avez un contrôle complet au niveau matériel, ce qui rend la configuration SSH encore plus critique car vous êtes seul responsable de la sécurité de la machine.
  • Hébergement Partagé : Les offres d’Hébergement Web Partagé fournissent généralement un accès SSH limité ou inexistant, car l’environnement est partagé entre plusieurs utilisateurs. Si SSH est une exigence, passer à un VPS est la voie recommandée.

Conclusion

L’installation et la configuration d’un serveur SSH sur Debian est une compétence fondamentale pour tout administrateur système ou développeur travaillant avec des serveurs Linux distants. En suivant ce guide, vous avez :

  • ✅ Installé le serveur OpenSSH sur Debian
  • ✅ Renforcé la configuration SSH en changeant le port par défaut, en désactivant la connexion root et en restreignant l’accès utilisateur
  • ✅ Configuré l’authentification SSH par clé pour des connexions sécurisées sans mot de passe
  • ✅ Configuré les règles de pare-feu pour protéger votre port SSH
  • ✅ Implémenté Fail2Ban pour se défendre contre les attaques par force brute
  • ✅ Établi une routine de surveillance et de maintenance

Un serveur SSH correctement sécurisé réduit considérablement votre surface d’attaque et vous offre une passerelle chiffrée fiable pour gérer votre infrastructure à distance. Que vous débutiez avec votre premier serveur ou que vous renforciez un environnement de production, ces pratiques sont des éléments fondamentaux d’un système Linux sécurisé.

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer