- 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-server
Cette 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 ssh
L’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 ssh
Si 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 ago
Si vous voyez inactive (dead)
ou failed
, démarrez le service manuellement :
sudo systemctl start ssh
2.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 status
Exemple de sortie (si UFW est désactivé) :
Status: inactive
Exemple de sortie (si UFW est activé) :
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
2.2.2 Autorisation du trafic SSH
Pour autoriser les connexions SSH sur le port par défaut 22
, exécutez :
sudo ufw allow ssh
Sinon, spécifiez le port explicitement :
sudo ufw allow 22/tcp
2.2.3 Activation de UFW
Si UFW est désactivé, activez‑le avec :
sudo ufw enable
Avant 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 verbose
Exemple 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-address
Exemple :
ssh user@192.168.1.100
Lors 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-address
Utilisation 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 type
surSSH
et 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_config
Si 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_rsa
Cela 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-address
3.2.3 Désactivation de l’authentification par mot de passe
Modifiez le fichier de configuration SSH :
sudo nano /etc/ssh/sshd_config
Trouvez la ligne suivante et remplacez‑la par :
PasswordAuthentication no
Redémarrez SSH pour appliquer les modifications :
sudo systemctl restart ssh
3.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 ssh
3.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 ssh
3.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/tcp
Vérifiez les paramètres :
sudo ufw status
3.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 -y
3.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.local
Modifiez le fichier de configuration :
sudo nano /etc/fail2ban/jail.local
Modifiez la section SSH comme suit :
[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600
3.5.3 Redémarrage de Fail2Ban
Redémarrez Fail2Ban pour appliquer les modifications :
sudo systemctl restart fail2ban
3.5.4 Vérification de la liste des bannissements
Pour vérifier quelles IP sont bannies :
sudo fail2ban-client status sshd
Ré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.socket
Exemple 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 UTC
4.1.2 Activation ou désactivation de ssh.socket
Si ssh.socket
est désactivé, activez-le avec :
sudo systemctl enable --now ssh.socket
Pour 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.service
4.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-address
4.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-address
4.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-address
4.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/tcp
4.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.allow
Ajoutez la ligne suivante (remplacez 192.168.1.100
par l’adresse IP autorisée) :
sshd: 192.168.1.100
4.4.2 Configuration de /etc/hosts.deny
Pour bloquer toutes les autres IP par défaut :
sudo nano /etc/hosts.deny
sshd: ALL
Cela 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.socket
sous 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 ssh
Solution :
- Si
Active: inactive (dead)
oufailed
, redémarrez SSH.
sudo systemctl restart ssh
- Activez le démarrage automatique de SSH.
sudo systemctl enable ssh
5.1.2 Le pare-feu bloque SSH
Assurez‑vous que SSH est autorisé via UFW :
sudo ufw status
Solution : Si SSH n’est pas autorisé :
sudo ufw allow 22/tcp
Si vous utilisez un port personnalisé :
sudo ufw allow 2200/tcp
5.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-address
5.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_keys
5.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_keys
Ré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 3
Redémarrez SSH pour appliquer les modifications :
sudo systemctl restart ssh
6.1.2 Configuration côté client
Modifiez le fichier de configuration SSH local ~/.ssh/config
:
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
6.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-address
6.3.2 Utilisation de PuTTY
- Téléchargez et installez PuTTY.
- Saisissez l’IP du serveur dans
Host Name (or IP address)
. - Sélectionnez
SSH
comme 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-server
6.4.2 Configuration de SSH
Modifiez /etc/ssh/sshd_config
et activez l’authentification par mot de passe :
PasswordAuthentication yes
Comme WSL n’utilise pas systemd
par défaut, démarrez SSH manuellement :
sudo service ssh start
6.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 -y
Modifiez le fichier de configuration /etc/fail2ban/jail.local
:
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
Redémarrez Fail2Ban :
sudo systemctl restart fail2ban
6.5.2 Changement du port SSH
Modifiez /etc/ssh/sshd_config
pour changer le port SSH par défaut :
Port 2200
Redémarrez SSH et mettez à jour les paramètres du pare‑feu :
sudo ufw allow 2200/tcp
6.6 Comment surveiller les journaux SSH en temps réel ?
Pour afficher les journaux SSH en temps réel, utilisez :
sudo journalctl -u ssh -f
Pour consulter les journaux précédents :
sudo cat /var/log/auth.log | grep ssh
6.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_rsa
Vous pouvez maintenant vous connecter avec :
ssh myserver
6.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_rsa
Cela 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[…]