Informatique

Sécuriser l’accès SSH à votre serveur avec des clés

Un serveur exposé sur Internet reçoit des tentatives de connexion toute la journée. Passez de l’authentification par mot de passe aux clés, bloquez les intrus et gardez la main : le guide complet, sans vous enfermer dehors.

Illustration d’une fenêtre d’éditeur de code sombre avec des lignes colorées numérotées, entourée de formes géométriques bleues.
  • Niveau Avancé
  • Durée 45 minutes

Dès qu’un serveur a une adresse publique, des robots tentent d’y entrer par SSH. Un mot de passe, même solide, reste une porte que l’on peut forcer à coups d’essais. Une paire de clés change la donne : la clé privée ne quitte jamais votre machine, et le serveur ne reconnaît que votre clé publique.

Ce guide s’adresse à des lecteurs à l’aise avec le terminal. Une règle d’or : ne fermez jamais votre session ouverte tant que la nouvelle configuration n’est pas validée dans une deuxième.

Avant de commencer

  • Un serveur Linux (Debian ou Ubuntu dans cet exemple) accessible en SSH
  • Un compte avec les droits sudo
  • Une seconde session de secours ouverte pendant toute l’opération
  1. Étape 1 : Générer une paire de clés

    Sur votre poste (pas sur le serveur), créez une clé au format Ed25519, rapide et robuste. Protégez-la par une phrase secrète : elle chiffre la clé privée sur votre disque.

    Sur votre poste
    ssh-keygen -t ed25519 -a 100 -C "portable-yanis"
  2. Étape 2 : Copier la clé publique sur le serveur

    La commande ssh-copy-id ajoute votre clé publique au fichier ~/.ssh/authorized_keys du serveur. Elle demandera une dernière fois votre mot de passe.

    Sur votre poste
    ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@serveur.example
  3. Étape 3 : Vérifier la connexion par clé

    Ouvrez une nouvelle session et connectez-vous. Si la phrase secrète de votre clé est demandée (et non le mot de passe du serveur), tout fonctionne.

    Sur votre poste
    ssh utilisateur@serveur.example
  4. Étape 4 : Durcir la configuration du démon SSH

    Sur le serveur, éditez /etc/ssh/sshd_config (avec sudo) et vérifiez ou ajoutez les directives suivantes :

    /etc/ssh/sshd_config
    PubkeyAuthentication yes
    PasswordAuthentication no
    PermitRootLogin no
    AllowUsers utilisateur
    Capture stylisée d’un éditeur de code sombre avec des lignes numérotées et colorées.
    Le fichier sshd_config dans l’éditeur : quatre directives suffisent.
  5. Étape 5 : Valider, puis recharger le service

    Testez d’abord la syntaxe : si la commande ne renvoie rien, tout est bon. Rechargez ensuite le service sans couper les sessions en cours, et ouvrez une troisième connexion pour confirmer que la clé fonctionne toujours.

    Sur le serveur
    sudo sshd -t
    sudo systemctl reload ssh
  6. Étape 6 : Bannir automatiquement les intrus avec fail2ban

    fail2ban lit les journaux et bloque les adresses qui échouent trop souvent. Installez-le, puis créez un fichier de configuration local pour ne pas perdre vos réglages lors des mises à jour.

    Sur le serveur
    sudo apt install fail2ban
    sudo nano /etc/fail2ban/jail.local
  7. Étape 7 : Régler la « prison » SSH

    Dans jail.local, activez la protection SSH : cinq échecs en dix minutes valent un bannissement d’une heure.

    /etc/fail2ban/jail.local
    [sshd]
    enabled  = true
    maxretry = 5
    findtime = 10m
    bantime  = 1h
  8. Étape 8 : Simplifier vos connexions avec ~/.ssh/config

    Pour ne plus retaper l’adresse, l’utilisateur et la clé, déclarez le serveur dans votre fichier de configuration client. Vous vous connecterez ensuite par un simple ssh monserveur.

    ~/.ssh/config
    Host monserveur
      HostName serveur.example
      User utilisateur
      IdentityFile ~/.ssh/id_ed25519
      AddKeysToAgent yes

Pour finir

Votre serveur n’accepte plus que les clés autorisées, refuse la connexion directe du super-utilisateur et se débarrasse tout seul des importuns. Prochaines étapes pour aller plus loin : changer le port n’est pas une vraie protection, mais un pare-feu limitant l’accès à vos adresses l’est.