Aller au contenu

AS213941 · Peering-20 % sur tous les VPS avec le code NVH20 · Livraison en 60 secondes

VPS LinuxDès 2,49 €/moisVPS WindowsDès 3,49 €/moisServeur FiveMDès 0,99 €/moisServeur MinecraftDès 1,99 €/mois
VPS & Cloud

Gammes

VPS Linux NVMeAccès root, Debian, Ubuntu, Alma…VPS Windows RDPBureau à distance, licence incluseServeurs dédiésIntel Xeon Gold, ressources exclusivesVPS PterodactylPanel de jeux préinstallé

Réseau et hébergement

Anti-DDoSHébergement webHousingTransit IPVPN

Professionnels

VPS revendeurProgramme revendeur
Solutions

Bots et automatisation

VPS agents IAUn serveur pour vos assistants de code et agents autonomesVPS OllamaVotre IA privée sans GPU, données en FranceVPS bot TelegramPython ou Node.js, toujours joignableVPS bot DiscordMusique, modération, tickets : sans interruptionVPS n8nWorkflows sans limite d'exécutionsVPS VPNUn tunnel chiffré qui sort par la FranceVPS web scrapingCollecte de données planifiée, IP dédiée

Trading

VPS ForexVos robots gèrent les positions la nuitVPS MetaTrader 4Plusieurs terminaux MT4 sur une machineVPS MetaTrader 5Forex, indices et actions dans MT5VPS NinjaTraderFutures et stratégies NinjaScriptVPS prop firmChallenges et comptes financés, terminal toujours en ligneVPS trading AfriqueMetaTrader à Paris, depuis le Maghreb ou l'Afrique de l'OuestVPS RDPBureau à distance Windows, toujours alluméVPS bot de tradingBots crypto open source, clés API protégées

Bureau Windows

VPS Windows 10Pour vos logiciels qui exigent Windows 10VPS Windows 11Le poste Windows récent, accessible partoutVPS SEOCrawls de gros sites sans bloquer votre PCVPS streamingUn studio OBS qui diffuse depuis le datacenterVPS WordPressSites rapides sur disque NVMe
Marketplace

Intelligence artificielle

OllamaDes modèles de langage locaux, sans API externeOpen WebUIUne interface de discussion pour vos modèles OllamaAnythingLLMAssistant IA privé sur vos documents (PDF, sites, notes) : espaces de travail, recherche…LangflowÉditeur visuel Langflow pour construire agents, flux RAG et API d'IA, protégé par votre…FlowiseCréez visuellement vos agents et chatbots IA (LangChain, RAG, outils) avec Flowise, votre…QdrantBase de données vectorielle Qdrant pour vos projets RAG et de recherche sémantique, API…

Trading

