Aller au contenu principal

Sécuriser l’accès SSH à votre VPS

Changez le port par défaut, utilisez des clés SSH et durcissez la configuration pour protéger votre serveur contre les attaques automatisées.

🎯 Objectif de cet article

Nous allons remplacer l’authentification par mot de passe (peu sûre) par une clé SSH et déplacer le service sur un port non standard. Enfin, nous appliquerons des règles de pare-feu pour limiter les tentatives de connexion.

⏱️ Durée estimée : 30 minutes

📋 Prérequis

  • Un VPS sous Debian/Ubuntu avec un accès SSH initial (mot de passe)
  • Un utilisateur non-root disposant des droits sudo
  • Un pare-feu UFW installé (sudo apt install ufw)

1️⃣ Changer le port SSH par défaut

Le port 22 est scanné en permanence par les robots. Nous allons utiliser un port élevé (ex. 31457) pour réduire le bruit.

⚠️ Ne fermez pas votre session actuelle avant d’avoir testé le nouveau port dans un second terminal.

🔧 Modification de la configuration

sudo nano /etc/ssh/sshd_config

Ajoutez (ou décommentez) les lignes suivantes :

Port 22
Port 31457

On garde temporairement le port 22 pour éviter de perdre l’accès.

🛡️ Ouverture du nouveau port dans le pare-feu

sudo ufw allow 31457/tcp
sudo ufw status

🔄 Redémarrage du service SSH

sudo systemctl restart sshd

🧪 Test dans un nouveau terminal

ssh -p 31457 votre_utilisateur@adresse_ip

Si la connexion réussit, supprimez le port 22 de la configuration et du pare-feu.

sudo nano /etc/ssh/sshd_config  # ne garder que "Port 31457"
sudo systemctl restart sshd
sudo ufw delete allow 22/tcp

Pour une protection supplémentaire, passez le nouveau port en mode LIMIT (blocage après 6 tentatives en 30 secondes) :

sudo ufw limit 31457/tcp

2️⃣ Remplacer le mot de passe par une clé SSH

Une clé SSH offre une sécurité bien supérieure : la clé privée ne quitte jamais votre ordinateur.

🔑 Génération de la clé (sur votre machine locale)

ssh-keygen -t ed25519 -C "commentaire" -f ~/.ssh/id_ed25519_vps

- -t ed25519 : algorithme moderne et sécurisé
- -f : chemin personnalisé (vous pouvez aussi laisser le défaut)

Lors de la création, mettez une passphrase forte (elle protège la clé privée en cas de vol).

📤 Copie de la clé publique sur le VPS

ssh-copy-id -p 31457 -i ~/.ssh/id_ed25519_vps.pub votre_utilisateur@adresse_ip

Cette commande ajoute automatiquement la clé publique dans ~/.ssh/authorized_keys du serveur. Vous devrez saisir le mot de passe une dernière fois.

🧪 Test de la connexion par clé

ssh -i ~/.ssh/id_ed25519_vps -p 31457 votre_utilisateur@adresse_ip

Si vous avez défini une passphrase, elle vous sera demandée (une fois par session si vous utilisez un agent SSH).

3️⃣ Simplifier la connexion avec le fichier ~/.ssh/config

Sur votre machine locale, créez ou modifiez le fichier ~/.ssh/config :

Host mon-vps
    HostName adresse_ip
    User votre_utilisateur
    Port 31457
    IdentityFile ~/.ssh/id_ed25519_vps

Ensuite, connectez-vous simplement avec :

ssh mon-vps

Pour retenir la passphrase en mémoire pendant toute la session, ajoutez dans la section Host * :

AddKeysToAgent yes

4️⃣ Durcir la configuration SSH (optionnel)

Une fois que la clé fonctionne, vous pouvez désactiver l’authentification par mot de passe pour éliminer tout risque de brute-force.

⚠️ Assurez-vous que votre clé fonctionne parfaitement avant d’effectuer cette opération, sous peine de perdre l’accès au serveur.
sudo nano /etc/ssh/sshd_config
# Modifier ou ajouter :
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
sudo systemctl restart sshd

5️⃣ Protéger avec Fail2ban

Fail2ban bannit les IP qui multiplient les échecs de connexion.

sudo apt install fail2ban
sudo systemctl enable --now fail2ban

Créez un fichier de configuration local pour SSH :

sudo nano /etc/fail2ban/jail.local
[sshd]
enabled   = true
port      = 31457
maxretry  = 3
bantime   = 1h
sudo systemctl restart fail2ban

✅ Résultat final

MesureAvantAprès
Port22 (tout le monde scanne)31457 (caché aux bots)
AuthentificationMot de passeClé SSH avec passphrase
Pare-feuUFW sur le port 22LIMIT sur 31457 (6 essais max / 30s)
Anti-bruteforceAucunFail2ban avec 3 essais puis bannissement 1h
Connexion rootPermiseDésactivée (via utilisateur + sudo)

🚀 Votre serveur est maintenant bien protégé

En combinant un port non standard, une authentification forte et un blocage automatique des IP suspectes, vous réduisez drastiquement la surface d’attaque. La prochaine étape peut être la mise en place d’une authentification à deux facteurs (2FA) pour les opérations sensibles.

15 juillet 2026 (il y a 6 heures)
15 juillet 2026 (il y a 6 heures)
Loading ...
Need personalized advice?
Envoyer