- 1 1. Introduction
- 2 2. Configuration de base de SSH
- 3 Conclusion
- 4 3. Renforcer la sécurité SSH
- 5 Conclusion
- 6 4. Configuration SSH avancée
- 7 Conclusion
- 8 5. Dépannage SSH
- 9 Conclusion
- 10 6. FAQ (Foire aux questions)
- 10.1 6.1 Comment résoudre les problèmes de délai d’attente SSH ?
- 10.2 6.2 Que faire si vous avez oublié votre mot de passe SSH ?
- 10.3 6.3 Comment utiliser SSH sous Windows ?
- 10.4 6.4 Comment configurer SSH sur Ubuntu WSL ?
- 10.5 6.5 Bonnes pratiques de sécurité supplémentaires
- 10.6 6.6 Comment surveiller les journaux SSH en temps réel ?
- 10.7 6.7 Astuces pour utiliser SSH plus facilement
- 11 Conclusion
1. Introduction
La configuration de SSH sur Ubuntu est essentielle pour la gestion des serveurs distants. SSH (Secure Shell) est un protocole qui fournit une communication chiffrée sécurisée, permettant aux utilisateurs d’accéder aux serveurs à distance, d’exécuter des commandes et de transférer des fichiers.
Cet article explique comment configurer SSH sur Ubuntu, des étapes d’installation de base aux mesures de sécurité avancées.
1.1 Pourquoi configurer SSH sur Ubuntu ?
1.1.1 Qu’est-ce que SSH ?
SSH (Secure Shell) est un protocole qui permet 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 (redirection de ports). Contrairement à Telnet ou FTP traditionnels, SSH chiffre toute la communication, offrant une sécurité forte.
1.1.2 Quand SSH est nécessaire sur Ubuntu
Scénarios courants où SSH est utilisé pour gérer Ubuntu à distance incluent :
- Administration de serveurs cloud : Les serveurs Linux sur AWS, GCP, Vultr, et autres sont généralement accessibles via SSH.
- Opérations à distance dans des environnements LAN : Accès à des serveurs internes ou des machines de développement à distance.
- Gestion d’appareils IoT : Contrôle de systèmes embarqués tels que Raspberry Pi à distance.
Par défaut, le serveur SSH est désactivé sur Ubuntu, il doit donc être installé et configuré manuellement pour activer l’accès SSH.
2. Configuration de base de SSH
Pour utiliser SSH sur Ubuntu, vous devez installer le serveur SSH (OpenSSH) et le configurer correctement. Cette section explique comment installer SSH, ajuster les paramètres de base, configurer le pare-feu et se connecter au 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 distantes, les transferts de fichiers sécurisés (SCP et SFTP), et la redirection de ports.
2.1.2 Installation d’OpenSSH
Ubuntu n’inclut pas de serveur SSH par défaut, installez-le en utilisant la commande ci-dessous :
sudo apt update && sudo apt install -y openssh-server
Cela met à jour les listes de paquets et installe le serveur OpenSSH.
2.1.3 Démarrage de SSH et activation du démarrage automatique
Après l’installation, démarrez le serveur SSH et activez le démarrage automatique :
sudo systemctl enable --now ssh
L’option enable garantit que SSH démarre automatiquement au démarrage du système d’exploitation.
2.1.4 Vérification du statut de SSH
Vérifiez que SSH est en cours d’exécution :
systemctl status ssh
Si la sortie affiche active (running), SSH fonctionne normalement :
● 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 ago
S’il affiche inactive (dead) ou failed, démarrez SSH manuellement :
sudo systemctl start ssh
2.2 Configuration du pare-feu (UFW)
Ubuntu inclut un pare-feu simple appelé ufw (Uncomplicated Firewall). Vous devez autoriser les connexions SSH à travers celui-ci.
2.2.1 Vérification du statut d’UFW
sudo ufw status
Exemple de sortie (inactif) :
Status: inactive
Exemple de sortie (actif) :
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
2.2.2 Autorisation de SSH
sudo ufw allow ssh
Ou explicitement :
sudo ufw allow 22/tcp
2.2.3 Activation d’UFW
sudo ufw enable
2.2.4 Vérification des règles UFW
sudo ufw status verbose
Exemple :
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
2.3 Méthodes de connexion SSH de base
Une fois SSH en cours d’exécution, connectez-vous depuis une machine cliente.
2.3.1 Connexion depuis Linux/macOS
ssh username@server-ip-address
Exemple :
ssh user@192.168.1.100
Vous pourriez voir un avertissement de sécurité lors de la première connexion :
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 pour continuer.
2.3.2 Connexion depuis Windows
Vous pouvez utiliser PowerShell ou PuTTY.
Utilisation de PowerShell (Windows 10+ inclut SSH) :
ssh username@server-ip-address
Utilisation de PuTTY :
- Téléchargez PuTTY depuis le site officiel
- Ouvrez PuTTY et saisissez l’IP du serveur dans
Host Name (or IP address) - Sélectionnez
SSHcomme type de connexion - Cliquez sur Open et connectez‑vous
Conclusion
Cette section a couvert les bases de la configuration d’SSH sur Ubuntu :
- Comment installer et démarrer OpenSSH
- Comment autoriser les connexions SSH avec UFW
- Comment se connecter depuis Linux/macOS et Windows
3. Renforcer la sécurité SSH
SSH est puissant, mais le laisser avec les paramètres par défaut augmente les risques de sécurité. Les attaquants tentent souvent des tentatives de connexion par force brute ou des analyses de ports. Renforcer la sécurité d’SSH est essentiel.
3.1 Désactiver la connexion root
La connexion root donne un contrôle complet du système et constitue une cible majeure pour les attaquants. La désactiver améliore la sécurité.
3.1.1 Étapes
- Modifiez le fichier de configuration SSH :
sudo nano /etc/ssh/sshd_config
- Changez la ligne en :
PermitRootLogin no
- Redémarrez SSH :
sudo systemctl restart ssh
- Confirmez le changement :
sudo grep PermitRootLogin /etc/ssh/sshd_config
Si la sortie est PermitRootLogin no, le paramètre est appliqué.
3.2 Désactiver l’authentification par mot de passe et utiliser l’authentification par clé
L’authentification par clé publique est plus sûre que les mots de passe et réduit les risques d’attaques par force brute.
3.2.1 Création de clés SSH
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
Cela génère deux fichiers :
- id_rsa (clé privée) — conservez‑la localement, ne la partagez jamais
- id_rsa.pub (clé publique) — téléversez‑la sur le serveur
3.2.2 Téléversement de la clé publique
ssh-copy-id username@server-ip-address
3.2.3 Désactivation de l’authentification par mot de passe
sudo nano /etc/ssh/sshd_config
Modifiez :
PasswordAuthentication no
Redémarrez SSH :
sudo systemctl restart ssh
3.3 Autoriser l’accès SSH uniquement à des utilisateurs spécifiques
Pour renforcer la sécurité SSH, vous pouvez restreindre l’accès afin que seuls certains utilisateurs puissent se connecter.
3.3.1 Étapes de configuration
- Ouvrez le fichier de configuration SSH
/etc/ssh/sshd_config:sudo nano /etc/ssh/sshd_config
- Ajoutez les utilisateurs autorisés à accéder via SSH :
AllowUsers username1 username2
- Redémarrez SSH pour appliquer les paramètres :
sudo systemctl restart ssh
3.4 Modifier le port SSH
Comme le port 22 est fréquemment ciblé par les attaquants, changer le port par défaut peut améliorer la sécurité.
3.4.1 Étapes de configuration
- Ouvrez le fichier de configuration SSH :
sudo nano /etc/ssh/sshd_config
- Modifiez le paramètre de port, par exemple :
Port 2200
- Redémarrez SSH :
sudo systemctl restart ssh
3.4.2 Mise à jour des paramètres du pare‑feu
Si vous changez le port, mettez à jour UFW :
sudo ufw allow 2200/tcp
Vérifiez la nouvelle règle :
sudo ufw status
3.5 Prévenir les attaques par force brute avec Fail2Ban
Fail2Ban détecte les tentatives de connexion échouées et bloque l’IP attaquante pendant une durée spécifiée.
3.5.1 Installer Fail2Ban
sudo apt install fail2ban -y
3.5.2 Créer un fichier de configuration
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ouvrez le fichier :
sudo nano /etc/fail2ban/jail.local
Modifiez les paramètres :
[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600
3.5.3 Redémarrer Fail2Ban
sudo systemctl restart fail2ban
3.5.4 Vérifier la liste des bannissements
sudo fail2ban-client status sshd
Conclusion
Cette section a expliqué les méthodes pour renforcer la sécurité d’SSH :
- Désactiver la connexion root
- Désactiver l’authentification par mot de passe et activer l’authentification par clé
- Restreindre l’accès SSH à des utilisateurs spécifiques
- Changer le port SSH
- Utiliser Fail2Ban pour bloquer les tentatives non autorisées
Mettre en œuvre ces paramètres aide à créer un environnement SSH sécurisé.

4. Configuration SSH avancée
Une fois la configuration SSH de base et le renforcement de la sécurité terminés, vous pouvez passer aux fonctionnalités avancées pour une flexibilité et une sécurité accrues. Cette section couvre la gestion de ssh.socket (Ubuntu 22.10+), les tunnels SSH, l’écoute sur plusieurs ports et le contrôle d’accès basé sur les IP.
4.1 Utilisation de ssh.socket sur Ubuntu 22.10+
Sur Ubuntu 22.10+, SSH peut être géré par ssh.socket au lieu de ssh.service. Cette activation basée sur les sockets démarre SSH uniquement lorsque c’est nécessaire, économisant ainsi les ressources système.
4.1.1 Vérifier le statut de ssh.socket
sudo systemctl status ssh.socket
Exemple de sortie (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 UTC
4.1.2 Activer ou désactiver ssh.socket
Activer le socket :
sudo systemctl enable --now ssh.socket
Revenir au ssh.service classique :
sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service
4.2 Tunneling SSH (Redirection de ports)
Le tunneling SSH établit des canaux de communication sécurisés entre les systèmes locaux et distants.
4.2.1 Redirection de port locale
Utile pour se connecter en toute sécurité à des bases de données distantes ou à des services internes.
Exemple : Accéder à un serveur MySQL distant sur le port 3306
ssh -L 3306:localhost:3306 username@server-ip-address
4.2.2 Redirection de port inverse
Exposer des services locaux via un serveur distant.
Exemple : Publier un serveur web local sur le port distant 8080
ssh -R 8080:localhost:80 username@server-ip-address
4.2.3 Redirection de port dynamique (proxy SOCKS)
Utiliser SSH comme proxy SOCKS pour une navigation anonyme.
ssh -D 1080 username@server-ip-address
4.3 Écoute sur plusieurs ports
SSH peut écouter sur plusieurs ports pour plus de flexibilité dans différents environnements réseau.
4.3.1 Étapes de configuration
- Modifier
/etc/ssh/sshd_config:sudo nano /etc/ssh/sshd_config
- Ajouter plusieurs lignes
Port:Port 22 Port 2200
- Redémarrer SSH :
sudo systemctl restart ssh
- Autoriser le nouveau port avec UFW :
sudo ufw allow 2200/tcp
4.4 Autoriser SSH uniquement depuis des adresses IP spécifiques
Restreindre l’accès SSH par adresse IP offre un contrôle de sécurité renforcé.
4.4.1 Configurer /etc/hosts.allow
sudo nano /etc/hosts.allow
Ajouter une adresse IP autorisée :
sshd: 192.168.1.100
4.4.2 Configurer /etc/hosts.deny
sudo nano /etc/hosts.deny
Refuser tous les autres :
sshd: ALL
Conclusion
Cette section a couvert les sujets de configuration SSH avancée :
- Gestion de
ssh.socketsous Ubuntu 22.10+ - Utilisation des tunnels SSH (redirection de ports)
- Écoute sur plusieurs ports SSH
- Restriction de l’accès SSH à des adresses IP spécifiques
L’application de ces configurations améliore à la fois la sécurité et la convivialité.
5. Dépannage SSH
Même avec une configuration correcte, les connexions SSH peuvent parfois échouer. Cette section explique les problèmes SSH courants et leurs solutions.
5.1 Quand SSH ne peut pas se connecter
Si SSH renvoie Connection refused ou dépasse le délai, les causes possibles incluent des problèmes de service, une mauvaise configuration du port ou des restrictions du pare-feu.
5.1.1 Le service SSH n’est pas en cours d’exécution
sudo systemctl status ssh
Solution :
- Si
inactiveoufailed, redémarrez SSH :sudo systemctl restart ssh
- Activer le démarrage automatique :
sudo systemctl enable ssh
5.1.2 Port SSH non ouvert
ssh -p 2200 username@server-ip-address
Vérifiez les ports ouverts :
sudo netstat -tulnp | grep ssh
Or:
ss -tulnp | grep ssh
5.1.3 Pare-feu (UFW) bloquant SSH
sudo ufw status
Autoriser SSH :
sudo ufw allow 22/tcp
Si vous utilisez un port personnalisé :
sudo ufw allow 2200/tcp
5.2 Erreurs d’authentification
5.2.1 Nom d’utilisateur ou mot de passe incorrect
ssh username@server-ip-address
5.2.2 Clé publique mal installée
cat ~/.ssh/authorized_keys
Vérifiez qu’elle correspond à la id_rsa.pub locale.
5.2.3 Permissions incorrectes sur le répertoire .ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Assurez-vous également :
chmod 755 /home/username
5.3 Connexions SSH instables ou déconnexions inattendues
5.3.1 Ajuster ClientAliveInterval
ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh
5.3.2 Ajuster les paramètres du client local
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
5.4 Visualisation des journaux SSH
5.4.1 Voir les journaux en temps réel
sudo journalctl -u ssh -f
5.4.2 Voir les journaux passés
sudo cat /var/log/auth.log | grep ssh
sudo grep "Failed password" /var/log/auth.log
Conclusion
Cette section a expliqué les problèmes SSH courants et comment les résoudre :
- Vérifier si le service SSH est en cours d’exécution
- Vérifier les ports ouverts
- Vérifier les paramètres du pare-feu
- Assurer une authentification par clé correcte
- Corriger les problèmes de délai d’attente et de déconnexion
- Analyser les journaux SSH
La plupart des problèmes SSH proviennent d’une mauvaise configuration ou de contraintes réseau. Utilisez ces étapes de dépannage pour résoudre les problèmes efficacement.
6. FAQ (Foire aux questions)
Cette section répond aux questions courantes liées à l’utilisation et à la configuration de SSH.
6.1 Comment résoudre les problèmes de délai d’attente SSH ?
6.1.1 Paramètres côté serveur
ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh
6.1.2 Paramètres côté client
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
6.2 Que faire si vous avez oublié votre mot de passe SSH ?
6.2.1 Si vous avez un accès physique
- Démarrez en mode mono-utilisateur (sélectionnez le
mode de récupérationdepuis GRUB) - Réinitialisez le mot de passe :
passwd username
- Redémarrez le système
6.2.2 Si l’accès physique n’est pas possible (VPS cloud)
- Utilisez la console VPS fournie par le service d’hébergement
- Utilisez l’authentification par clé publique
6.3 Comment utiliser SSH sous Windows ?
6.3.1 Utilisation de PowerShell
ssh username@server-ip-address
6.3.2 Utilisation de PuTTY
- Téléchargez et installez PuTTY
- Saisissez l’adresse IP du serveur dans
Host Name - Sélectionnez
SSHcomme type de connexion - Connectez-vous avec le nom d’utilisateur et le mot de passe
6.4 Comment configurer SSH sur Ubuntu WSL ?
6.4.1 Installer le serveur SSH
sudo apt update && sudo apt install openssh-server
6.4.2 Modifier les paramètres SSH
PasswordAuthentication yes
Démarrez SSH manuellement (WSL n’utilise pas systemd) :
sudo service ssh start
6.5 Bonnes pratiques de sécurité supplémentaires
6.5.1 Utiliser Fail2Ban
sudo apt install fail2ban -y
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
sudo systemctl restart fail2ban
6.5.2 Changer le port SSH
Port 2200
sudo ufw allow 2200/tcp
6.6 Comment surveiller les journaux SSH en temps réel ?
sudo journalctl -u ssh -f
sudo cat /var/log/auth.log | grep ssh
6.7 Astuces pour utiliser SSH plus facilement
6.7.1 Utiliser .ssh/config pour des connexions simples
Host myserver
HostName 192.168.1.100
User user
Port 2200
IdentityFile ~/.ssh/id_rsa
Puis connectez-vous avec :
ssh myserver
6.7.2 Utiliser ssh-agent
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Conclusion
Cette section résume les questions fréquemment posées liées à SSH :
- Comment résoudre les problèmes de délai d’attente SSH
- Comment récupérer un mot de passe oublié
- Comment utiliser SSH sur Windows et WSL
- Meilleures pratiques de sécurité
- Comment vérifier les journaux SSH
- Astuces pour rendre SSH plus pratique en utilisant
.ssh/config
En appliquant ces techniques, vous pouvez créer un environnement SSH sécurisé et efficace et gérer les serveurs distants en toute fluidité.



