- 1 1. Introduction
- 2 2. Concepts de base de SSH
- 3 3. Installation d’un serveur SSH sur Ubuntu
- 4 4. Configurer les connexions SSH
- 5 5. Connexion à un serveur SSH
- 6 6. Dépannage des connexions SSH
- 7 7. Renforcer la sécurité SSH
- 8 8. Foire aux questions (FAQ)
- 9 9. Conclusion
1. Introduction
En utilisant SSH sur Ubuntu, vous pouvez accéder de manière sécurisée et gérer votre serveur ou votre PC à distance. Ce guide explique tout, des bases de SSH à l’installation d’un serveur SSH sur Ubuntu, les mesures de sécurité et le dépannage. Il est conçu pour être convivial pour les débutants et facile à comprendre.
What is SSH?
SSH (Secure Shell) est un protocole qui permet des connexions à distance sécurisées sur un réseau. Contrairement aux protocoles traditionnels Telnet ou FTP, SSH chiffre les données afin de réduire considérablement le risque d’écoute clandestine et de falsification.
Main Use Cases of SSH on Ubuntu
SSH est couramment utilisé sur Ubuntu pour les objectifs suivants :
- Gestion de serveur à distance: Exploitez un serveur Ubuntu depuis un emplacement distant.
- Transfert de fichiers : Transférez les fichiers en toute sécurité en utilisant SCP ou SFTP.
- Redirection de port : Établir une connexion distante sécurisée.
What You Will Learn in This Guide
- Concepts de base et fonctionnement de SSH
- How to install an SSH server on Ubuntu
- Paramètres de connexion SSH et dépannage
- Mesures de sécurité pour SSH
2. Concepts de base de SSH
Pour utiliser SSH efficacement, il est important de comprendre ses concepts de base. Cette section explique le fonctionnement de SSH et les différentes méthodes d’authentification.
Comment fonctionne SSH
SSH est un protocole qui établit une connexion sécurisée entre un client et un serveur. Par défaut, il utilise le port TCP 22 pour les communications chiffrées.
Fonctionnalités principales
- Connexion à distance: Exécuter des commandes sur un serveur.
- Transfert de fichiers: Envoyez des données en toute sécurité en utilisant SCP ou SFTP.
- Redirection de port: Connectez-vous à d’autres services via SSH.
Méthodes d’authentification SSH
SSH prend principalement en charge deux méthodes d’authentification :
Authentification par mot de passe
- Login using a username and password.
- Facile à utiliser mais vulnérable aux attaques par force brute.
Authentification par clé publique
- Authentification à l’aide d’une paire de clés publique et privée.
- Plus sécurisé et recommandé par rapport à l’authentification par mot de passe.
Avantages de SSH
- Chiffrement des données: Protège la communication contre l’interception.
- Gestion à distance facile: Accessible depuis n’importe où.
- Sécurité renforcée: Aide à prévenir les accès non autorisés.
3. Installation d’un serveur SSH sur Ubuntu
Pour utiliser SSH sur Ubuntu, vous devez installer le serveur OpenSSH. Cette section explique les étapes d’installation et la configuration de base.
Installation du serveur OpenSSH
Vous pouvez installer le serveur OpenSSH sur Ubuntu avec la commande suivante :
sudo apt update
sudo apt install openssh-server
Après l’installation, vérifiez si le service SSH est en cours d’exécution :
sudo systemctl status ssh
Démarrage et vérification du service SSH
Pour démarrer ou arrêter manuellement le service SSH, utilisez les commandes suivantes :
# Start SSH
sudo systemctl start ssh
# Enable SSH to start automatically on reboot
sudo systemctl enable ssh
# Stop SSH
sudo systemctl stop ssh
Configuration d’UFW (Uncomplicated Firewall)
Si UFW est activé par défaut, les connexions SSH peuvent être bloquées. Autorisez l’accès SSH en exécutant :
sudo ufw allow ssh
sudo ufw enable
4. Configurer les connexions SSH
Pour utiliser SSH en toute sécurité, une configuration appropriée est essentielle. Cette section explique comment configurer l’authentification par clé publique.
Générer une paire de clés
Du côté du client, exécutez la commande suivante pour créer une paire de clés publique et privée :
ssh-keygen -t rsa -b 4096
Par défaut, la clé privée est enregistrée dans ~/.ssh/id_rsa
, et la clé publique est enregistrée dans ~/.ssh/id_rsa.pub
.
Copier la clé publique sur le serveur
Transférez la clé publique générée vers le serveur SSH :
ssh-copy-id username@server-ip
Sinon, copiez manuellement la clé à l’aide de SCP :
scp ~/.ssh/id_rsa.pub username@server-ip:~/
Sur le serveur, déplacez la clé publique dans le répertoire approprié :
Modifier le fichier sshd_config
Renforcez la sécurité en modifiant le fichier de configuration SSH :
sudo nano /etc/ssh/sshd_config
Mettez à jour les paramètres suivants :
# Disable password authentication (enable public key authentication only)
PasswordAuthentication no
# Disable root login
PermitRootLogin no
# Change the default SSH port (example: 2222)
Port 2222
Après avoir effectué les modifications, redémarrez le service SSH :
sudo systemctl restart ssh
5. Connexion à un serveur SSH
Une fois le serveur SSH configuré, vous devez vous y connecter depuis une machine cliente. Cette section explique les méthodes de connexion SSH de base et la gestion des changements de port.
Commande de connexion SSH de base
Pour vous connecter à un serveur SSH depuis un client, utilisez :
ssh username@server-ip
Par exemple, si l’IP du serveur est 192.168.1.10
et le nom d’utilisateur est ubuntu
, saisissez :
ssh ubuntu@192.168.1.10
Lors de la première connexion, vous verrez une invite de vérification d’empreinte. Tapez « yes » pour accepter et continuer.
Connexion avec un port personnalisé
Si le port par défaut (22) a été modifié, indiquez le port en utilisant l’option -p
:
ssh -p 2222 ubuntu@192.168.1.10
Connexion avec une clé privée
Si vous utilisez l’authentification par clé publique, indiquez la clé privée avec l’option -i
:
ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10
Exécution de commandes à distance via SSH
Vous pouvez exécuter des commandes à distance sans vous connecter interactivement au serveur :
ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"
Ceci est utile pour l’automatisation et la gestion à distance.
Transfert de fichiers avec SCP
Utilisez SSH pour transférer des fichiers entre un PC local et un serveur distant.
De local à distant
scp filename username@server-ip:/remote/directory
Exemple :
scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/
De distant à local
scp username@server-ip:/remote/file ./local/directory
Exemple :
scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./
Gestion des fichiers avec SFTP
Utilisez SFTP pour la gestion des fichiers via SSH :
sftp ubuntu@192.168.1.10
Une fois connecté, vous pouvez utiliser des commandes telles que :
ls # List files
cd # Change directory
put file # Upload file from local to remote
get file # Download file from remote to local
exit # Exit SFTP session
6. Dépannage des connexions SSH
Les problèmes de connexion SSH sont courants. Cette section couvre les problèmes typiques et leurs solutions.
Erreurs courantes de connexion SSH et solutions
Si SSH ne parvient pas à se connecter, envisagez les causes suivantes :
1. Le serveur SSH n’est pas en cours d’exécution
Vérifiez si le serveur SSH est actif :
sudo systemctl status ssh
Solution :
- Si le serveur n’est pas en cours d’exécution, démarrez‑le avec :
sudo systemctl start ssh
- Assurez‑vous que SSH démarre automatiquement au redémarrage :
sudo systemctl enable ssh
2. Le pare-feu (UFW) bloque SSH
Si UFW (Uncomplicated Firewall) est activé, il peut bloquer l’accès SSH.
Solution :
- Vérifier les paramètres actuels d’UFW :
sudo ufw status
- Autoriser les connexions SSH :
sudo ufw allow ssh
(Si vous utilisez un port personnalisé, exécutez sudo ufw allow
)
- Restart UFW:
sudo ufw reload
3. Le numéro de port SSH a changé
Si SSH fonctionne sur un port différent, assurez-vous de spécifier le bon port lors de la connexion.
Solution :
- Vérifiez le port SSH configuré :
sudo grep Port /etc/ssh/sshd_config
- Utilisez le port correct lors de la connexion :
ssh -p 2222 username@server-ip
4. Permissions incorrectes des clés SSH
Des permissions de fichiers incorrectes pour les clés SSH peuvent entraîner des échecs d’authentification.
Solution :
- Assurez-vous que la clé privée a les permissions correctes :
chmod 600 ~/.ssh/id_rsa
- Assurez-vous que le fichier des clés autorisées est correctement configuré :
chmod 644 ~/.ssh/authorized_keys
5. Vérification des journaux SSH
Pour diagnostiquer les problèmes SSH, consultez les journaux :
sudo journalctl -u ssh --no-pager | tail -n 20
Pour la surveillance en temps réel des journaux :
sudo tail -f /var/log/auth.log
7. Renforcer la sécurité SSH
SSH est un outil d’accès à distance puissant, mais sans mesures de sécurité appropriées, il peut devenir une cible d’accès non autorisé et d’attaques par force brute. Cette section explique les configurations recommandées pour renforcer la sécurité SSH.
1. Désactiver l’authentification par mot de passe et utiliser l’authentification par clé publique
Par défaut, SSH autorise l’authentification par mot de passe, ce qui augmente le risque d’attaques par force brute. Passer à l’authentification par clé publique renforce la sécurité.
Étapes
- Modifier le fichier
sshd_config
:
sudo nano /etc/ssh/sshd_config
- Modifier (ou ajouter) les paramètres suivants:
PasswordAuthentication no
PubkeyAuthentication yes
- Redémarrer le service SSH :
sudo systemctl restart ssh
Cela garantit que SSH n’accepte l’authentification que via des clés publiques. Assurez‑vous de configurer l’authentification par clé publique avant d’appliquer cette modification.
2. Modifier le port SSH par défaut
Utiliser le port SSH par défaut (22) en fait une cible facile pour les attaques. Modifier le port renforce la sécurité.
Étapes
- Ouvrez le fichier
sshd_config
:
sudo nano /etc/ssh/sshd_config
- Modifier le numéro de port (p. ex., changer en 2222) :
Port 2222
- Autoriser le nouveau port à travers le pare-feu:
sudo ufw allow 2222/tcp
- Redémarrer le service SSH :
sudo systemctl restart ssh
- Testez le nouveau port:
ssh -p 2222 username@server-ip
3. Désactiver la connexion root
Par défaut, l’utilisateur root peut se connecter via SSH, ce qui représente un risque de sécurité. Il est recommandé de n’autoriser que des utilisateurs spécifiques à se connecter.
Étapes
- Ouvrez le fichier
sshd_config
:
sudo nano /etc/ssh/sshd_config
- Modifiez le paramètre suivant:
PermitRootLogin no
- Redémarrer le service SSH :
sudo systemctl restart ssh
4. Prévenir les attaques par force brute avec Fail2Ban
Fail2Ban surveille les tentatives de connexion et bloque les adresses IP après plusieurs tentatives d’authentification échouées.
Installation et configuration
- Installer Fail2Ban:
sudo apt install fail2ban -y
- Copiez le fichier de configuration par défaut :
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Modifier
jail.local
:
sudo nano /etc/fail2ban/jail.local
- Modifiez les paramètres sous
[sshd]
:
[sshd]
enabled = true
maxretry = 5
bantime = 600
findtime = 600
maxretry
: Nombre maximal de tentatives de connexion autorisées.bantime
: Temps (en secondes) pendant lequel une IP sera bloquée.findtime
: Fenêtre de temps (en secondes) pour compter les tentatives échouées.
- Redémarrer Fail2Ban:
sudo systemctl restart fail2ban
- Vérifier le statut de Fail2Ban:
sudo fail2ban-client status sshd
8. Foire aux questions (FAQ)
Cette section traite des questions et problèmes courants lors de l’utilisation de SSH.
Q1 : Pourquoi la connexion SSH est‑refusée ?
Causes possibles :
- Le service SSH n’est pas en cours d’exécution → Vérifiez avec
sudo systemctl status ssh
- Le pare-feu bloque SSH → Autoriser SSH avec
sudo ufw allow ssh
- Utiliser un port personnalisé → Connectez‑vous en utilisant
ssh -p <port> username@server-ip
Q2 : Comment changer le port par défaut de SSH ?
Modifiez le sshd_config
fichier :
sudo nano /etc/ssh/sshd_config
Modifiez le port :
Port 2222
Puis redémarrez SSH :
sudo systemctl restart ssh
Q3 : Comment autoriser uniquement des IP spécifiques à accéder à SSH ?
Modifiez les paramètres du pare‑feu :
sudo ufw allow from 192.168.1.100 to any port 22
Ou utilisez sshd_config
:
AllowUsers username@192.168.1.100
9. Conclusion
Ce guide a couvert tout, des bases de SSH aux améliorations de sécurité. Voici les points clés :
- Utilisez authentification par clé publique au lieu des mots de passe.
- Modifiez le port SSH par défaut pour une meilleure sécurité.
- Désactiver connexion root pour empêcher l’accès non autorisé.
- Utilisez Fail2Ban pour bloquer les attaques par force brute.
- Surveiller journaux SSH pour le dépannage.
Ressources supplémentaires
En suivant ces meilleures pratiques, vous pouvez maintenir un environnement SSH sécurisé et efficace. 🚀