MetaTrader 5Terminal MetaTrader 5 officiel (MetaQuotes) installé en mode portable, raccourci sur le…MetaTrader 4Terminal MetaTrader 4 officiel (MetaQuotes) installé en mode portable, raccourci sur le…Pack VPS Forex (MT4 + MT5)MetaTrader 4 et MetaTrader 5 installés ensemble, chacun dans son dossier portable, VPS…NinjaTrader 8Plateforme NinjaTrader 8 avec ses prérequis (.NET 4.8, WebView2) : installée à partir du…FreqtradeRobot de trading crypto open source avec son interface FreqUI, installé en mode…Interactive Brokers TWS / IB GatewayTrader Workstation ou IB Gateway (pour l'API et les robots) d'Interactive Brokers…

Bots et agents

Claude CodeL'agent de code d'Anthropic, dans votre terminalCodex CLIL'agent de code d'OpenAI en ligne de commandeBot TelegramHébergez votre bot Telegram (Python, Node.js ou Bun) : votre code depuis Git ou une…Bot DiscordHébergez votre bot Discord (discord.py, discord.js, Bun…) : votre code depuis Git ou une…OpenClawAssistant IA personnel open source OpenClaw, actif 24 h/24 : discutez avec lui sur…Hermes AgentAgent IA autonome open source de Nous Research, avec mémoire et compétences qui…

Déploiement et automatisation

DockerLe moteur de conteneurs et Docker Composen8nVos automatisations, sans limite d'exécutionsPortainerGérez vos conteneurs Docker depuis le navigateurCoolifyDéployez vos applications depuis Git, sur votre serveurUptime KumaSurveillez vos sites et serveurs, alertes comprises

Sites et bases de données

WordPressLe CMS le plus utilisé, sur une pile Nginx rapideApache + PHP + MySQLServeur web prêt à héberger vos sites : Apache2, PHP et ses extensions courantes, MariaDB…MySQL (MariaDB)Serveur de base de données MariaDB compatible MySQL, avec votre base et votre…PleskPanel d'hébergement Plesk Obsidian installé avec ses composants recommandés : sites…NextcloudVotre cloud de fichiers, agenda et contacts

Réseau et sécurité

WireGuardVotre VPN chiffré, préinstallé en option payanteVaultwardenUn gestionnaire de mots de passe auto-hébergé

Serveurs de jeu

FiveMServeur FiveM (FXServer + txAdmin), MariaDB et phpMyAdmin installés et configurés, sous…MinecraftServeur Minecraft Java Edition clé en main : Paper, Purpur, Fabric, NeoForge, Forge ou…RustServeur Rust (Facepunch) avec LinuxGSM : mises à jour automatiques, redémarrage après…Counter-Strike 2Serveur Counter-Strike 2 dédié avec LinuxGSM (environ 60 Go à télécharger), jeton GSLT…PalworldServeur Palworld dédié avec LinuxGSM : nom, mot de passe, nombre de joueurs et mot de…ValheimServeur Valheim dédié avec LinuxGSM, protégé par mot de passe (exigé par le jeu)…
Gaming

Serveurs de jeux

Serveur FiveMtxAdmin, ESX, QBCoreServeur MinecraftJava, Bedrock, modpacksServeur RustOxide, Carbon, wipesServeur Nova-LifeRP Nova-Life: Amboise

Protection et outils

Anti-DDoS FiveMOutils gratuits
Ressources

Apprendre

DocumentationBlog

Assistance

ContactEngagement SLA
Voir les offres Espace client Peering · AS213941

Sécurité

Sécuriser SSH sur un VPS : clés, root désactivé et Fail2ban

Par Équipe NVHCloud 2026-09-18 Lecture : 4 min

Dès qu'un serveur reçoit une adresse IP publique, des robots tentent de s'y connecter en SSH avec des listes de mots de passe courants. Ce n'est pas une menace théorique : lancez journalctl -u ssh | grep -c Failed sur un VPS en ligne depuis quelques jours, le compteur se chiffre souvent en milliers. Ce guide rend ces tentatives inutiles.

1. Pourquoi c'est la première chose à faire

Un mot de passe peut être deviné, réutilisé ou divulgué. Une clé SSH ED25519, elle, ne peut pas être devinée en pratique. En combinant trois mesures, on élimine l'essentiel du risque :

  • Authentification par clé uniquement : les mots de passe ne sont plus acceptés du tout.
  • Connexion root interdite : un attaquant doit deviner un nom d'utilisateur en plus.
  • Fail2ban : les adresses qui insistent sont bannies automatiquement.

2. Créer et installer une clé SSH

Sur votre ordinateur :

ssh-keygen -t ed25519 -C "alex@portable"

Choisissez une phrase de passe : si votre ordinateur est volé, la clé reste inutilisable. Copiez ensuite la clé publique vers le compte utilisateur du serveur (créé dans les premiers pas) :

ssh-copy-id alex@IP_SERVEUR

Sous Windows, où ssh-copy-id n'existe pas, la commande équivalente est donnée dans les premiers pas sur votre VPS. Vérifiez que ssh alex@IP_SERVEUR fonctionne sans demander de mot de passe avant d'aller plus loin.

3. Durcir la configuration

Plutôt que de modifier le fichier principal /etc/ssh/sshd_config, créez un fichier dédié dans le dossier de configuration : il n'est pas écrasé par les mises à jour et regroupe vos réglages au même endroit.

cat > /etc/ssh/sshd_config.d/00-durcissement.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
X11Forwarding no
AllowUsers alex
EOF

AllowUsers n'autorise que les comptes listés : séparez-les par des espaces si vous en avez plusieurs. MaxAuthTries coupe la connexion après trois essais.

4. Le piège de cloud-init

Le nom du fichier commence par 00-, et ce n'est pas un hasard. Pour chaque paramètre, OpenSSH retient la première valeur lue, et les fichiers du dossier sont lus par ordre alphabétique. Or beaucoup d'images Ubuntu contiennent un fichier 50-cloud-init.conf avec PasswordAuthentication yes. Nommé 99-..., votre fichier serait lu après et silencieusement ignoré : les mots de passe resteraient acceptés.

ls /etc/ssh/sshd_config.d/

Pour savoir quelle valeur s'applique réellement, interrogez directement le serveur SSH :

sshd -T | grep -E "permitrootlogin|passwordauthentication|kbdinteractive|allowusers"

5. Changer le port (optionnel)

Changer le port 22 ne protège pas contre un attaquant qui vous vise, qui trouvera le nouveau port en quelques secondes. En revanche, cela fait disparaître l'essentiel des tentatives automatiques des journaux. Si vous le faites, ajoutez la ligne Port 2222 au fichier précédent, et ouvrez le port dans le pare-feu d'abord :

ufw allow 2222/tcp
⚠️ Ubuntu 22.10 et plus récent démarre SSH par activation de socket : le port d'écoute est alors défini par systemd, et un simple redémarrage du service ne suffit pas. Après avoir modifié le port, exécutez systemctl daemon-reload puis systemctl restart ssh.socket. Sur Debian 12, systemctl restart ssh suffit.

6. Appliquer sans se bloquer

Vérifiez la syntaxe, puis rechargez SSH. Ne fermez pas votre session en cours.

sshd -t && systemctl reload ssh

Ouvrez un second terminal et testez :

ssh alex@IP_SERVEUR                # doit fonctionner
ssh root@IP_SERVEUR                # doit être refusé
ssh -o PubkeyAuthentication=no alex@IP_SERVEUR   # doit être refusé

Si la première commande échoue, corrigez depuis la session restée ouverte. Si vous avez changé de port, ajoutez -p 2222 à chaque commande ; une fois la connexion validée sur le nouveau port, retirez l'ancienne règle du pare-feu avec ufw delete allow OpenSSH.

7. Installer Fail2ban

Fail2ban lit les journaux et bannit, via le pare-feu, les adresses qui accumulent les échecs. Même avec les mots de passe désactivés, il allège la charge et les journaux.

apt install -y fail2ban
cat > /etc/fail2ban/jail.local <<'EOF'
[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5
banaction = ufw
[sshd]
enabled  = true
backend  = systemd
port     = ssh
maxretry = 3
bantime  = 24h
EOF
systemctl enable --now fail2ban
systemctl restart fail2ban

Si vous avez changé de port, remplacez port = ssh par port = 2222. backend = systemd est nécessaire sur Debian 12, qui n'écrit plus de fichier /var/log/auth.log par défaut ; il est placé dans la section [sshd] et non dans [DEFAULT], pour ne pas perturber les jails qui liront plus tard des fichiers, comme celles de Nginx. Pour protéger aussi Nginx, la messagerie ou WordPress, voir Fail2ban avancé.

8. Vérifier

fail2ban-client status sshd
journalctl -u ssh --since "1 hour ago" | tail

La première commande affiche le nombre d'adresses bannies. Pour aller plus loin, ajoutez un second facteur à la connexion : voir activer la double authentification sur SSH. Et complétez avec un pare-feu en liste blanche : configurer UFW.

Questions fréquentes

Que faire si je me suis bloqué hors de mon VPS ?

Passez par la console de secours (VNC) de l'espace client, ou à défaut par le support : elle donne accès au serveur sans SSH. Supprimez ou corrigez le fichier /etc/ssh/sshd_config.d/00-durcissement.conf, puis rechargez SSH. C'est pour éviter cette situation qu'il faut toujours tester depuis un second terminal.

Pourquoi mes mots de passe SSH fonctionnent encore après avoir mis PasswordAuthentication no ?

Presque toujours à cause d'un autre fichier lu avant le vôtre, comme 50-cloud-init.conf sur Ubuntu : OpenSSH retient la première valeur rencontrée. Nommez votre fichier avec un préfixe 00- et vérifiez la valeur appliquée avec sshd -T.

Clé RSA ou ED25519 ?

ED25519 : les clés sont plus courtes, plus rapides et considérées comme au moins aussi sûres qu'une clé RSA de 4096 bits. RSA reste utile uniquement pour de très vieux systèmes qui ne connaissent pas ED25519.

Fail2ban est-il utile si les mots de passe sont désactivés ?

Oui, dans une moindre mesure : les tentatives ne peuvent plus réussir, mais elles consomment des ressources et remplissent les journaux. Fail2ban les coupe rapidement, et sa vraie valeur apparaît quand vous l'étendez à d'autres services, comme la page de connexion d'un site.

VPS Linux NVMe

Accès root, Intel Xeon Gold et NVMe, livré en 60 secondes. Dès 2,49 €/mois.