↓Aller au contenu
Alemasone

Installer et configurer SSH sur Ubuntu en toute sécurité

Apprenez à installer OpenSSH, générer des clés Ed25519, désactiver l'accès root et protéger votre serveur contre les attaques.

7 min de lecture Mis à jour le
Terminal avec une connexion SSH active vers un serveur Ubuntu
Sur cette page
Un serveur SSH accessible depuis Internet reçoit des tentatives de connexion automatiques quelques minutes seulement après son démarrage. Deux paramètres éliminent la quasi-totalité des risques : l’accès uniquement par clés et la désactivation du login root. Cela prend cinq minutes, et doit être fait avant toute autre chose.

SSH est le canal chiffré avec lequel vous administrez un ordinateur Linux à distance : terminal, transfert de fichiers, tunnel pour d’autres services. Sur Ubuntu Desktop, le serveur SSH n’est pas installé par défaut, alors que sur les images destinées aux serveurs, il l’est généralement déjà. Dans ce guide, vous allez l’installer, vous y connecter depuis votre ordinateur avec une clé et le sécuriser.

Installation #

sudo apt update
sudo apt install openssh-server

Le service démarre tout seul. Vérifiez son état :

sudo systemctl status ssh

Terminal Ubuntu avec le résultat de systemctl status ssh et le service marqué comme active running
La ligne à vérifier est celle contenant active (running)

Sur Ubuntu 24.04, ne paniquez pas si, avant la première connexion, l’état apparaît en inactive avec la ligne TriggeredBy: ssh.socket : depuis Ubuntu 22.10, SSH est lancé par le socket lors de la première tentative de connexion, et sudo systemctl status ssh.socket doit apparaître comme actif. Pour couper complètement l’accès à distance, par exemple pendant une maintenance, utilisez sudo systemctl disable --now ssh.socket ssh.

Si le pare-feu UFW est activé, autorisez SSH avant de fermer la session dans laquelle vous travaillez :

sudo ufw allow OpenSSH
sudo ufw enable
N’activez pas UFW avant d’avoir autorisé OpenSSH. La connexion en cours sera coupée et vous resterez bloqué à l’extérieur. Sur un serveur distant auquel vous ne pouvez pas accéder physiquement, c’est l’erreur la plus coûteuse.

Depuis un autre ordinateur, connectez-vous avec :

ssh nomeutente@indirizzo-ip

La commande fonctionne de la même manière sous Linux, macOS, et Windows 10 et 11, qui possèdent déjà le client SSH installé : il suffit d’ouvrir le Terminal Windows ou PowerShell. Lors de la première connexion, on vous demandera de confirmer l’empreinte du serveur : tapez yes.

Les clés : comment elles fonctionnent #

Une paire de clés possède une partie privée, qui reste sur votre ordinateur et ne doit être donnée à personne, et une partie publique, que vous copiez sur le serveur. Lorsque vous vous connectez, le serveur vérifie que vous possédez la bonne clé privée, sans qu’aucun élément secret ne transite sur le réseau.

C’est plus sûr qu’un mot de passe car une clé ne peut pas être devinée : les attaques par force brute, qui testent des millions de combinaisons, ne servent à rien.

Générer la paire de clés #

Sur votre ordinateur, et non sur le serveur :

ssh-keygen -t ed25519 -C "il-mio-portatile"

Terminal avec ssh-keygen -t ed25519 : phrase de passe, chemin des deux fichiers et empreinte de la clé
La commande crée deux fichiers : la clé privée et la clé publique avec l’extension .pub

Ed25519 est l’algorithme recommandé aujourd’hui : clés courtes, vérification rapide, sécurité élevée. Utilisez RSA uniquement si vous devez vous connecter à de vieux systèmes qui ne connaissent pas Ed25519, et dans ce cas avec au moins 4096 bits.

Lorsqu’on vous demande une phrase de passe (passphrase), saisissez-la : elle protège la clé si quelqu’un met la main sur votre ordinateur. Pour ne pas avoir à la taper à chaque fois, l’agent SSH s’en occupe en la mémorisant jusqu’à la fin de la session.

Copier la clé publique sur le serveur #

ssh-copy-id nomeutente@indirizzo-ip

Il ne vous demande le mot de passe qu’une seule fois et configure les bonnes permissions. Sur Windows ssh-copy-id, cela n’existe pas : ouvrez le fichier C:\Users\<nome>\.ssh\id_ed25519.pub, copiez son contenu et collez-le à la fin du fichier ~/.ssh/authorized_keys sur le serveur.

Testez immédiatement la connexion avec la clé depuis une seconde fenêtre, tout en gardant la première ouverte. Ce n’est que lorsque cela fonctionne que vous pouvez passer au blocage des mots de passe.

Sécuriser la configuration #

Les paramètres du serveur se trouvent dans /etc/ssh/sshd_config. Sur les versions récentes d’Ubuntu, il est préférable de ne pas toucher à ce fichier et de créer plutôt votre propre fichier dans /etc/ssh/sshd_config.d/, qui sera lu en complément :

