🔐 Sécuriser SSH sur Ubuntu 24

Procédure complète avec gestion du problème Cloud-Init

← Retour à l'accueil

Dans ce guide, nous allons sécuriser un serveur Ubuntu 24 en :

1️⃣ Mise à jour du serveur

sudo apt update sudo apt upgrade -y

Pourquoi ? Un serveur doit toujours être à jour avant toute configuration de sécurité. Les mises à jour corrigent des vulnérabilités.

2️⃣ Génération d’une clé SSH (sur la machine cliente)

ssh-keygen -t ed25519

Cette commande génère une clé publique et privée. La clé privée reste sur le client. La clé publique sera copiée sur le serveur.

3️⃣ Copier la clé publique sur le serveur

ssh-copy-id user@IP_DU_SERVEUR

Cette commande ajoute automatiquement la clé dans :

~/.ssh/authorized_keys

Pourquoi ? Pour permettre une authentification par clé au lieu d’un mot de passe.

4️⃣ Modifier la configuration SSH

sudo nano /etc/ssh/sshd_config

Modifier ou ajouter :

PasswordAuthentication no PermitRootLogin no PubkeyAuthentication yes

On désactive le mot de passe et on force l’authentification par clé.

5️⃣ Redémarrer le service SSH

sudo systemctl restart ssh

On applique la nouvelle configuration.

6️⃣ Problème : la configuration ne fonctionne pas

sudo sshd -T | grep passwordauthentication

Malgré la modification, la valeur reste sur "yes". La connexion par mot de passe est toujours possible.

Cause : Ubuntu 24 utilise Cloud-Init qui surcharge la configuration SSH.

7️⃣ Identifier le fichier Cloud-Init

ls /etc/ssh/sshd_config.d/

On trouve généralement :

50-cloud-init.conf

Ce fichier force PasswordAuthentication yes.

8️⃣ Désactiver Cloud-Init pour SSH

sudo mv /etc/ssh/sshd_config.d/50-cloud-init.conf \ /etc/ssh/sshd_config.d/50-cloud-init.conf.disabled

On empêche Cloud-Init d’écraser notre configuration personnalisée.

9️⃣ Redémarrer SSH et tester à nouveau

sudo systemctl restart ssh sudo sshd -T | grep passwordauthentication

Cette fois, la valeur doit être :

passwordauthentication no

✅ Test de connexion final

ssh user@IP_DU_SERVEUR

La connexion fonctionne uniquement avec la clé SSH. Le mot de passe est désactivé. Le serveur est maintenant sécurisé.