- 1 1. Introduction
- 2 2. Configuration SSH de base
- 3 3. Renforcer la sécurité SSH
- 3.1 3.1 Désactivation de la connexion root
- 3.2 3.2 Désactivation de l’authentification par mot de passe et activation de l’authentification par clé publique
- 3.3 3.3 Restriction de l’accès SSH à des utilisateurs spécifiques
- 3.4 3.4 Modification du port SSH
- 3.5 3.5 Prévention des attaques par force brute avec Fail2Ban
- 4 Résumé
- 5 4. Configuration SSH avancée
- 6 Résumé
- 7 5. Dépannage des problèmes SSH
- 8 Résumé
- 9 6. FAQ (Foire aux questions)
- 9.1 6.1 Comment empêcher les expirations SSH ?
- 9.2 6.2 Que faire si j’oublie mon mot de passe SSH ?
- 9.3 6.3 Comment utiliser SSH sous Windows ?
- 9.4 6.4 Comment configurer SSH dans Ubuntu WSL (Windows Subsystem for Linux) ?
- 9.5 6.5 Quelles mesures de sécurité supplémentaires devrais‑je prendre ?
- 9.6 6.6 Comment surveiller les journaux SSH en temps réel ?
- 9.7 6.7 Comment rendre SSH plus pratique ?
- 10 Résumé
- 11 Articles associés
1. Introduction
Configurer SSH sur Ubuntu est essentiel pour gérer des serveurs distants. SSH (Secure Shell) est un protocole qui fournit une communication sécurisée et chiffrée, largement utilisé pour l’accès à distance aux serveurs, l’exécution de commandes et les transferts de fichiers.
Dans ce guide, nous couvrirons tout, de l’installation de base aux configurations de sécurité avancées pour SSH sur Ubuntu.
1.1 Pourquoi configurer SSH sur Ubuntu ?
1.1.1 Qu’est‑ce que SSH ?
SSH (Secure Shell) est un protocole conçu pour une communication sécurisée sur un réseau. Il est couramment utilisé pour se connecter à des serveurs distants, transférer des fichiers et créer des tunnels (transfert de ports). Contrairement aux protocoles traditionnels comme Telnet ou FTP, SSH chiffre toutes les communications, ce qui le rend très sécurisé.
1.1.2 Quand avez‑vous besoin de SSH sur Ubuntu ?
SSH est utile pour la gestion à distance dans divers scénarios, tels que :
- Gestion des serveurs cloud: Les services cloud comme AWS, GCP et Vultr utilisent SSH pour l’accès à distance aux serveurs.
- Opérations à distance dans un environnement LAN: Accéder aux serveurs internes ou aux machines de développement via SSH pour le travail à distance.
- Gestion des appareils IoT: Contrôler à distance des appareils embarqués comme le Raspberry Pi.
Par défaut, SSH est désactivé sur Ubuntu. Pour l’utiliser, vous devez l’installer et le configurer manuellement.
2. Configuration SSH de base
Pour utiliser SSH sur Ubuntu, vous devez installer le serveur SSH (OpenSSH) et le configurer correctement. Cette section couvre l’installation, les paramètres de base, la configuration du pare-feu et comment se connecter à votre serveur.
2.1 Installation et démarrage d’OpenSSH
2.1.1 Qu’est‑ce qu’OpenSSH ?
OpenSSH (Open Secure Shell) est une implémentation open source du protocole SSH. Il prend en charge les connexions à distance, les transferts de fichiers sécurisés (SCP et SFTP) et le transfert de ports.
2.1.2 Installation d’OpenSSH
Par défaut, Ubuntu n’est pas fourni avec un serveur SSH pré‑installé. Utilisez la commande suivante pour l’installer :
sudo apt update && sudo apt install -y openssh-serverCette commande met à jour la liste des paquets et installe le serveur OpenSSH.
2.1.3 Démarrage et activation du serveur SSH
Une fois installé, démarrez le serveur SSH et activez‑le pour qu’il se lance au démarrage.
sudo systemctl enable --now sshL’option enable garantit que SSH démarre automatiquement lors du démarrage du système d’exploitation.
2.1.4 Vérification du statut SSH
Pour vérifier si le serveur SSH fonctionne, utilisez :
systemctl status sshSi vous voyez une sortie similaire à la suivante, SSH fonctionne correctement :
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min agoSi vous voyez inactive (dead) ou failed, démarrez le service manuellement :
sudo systemctl start ssh2.2 Configuration du pare-feu (UFW)
Ubuntu fournit ufw (Uncomplicated Firewall) pour une gestion simplifiée du pare-feu. Vous devez configurer UFW pour autoriser les connexions SSH.
2.2.1 Vérification du statut UFW
Vérifiez le statut actuel du pare-feu avec :
sudo ufw statusExemple de sortie (si UFW est désactivé) :
Status: inactiveExemple de sortie (si UFW est activé) :
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere2.2.2 Autorisation du trafic SSH
Pour autoriser les connexions SSH sur le port par défaut 22, exécutez :
sudo ufw allow sshSinon, spécifiez le port explicitement :
sudo ufw allow 22/tcp2.2.3 Activation de UFW
Si UFW est désactivé, activez‑le avec :
sudo ufw enableAvant d’activer UFW, assurez‑vous que SSH est autorisé, sinon vous pourriez vous bloquer hors du système.
2.2.4 Vérification des paramètres UFW
Vérifiez que les règles du pare-feu sont appliquées correctement :
sudo ufw status verboseExemple de sortie :
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)Si vous voyez cela, SSH est autorisé à travers le pare-feu.
2.3 Connexion à SSH
Une fois le serveur SSH en fonctionnement, vous pouvez vous connecter depuis un PC client.
2.3.1 Connexion depuis Linux/macOS
Sur Linux ou macOS, ouvrez un terminal et exécutez :
ssh username@server-ip-addressExemple :
ssh user@192.168.1.100Lors de la première connexion, vous pouvez voir un avertissement de sécurité comme celui‑ci :
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?Tapez yes et appuyez sur Entrée pour continuer.
2.3.2 Connexion depuis Windows
Sur Windows, vous pouvez utiliser **PowerShell** ou **PuTTY** pour vous connecter via SSH.
Utilisation de PowerShell
Windows 10 et versions ultérieures incluent un client SSH dans PowerShell. Connectez‑vous avec :
ssh username@server-ip-addressUtilisation de PuTTY
- Téléchargez et installez PuTTY depuis le site officiel.
- Ouvrez PuTTY et saisissez l’adresse IP du serveur dans
Host Name (or IP address). - Définissez
Connection typesurSSHet cliquez surOpen. - Saisissez votre nom d’utilisateur et votre mot de passe pour vous connecter.
3. Renforcer la sécurité SSH
SSH est un outil puissant pour l’accès à distance, mais le laisser avec les paramètres par défaut peut présenter des risques de sécurité. Les attaquants ciblent souvent les serveurs SSH en utilisant des attaques par force brute ou des analyses de ports. Pour créer un environnement SSH plus sécurisé, il est essentiel d’appliquer des configurations de sécurité appropriées.
3.1 Désactivation de la connexion root
Par défaut, Ubuntu peut autoriser la connexion root via SSH. Étant donné que le compte root possède tous les privilèges du système, il constitue une cible fréquente pour les attaquants. Désactiver la connexion root et utiliser un compte utilisateur ordinaire améliore considérablement la sécurité.
3.1.1 Étapes de configuration
- Modifiez le fichier de configuration SSH
/etc/ssh/sshd_config.
sudo nano /etc/ssh/sshd_config- Trouvez la ligne suivante et remplacez‑la par
PermitRootLogin no.
PermitRootLogin no- Enregistrez le fichier et redémarrez le service SSH.
sudo systemctl restart ssh- Vérifiez que le paramètre a bien été appliqué.
sudo grep PermitRootLogin /etc/ssh/sshd_configSi la sortie indique PermitRootLogin no, le paramètre a été appliqué avec succès.
3.2 Désactivation de l’authentification par mot de passe et activation de l’authentification par clé publique
Utiliser l’authentification par clé publique est beaucoup plus sûr que de se fier à l’authentification par mot de passe. Avec l’authentification par clé publique, vous n’avez pas besoin de saisir un mot de passe, ce qui réduit le risque d’attaques par force brute.
3.2.1 Génération d’une paire de clés SSH
Sur votre PC local, générez une paire de clés SSH :
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsaCela créera deux fichiers :
- Clé privée (
id_rsa) → Conservez‑la sur votre PC local (ne la partagez jamais publiquement). - Clé publique (
id_rsa.pub) → Copiez‑la sur le serveur.
3.2.2 Copie de la clé publique sur le serveur
Utilisez la commande suivante pour copier votre clé publique sur le serveur :
ssh-copy-id username@server-ip-address3.2.3 Désactivation de l’authentification par mot de passe
Modifiez le fichier de configuration SSH :
sudo nano /etc/ssh/sshd_configTrouvez la ligne suivante et remplacez‑la par :
PasswordAuthentication noRedémarrez SSH pour appliquer les modifications :
sudo systemctl restart ssh3.3 Restriction de l’accès SSH à des utilisateurs spécifiques
Pour renforcer la sécurité, vous pouvez limiter l’accès SSH à des utilisateurs spécifiques.
4>3.3.1 Étapes de configuration
- Ouvrez le fichier de configuration SSH.
sudo nano /etc/ssh/sshd_config- Ajoutez la ligne suivante, en spécifiant les utilisateurs autorisés.
AllowUsers user1 user2- Redémarrez SSH pour appliquer les modifications.
sudo systemctl restart ssh3.4 Modification du port SSH
Le port SSH par défaut (22) est fréquemment ciblé par les attaquants. Le changer pour un port non standard peut réduire le risque d’attaques automatisées.
3.4.1 Étapes de configuration
- Ouvrez le fichier de configuration SSH.
sudo nano /etc/ssh/sshd_config- Trouvez la ligne suivante et remplacez‑la par un port personnalisé (par ex.,
2200).
Port 2200- Enregistrez le fichier et redémarrez SSH.
sudo systemctl restart ssh3.4.2 Mise à jour des paramètres du pare-feu
Après avoir changé le port SSH, autorisez le nouveau port via UFW :
sudo ufw allow 2200/tcpVérifiez les paramètres :
sudo ufw status3.5 Prévention des attaques par force brute avec Fail2Ban
Fail2Ban est un outil qui détecte les tentatives de connexion SSH échouées et bloque temporairement l’adresse IP de l’attaquant.
3.5.1 Installation de Fail2Ban
sudo apt install fail2ban -y3.5.2 Création d’un fichier de configuration
Copiez le fichier de configuration par défaut :
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localModifiez le fichier de configuration :
sudo nano /etc/fail2ban/jail.localModifiez la section SSH comme suit :
[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 36003.5.3 Redémarrage de Fail2Ban
Redémarrez Fail2Ban pour appliquer les modifications :
sudo systemctl restart fail2ban3.5.4 Vérification de la liste des bannissements
Pour vérifier quelles IP sont bannies :
sudo fail2ban-client status sshdRésumé
Dans cette section, nous avons abordé les améliorations essentielles de la sécurité SSH, notamment :
- Désactivation de la connexion root
- Désactivation de l’authentification par mot de passe et activation de l’authentification par clé publique
- Restriction de l’accès SSH à des utilisateurs spécifiques
- Modification du port SSH
- Utilisation de Fail2Ban pour bloquer les attaques par force brute
En mettant en œuvre ces mesures, vous pouvez créer un environnement SSH plus sûr.
4. Configuration SSH avancée
Après avoir configuré la sécurité SSH, vous pouvez profiter des paramètres avancés pour améliorer la convivialité et la sécurité. Cette section couvre la gestion de ssh.socket dans Ubuntu 22.10 et versions ultérieures, le tunneling SSH (transfert de ports), la configuration de plusieurs ports SSH et la restriction de l’accès SSH à des adresses IP spécifiques.
4.1 Utilisation de ssh.socket dans Ubuntu 22.10 et versions ultérieures
À partir d’Ubuntu 22.10, la gestion du service SSH peut passer de ssh.service à ssh.socket. Cela permet à SSH de démarrer dynamiquement lorsqu’une demande de connexion est reçue, réduisant ainsi l’utilisation des ressources.
4.1.1 Vérification de l’état de ssh.socket
Pour vérifier si ssh.socket est activé, exécutez :
sudo systemctl status ssh.socketExemple de sortie (si activé) :
● ssh.socket - OpenSSH Server Socket
Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
Active: active (listening) since Fri 2025-02-28 12:00:00 UTC4.1.2 Activation ou désactivation de ssh.socket
Si ssh.socket est désactivé, activez-le avec :
sudo systemctl enable --now ssh.socketPour revenir au ssh.service traditionnel, désactivez ssh.socket et activez ssh.service à la place :
sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service4.2 Tunnel SSH (transfert de ports)
Le tunnel SSH permet une transmission sécurisée des données entre un serveur distant et un PC local, en contournant les réseaux externes.
4.2.1 Transfert de port local
Utile pour accéder de manière sécurisée à des bases de données ou serveurs web distants.
Exemple : connexion à un serveur MySQL distant (port 3306) depuis votre PC local
ssh -L 3306:localhost:3306 username@server-ip-address4.2.2 Transfert de port distant
Exposez un service local à un serveur distant via SSH.
Exemple : redirection d’un serveur web local (port 80) vers le port 8080 sur un serveur distant
ssh -R 8080:localhost:80 username@server-ip-address4.2.3 Transfert de port dynamique
Transforme SSH en un proxy SOCKS pour une navigation web anonyme.
Exemple : création d’un proxy SOCKS sur le port local 1080
ssh -D 1080 username@server-ip-address4.3 Écoute sur plusieurs ports SSH
Par défaut, SSH écoute sur un seul port (port 22). Configurer plusieurs ports offre une flexibilité d’accès.
4.3.1 Étapes de configuration
- Modifier le fichier de configuration SSH.
sudo nano /etc/ssh/sshd_config- Ajouter plusieurs entrées de port.
Port 22
Port 2200- Redémarrer SSH.
sudo systemctl restart ssh- Autoriser le nouveau port dans le pare-feu.
sudo ufw allow 2200/tcp4.4 Restriction de l’accès SSH à des adresses IP spécifiques
Pour renforcer la sécurité, vous pouvez limiter l’accès SSH à des adresses IP spécifiques.
4.4.1 Configuration de /etc/hosts.allow
Autorisez l’accès SSH uniquement depuis certaines adresses IP en modifiant :
sudo nano /etc/hosts.allowAjoutez la ligne suivante (remplacez 192.168.1.100 par l’adresse IP autorisée) :
sshd: 192.168.1.1004.4.2 Configuration de /etc/hosts.deny
Pour bloquer toutes les autres IP par défaut :
sudo nano /etc/hosts.denysshd: ALLCela garantit que seules les IP répertoriées dans hosts.allow peuvent accéder à SSH.
Résumé
Cette section couvrait les paramètres SSH avancés, notamment :
- Gestion de
ssh.socketsous Ubuntu 22.10 et versions ultérieures - Utilisation du tunneling SSH (redirection de ports) pour des connexions sécurisées
- Écoute sur plusieurs ports SSH
- Restriction de l’accès SSH à des IP spécifiques
L’application de ces paramètres améliore la sécurité et la convivialité de SSH.
5. Dépannage des problèmes SSH
Même avec une configuration correcte, des problèmes SSH peuvent survenir. Cette section propose des solutions aux problèmes SSH courants.
5.1 Impossible de se connecter à SSH
Si vous obtenez une erreur Connection refused ou un délai d’attente dépassé, vérifiez ce qui suit.
5.1.1 Le service SSH n’est pas en cours d’exécution
Vérifiez l’état du service SSH :
sudo systemctl status sshSolution :
- Si
Active: inactive (dead)oufailed, redémarrez SSH.
sudo systemctl restart ssh- Activez le démarrage automatique de SSH.
sudo systemctl enable ssh5.1.2 Le pare-feu bloque SSH
Assurez‑vous que SSH est autorisé via UFW :
sudo ufw statusSolution : Si SSH n’est pas autorisé :
sudo ufw allow 22/tcpSi vous utilisez un port personnalisé :
sudo ufw allow 2200/tcp5.2 Erreurs d’authentification
Si SSH rejette les tentatives de connexion, vérifiez ce qui suit :
5.2.1 Nom d’utilisateur ou mot de passe incorrect
Assurez‑vous d’utiliser le bon nom d’utilisateur :
ssh username@server-ip-address5.2.2 Problèmes d’authentification par clé publique
Vérifiez que votre clé publique est correctement stockée dans ~/.ssh/authorized_keys.
cat ~/.ssh/authorized_keys5.2.3 Permissions incorrectes
Assurez‑vous que le répertoire et les fichiers SSH ont les bonnes permissions :
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysRésumé
Cette section couvre les problèmes SSH courants et leurs solutions, y compris :
- Vérifier si SSH fonctionne
- S’assurer que le pare-feu ne bloque pas SSH
- Résoudre les problèmes d’authentification
Utilisez ces étapes de dépannage pour résoudre rapidement les problèmes de connexion SSH.
6. FAQ (Foire aux questions)
Cette section traite des questions courantes liées à SSH et des solutions pour améliorer votre expérience SSH tout en maintenant la sécurité.
6.1 Comment empêcher les expirations SSH ?
Si les connexions SSH se déconnectent après une période d’inactivité, essayez les paramètres suivants.
6.1.1 Configuration côté serveur
Modifiez /etc/ssh/sshd_config et ajoutez :
ClientAliveInterval 60
ClientAliveCountMax 3Redémarrez SSH pour appliquer les modifications :
sudo systemctl restart ssh6.1.2 Configuration côté client
Modifiez le fichier de configuration SSH local ~/.ssh/config :
Host *
ServerAliveInterval 60
ServerAliveCountMax 36.2 Que faire si j’oublie mon mot de passe SSH ?
6.2.1 Si vous avez un accès physique au serveur
- Démarrez en mode de récupération via le menu GRUB.
- Réinitialisez le mot de passe avec la commande suivante :
passwd username- Redémarrez le système.
6.2.2 Si vous ne pouvez pas accéder physiquement au serveur (par ex., VPS cloud)
- Utilisez la fonction console du fournisseur cloud pour accéder au serveur.
- Configurez l’authentification par clé SSH au lieu de vous fier aux mots de passe.
6.3 Comment utiliser SSH sous Windows ?
6.3.1 Utilisation de PowerShell
Windows 10 et versions ultérieures incluent un client SSH intégré. Ouvrez PowerShell et exécutez :
ssh username@server-ip-address6.3.2 Utilisation de PuTTY
- Téléchargez et installez PuTTY.
- Saisissez l’IP du serveur dans
Host Name (or IP address). - Sélectionnez
SSHcomme type de connexion et cliquez surOpen. - Connectez‑vous avec votre nom d’utilisateur et votre mot de passe.
6.4 Comment configurer SSH dans Ubuntu WSL (Windows Subsystem for Linux) ?
Pour activer SSH sur WSL, suivez ces étapes.
6.4.1 Installation du serveur SSH
sudo apt update && sudo apt install openssh-server6.4.2 Configuration de SSH
Modifiez /etc/ssh/sshd_config et activez l’authentification par mot de passe :
PasswordAuthentication yesComme WSL n’utilise pas systemd par défaut, démarrez SSH manuellement :
sudo service ssh start6.5 Quelles mesures de sécurité supplémentaires devrais‑je prendre ?
6.5.1 Installation de Fail2Ban
Prévenez les attaques par force brute en installant Fail2Ban :
sudo apt install fail2ban -yModifiez le fichier de configuration /etc/fail2ban/jail.local :
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600Redémarrez Fail2Ban :
sudo systemctl restart fail2ban6.5.2 Changement du port SSH
Modifiez /etc/ssh/sshd_config pour changer le port SSH par défaut :
Port 2200Redémarrez SSH et mettez à jour les paramètres du pare‑feu :
sudo ufw allow 2200/tcp6.6 Comment surveiller les journaux SSH en temps réel ?
Pour afficher les journaux SSH en temps réel, utilisez :
sudo journalctl -u ssh -fPour consulter les journaux précédents :
sudo cat /var/log/auth.log | grep ssh6.7 Comment rendre SSH plus pratique ?
6.7.1 Utilisation de .ssh/config pour une connexion facile
Enregistrez les connexions SSH fréquemment utilisées dans ~/.ssh/config :
Host myserver
HostName 192.168.1.100
User user
Port 2200
IdentityFile ~/.ssh/id_rsaVous pouvez maintenant vous connecter avec :
ssh myserver6.7.2 Utilisation de ssh-agent pour éviter de saisir le mot de passe à chaque fois
Exécutez :
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsaCela permet des connexions SSH sans saisir la phrase de passe à chaque fois.
Résumé
Cette section fournit des réponses aux questions courantes liées à SSH, couvrant :
- Prévention des expirations de session SSH
- Récupération d’un mot de passe oublié
- Utilisation de SSH sous Windows et WSL
- Mise en place de mesures de sécurité supplémentaires
- Surveillance des journaux SSH
- Rendre l’utilisation de SSH plus pratique
En suivant ces conseils, vous pouvez créer un environnement SSH sécurisé et efficace pour la gestion à distance des serveurs.
Articles associés
1. Introduction En utilisant SSH sur Ubuntu, vous pouvez accéder de manière sécurisée et gérer votre serveur ou votre P[…]



![Comment vérifier, modifier et basculer entre les versions de Python sur Ubuntu [Guide complet]](https://www.linux.digibeatrix.com/wp-content/uploads/2025/02/36b84d2ec91b0993972a29a44e5757c7-375x214.webp)
![Comment vérifier la version de CUDA sur Ubuntu [Guide de commande facile]](https://www.linux.digibeatrix.com/wp-content/uploads/2025/03/7ad0e7fe124605dc3cd746565dc1d108-375x214.webp)