sudo nano /etc/ssh/sshd_config.d/99-sicurezza.conf

Contenu recommandé :

PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3

Rôle de chaque ligne :

ParamètreEffet
PermitRootLogin noPersonne ne peut se connecter directement en tant que root : vous vous connectez avec votre utilisateur et utilisez sudo
PasswordAuthentication noL’accès se fait uniquement par clés, les mots de passe sont rejetés
KbdInteractiveAuthentication noFerme une autre porte qui permettrait un accès par mot de passe
MaxAuthTries 3Limite le nombre de tentatives pour chaque connexion
X11Forwarding noDésactive la redirection graphique, que presque personne n’utilise

Avant d’appliquer, vérifiez que la syntaxe est correcte :

sudo sshd -t

Si rien ne s’affiche, tout est en ordre et vous pouvez recharger le service :

sudo systemctl reload ssh
Gardez votre session actuelle ouverte pendant que vous appliquez les modifications, et testez la nouvelle connexion depuis une autre fenêtre. Si vous avez fait une erreur, vous aurez toujours une connexion active pour rectifier le tir.

Se défendre contre les attaques automatiques #

Changer le port de 22 vers un numéro élevé ne rend pas le serveur plus sûr, mais cela réduit considérablement le bruit dans les logs, car la quasi-totalité des scans automatiques ne testent que le port standard. Cela se configure avec Port 2222 dans votre fichier de configuration, en n’oubliant pas d’ouvrir le nouveau port sur le pare-feu (sudo ufw allow 2222/tcp). Depuis Ubuntu 22.10 et versions ultérieures, y compris la 24.04, il faut également effectuer sudo systemctl daemon-reload et sudo systemctl restart ssh.socket après la modification, sinon le serveur continuera d’écouter sur le port 22.

Fail2ban bloque temporairement les adresses qui se trompent plusieurs fois de suite :

sudo apt install fail2ban

Avec la configuration par défaut, il protège déjà SSH. Vous pouvez voir les adresses bloquées avec sudo fail2ban-client status sshd.

Limiter les utilisateurs autorisés à se connecter est simple et efficace : avec AllowUsers nomeutente dans la configuration, aucun autre compte ne peut se connecter, même avec des identifiants valides.

Le fichier de configuration du client #

Sur l’ordinateur depuis lequel vous vous connectez, le fichier ~/.ssh/config vous évite de mémoriser les adresses et les ports :

Host server-casa
    HostName 192.168.1.50
    User alessandro
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

À partir de ce moment, il suffit d’utiliser ssh server-casa. Le nom fonctionne également avec scp et rsync.

Transférer des fichiers #

scp documento.pdf server-casa:/home/alessandro/

Pour des dossiers entiers ou des copies que vous répétez souvent, utilisez rsync, qui ne transfère que ce qui a été modifié :

rsync -avz --progress cartella/ server-casa:/percorso/di/destinazione/

Si vous préférez un logiciel avec une interface graphique, FileZilla et WinSCP se connectent en SFTP en utilisant les mêmes identifiants et la même clé.

Foire aux questions #

Si je désactive les mots de passe et que je perds ma clé privée, est-ce que je reste bloqué ? #

Oui, et c’est un risque à gérer au préalable. Deux précautions : ajoutez sur le serveur les clés publiques de tous les appareils depuis lesquels vous vous connecterez, et conservez une copie de votre clé privée dans un endroit sûr, par exemple dans votre gestionnaire de mots de passe. Si le serveur est une machine virtuelle chez un fournisseur, il y a généralement aussi une console d’urgence dans le panneau de configuration web.

Ed25519 ou RSA ? #

Ed25519 dès que possible : c’est plus moderne, les clés sont plus courtes et la vérification est plus rapide. RSA 4096 bits uniquement pour les vieux systèmes qui ne supportent pas Ed25519.

Changer le port sert-il à quelque chose ? #

Cela n’augmente pas la sécurité, car un scan ciblé trouvera le service de toute façon. Cependant, cela réduit considérablement les tentatives automatiques et rend les logs plus lisibles : lorsqu’une tentative apparaît, vous savez qu’elle mérite votre attention.

Comment me connecter si l’adresse IP de ma maison change ? #

Avec un service de DNS dynamique, qui associe un nom fixe à votre adresse et le met à jour automatiquement lorsqu’il change. De nombreux routeurs le supportent déjà via leurs paramètres. Alternativement, une VPN comme Tailscale vous permet d’accéder au serveur sans ouvrir de ports sur le routeur.

Que signifie l’avertissement indiquant que la clé de l’hôte a changé ? #

Cela signifie que l’identité du serveur ne correspond plus à celle enregistrée lors de la première connexion. Cela peut être normal si vous avez réinstallé le système ou changé de machine, ou bien le signe de quelqu’un qui tente d’intercepter la connexion. Avant de continuer, comprenez la raison ; ce n’est qu’après que vous devez supprimer l’ancienne entrée avec ssh-keygen -R indirizzo-ip.

À lire ensuite