Guide ultime de configuration SSH pour Ubuntu : accès distant sécurisé, configuration et dépannage

目次

1. Introduction

En utilisant SSH sur Ubuntu, vous pouvez accéder et opérer sur des serveurs ou des PC de manière sécurisée à distance. Cet article fournit une explication détaillée de SSH — de ses concepts de base et de la façon d’installer un serveur SSH sur Ubuntu, aux meilleures pratiques de sécurité et à la résolution de problèmes — en utilisant des explications claires adaptées même aux débutants.

Qu’est-ce que SSH ?

SSH (Secure Shell) est un protocole qui permet des connexions distantes sécurisées aux ordinateurs via un réseau. Contrairement aux protocoles traditionnels tels que Telnet ou FTP, SSH chiffre les données de communication, réduisant considérablement le risque d’espionnage et de falsification.

Principaux cas d’utilisation de SSH sur Ubuntu

Les principaux scénarios dans lesquels SSH est utilisé sur Ubuntu incluent les suivants :

  • Gestion de serveur à distance : Opérer sur des serveurs Ubuntu depuis des emplacements distants
  • Transfert de fichiers : Échanger des fichiers de manière sécurisée en utilisant SCP ou SFTP
  • Redirection de ports : Établir des connexions distantes sécurisées

Ce que vous apprendrez dans cet article

  • Concepts de base et mécanismes de SSH
  • Comment installer un serveur SSH sur Ubuntu
  • Comment configurer les connexions SSH et résoudre les erreurs
  • Meilleures pratiques de sécurité pour SSH

2. Concepts de base de SSH

Pour utiliser SSH efficacement, il est crucial de comprendre ses concepts principaux. Dans ce chapitre, nous expliquons comment SSH fonctionne et les différences entre les méthodes d’authentification.

Comment SSH fonctionne-t-il ?

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 la communication chiffrée.

Principales fonctionnalités

  • Connexion à distance : Exécuter des commandes sur un serveur
  • Transfert de fichiers : Envoyer des données de manière sécurisée via SCP ou SFTP
  • Redirection de ports : Se connecter à d’autres services via SSH

Méthodes d’authentification SSH

SSH propose principalement deux méthodes d’authentification :

Authentification par mot de passe

  • Se connecter en utilisant un nom d’utilisateur et un mot de passe
  • Simple, mais vulnérable aux attaques par force brute

Authentification par clé publique

  • Authentification en utilisant une paire de clés publique et privée
  • Plus sécurisée et recommandée par défaut

Avantages de SSH

  • Communication chiffrée : Protège les données transmises
  • Gestion à distance facile : Accès depuis n’importe où
  • Sécurité renforcée : Aide à prévenir l’accès non autorisé

3. Installation d’un serveur SSH sur Ubuntu

Pour utiliser SSH sur Ubuntu, vous devez installer le paquet du serveur OpenSSH. Ce chapitre explique comment l’installer et le configurer.

Installation du serveur OpenSSH

Vous pouvez installer le serveur OpenSSH sur Ubuntu en utilisant les commandes suivantes :

sudo apt update
sudo apt install openssh-server

Après l’installation, vérifiez que le service SSH est en cours d’exécution :

sudo systemctl status ssh

Démarrage et gestion 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 after reboot
sudo systemctl enable ssh

# Stop SSH
sudo systemctl stop ssh

Configuration de UFW (Uncomplicated Firewall)

Si UFW est activé, les connexions SSH peuvent être bloquées. Autorisez le port SSH (22) avec les commandes ci-dessous :

sudo ufw allow ssh
sudo ufw enable

4. Configuration des connexions SSH

Pour utiliser SSH de manière sécurisée, une configuration appropriée est essentielle. Ce chapitre explique comment configurer l’authentification par clé publique.

Génération d’une paire de clés

Exécutez la commande suivante sur la machine cliente pour générer une paire de clés publique/privée :

ssh-keygen -t rsa -b 4096

Par défaut, la clé privée est stockée dans ~/.ssh/id_rsa, et la clé publique est stockée dans ~/.ssh/id_rsa.pub.

Téléversement de la clé publique sur le serveur

Transférez la clé publique générée sur le serveur SSH :

ssh-copy-id username@server-ip-address

Ou transférez manuellement :

scp ~/.ssh/id_rsa.pub username@server-ip-address:~/

Sur le serveur, exécutez les commandes suivantes pour placer la clé publique dans le répertoire approprié :

mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub

Modification de sshd_config

Ouvrez le fichier de configuration SSH pour améliorer les paramètres de sécurité :

sudo nano /etc/ssh/sshd_config

Vérifiez et modifiez les éléments de configuration suivants :

# Disable password authentication (use public key only)
PasswordAuthentication no

# Disable root login
PermitRootLogin no

# Change the SSH port (example: 2222)
Port 2222

Après avoir apporté les modifications, redémarrez le service SSH :

sudo systemctl restart ssh

5. Exécution des connexions SSH

Une fois le serveur SSH configuré sur Ubuntu, vous pouvez vous connecter depuis une machine cliente. Ce chapitre explique l’utilisation de base de SSH et les méthodes de connexion lorsque le port est modifié.

Commande de connexion SSH de base

Utilisez la commande suivante pour vous connecter depuis un client SSH au serveur :

ssh username@server-ip-address

Par exemple, si l’IP du serveur est 192.168.1.10 et le nom d’utilisateur est ubuntu, tapez :

ssh ubuntu@192.168.1.10

Lors de la première connexion, l’empreinte digitale du serveur sera affichée. Entrez yes pour accepter et procéder.

Connexion après modification du numéro de port

Si vous avez modifié le port SSH — par exemple, en 2222 —, utilisez l’option -p :

ssh -p 2222 ubuntu@192.168.1.10

Connexion avec une clé privée

Si l’authentification par clé publique est configurée, spécifiez la clé privée en utilisant l’option -i :

ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10

Exécution de commandes distantes via SSH

Vous pouvez exécuter des commandes directement sur le serveur distant sans vous connecter de manière interactive :

ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"

Cette approche permet une automatisation efficace et des opérations à distance en utilisant des scripts.

Transfert de fichiers avec SCP

Vous pouvez transférer des fichiers entre le PC local et le serveur distant en utilisant SSH.

Local → Distant

scp filename username@server-ip-address:/remote/directory

Exemple :

scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/

Distant → Local

scp username@server-ip-address:/remote/filename /local/directory

Exemple :

scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./

Gestion de fichiers avec SFTP

Vous pouvez également gérer des fichiers en utilisant SFTP :

sftp ubuntu@192.168.1.10

Une fois connecté, vous pouvez exécuter les commandes suivantes :

ls        # List files
cd        # Change directory
put filename   # Upload a local file to the remote server
get filename   # Download a remote file to the local machine
exit      # Exit the connection

6. Dépannage des connexions SSH

Il n’est pas rare de rencontrer des problèmes lors de la connexion via SSH. Ce chapitre décrit les problèmes courants et comment les résoudre.

Causes courantes des erreurs de connexion SSH et solutions

Lorsqu’une connexion SSH échoue, la cause est généralement l’une des suivantes :

1. Le serveur SSH n’est pas en cours d’exécution

Tout d’abord, confirmez que le serveur SSH fonctionne correctement :

sudo systemctl status ssh

Solution :

  • Si le serveur SSH est arrêté, démarrez-le en utilisant la commande suivante :
    sudo systemctl start ssh
    
  • Pour activer le démarrage automatique de SSH après un redémarrage, exécutez :
    sudo systemctl enable ssh
    

2. Le pare-feu (UFW) bloque SSH

Si UFW (Uncomplicated Firewall) est activé, l’accès SSH peut être bloqué :

Solution :

  • Vérifiez la configuration actuelle de UFW :
    sudo ufw status
    
  • Autorisez l’accès SSH :
    sudo ufw allow ssh
    

(Si vous utilisez un port personnalisé, exécutez sudo ufw allow <port-number>)

  • Redémarrez UFW :
    sudo ufw reload
    

3. Le numéro de port a été modifié

Si le serveur SSH n’utilise pas le port par défaut 22, vous devez spécifier le port correct lors de la connexion :

Solution :

  • Vérifiez le numéro de port sur le serveur :
    sudo grep Port /etc/ssh/sshd_config
    
  • Spécifiez le port correct sur le client :
    ssh -p 2222 username@server-ip-address
    

4. Permissions incorrectes de la clé SSH

Si vous utilisez l’authentification par clé publique, des permissions de clé incorrectes peuvent empêcher la connexion.

Solution :

  • Définir les permissions pour la clé privée :
    chmod 600 ~/.ssh/id_rsa
    
  • Définir les permissions pour la clé publique :
    chmod 644 ~/.ssh/authorized_keys
    

5. Incohérence de la clé d’hôte

Si la clé d’hôte SSH du serveur a changé, le client peut afficher une erreur telle que : “WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”

Solution :

  • Supprimer l’ancienne clé d’hôte :
    ssh-keygen -R <server-ip-address>
    
  • Réessayer de se connecter :
    ssh username@server-ip-address
    

6. Vérification des journaux SSH

Pour identifier les messages d’erreur détaillés de SSH, consultez les fichiers journaux du serveur :

sudo journalctl -u ssh --no-pager | tail -n 20

Pour surveiller les journaux en temps réel, exécutez :

sudo tail -f /var/log/auth.log

7. Problèmes de délai d’attente de connexion SSH

Si les connexions SSH sont lentes ou se déconnectent de manière inattendue, examinez les points suivants :

Solution :

  • Activer KeepAlive – Ajoutez ce qui suit au fichier ~/.ssh/config du client :
    Host *
        ServerAliveInterval 60
    
  • Ajuster les paramètres de délai d’attente sur le serveur – Ajoutez ce qui suit à /etc/ssh/sshd_config et redémarrez le service :
    ClientAliveInterval 60
    ClientAliveCountMax 3
    
    sudo systemctl restart ssh
    

Résumé

Les problèmes de connexion SSH proviennent généralement des points suivants. Dans la plupart des cas, vérifier ces éléments résout le problème :

Vérifier que le service SSH fonctionne
Vérifier que le pare-feu ne bloque pas la connexion
Confirmer que le bon port SSH est utilisé
S’assurer que les permissions des clés SSH sont correctement définies
Examiner les journaux SSH pour identifier les erreurs détaillées

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é ou d’attaques par force brute. Ce chapitre explique les réglages recommandés pour renforcer la sécurité de SSH.

1. Désactiver l’authentification par mot de passe et utiliser l’authentification par clé publique

Par défaut, SSH autorise la connexion par mot de passe, ce qui augmente le risque d’attaques par force brute. Activez l’authentification par clé publique et désactivez l’authentification par mot de passe pour améliorer la sécurité.

Étapes

  1. Modifier sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Modifier ou ajouter les paramètres suivants
    PasswordAuthentication no
    PubkeyAuthentication yes
    
  1. Redémarrer le service SSH
    sudo systemctl restart ssh
    

Après avoir appliqué cette configuration, SSH n’acceptera que l’authentification par clé publique. Assurez‑vous que vos clés SSH sont correctement configurées au préalable.

2. Modifier le numéro de port SSH

Utiliser le port SSH par défaut (22) rend les serveurs plus faciles à cibler pour les attaquants. Modifier le numéro de port aide à réduire les tentatives d’accès non autorisé.

Étapes

  1. Ouvrir sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Modifier la ligne suivante (exemple : changer le port à 2222)
    Port 2222
    
  1. Autoriser le nouveau port dans le pare‑feu
    sudo ufw allow 2222/tcp
    
  1. Redémarrer le service SSH
    sudo systemctl restart ssh
    
  1. Tester la connexion en utilisant le nouveau port
    ssh -p 2222 username@server-ip-address
    

3. Désactiver la connexion root

Par défaut, SSH autorise la connexion root, ce qui représente un risque de sécurité sérieux. Il est recommandé de n’autoriser l’accès SSH qu’aux comptes utilisateurs ordinaires et d’utiliser sudo lorsque des privilèges administratifs sont nécessaires.

Étapes

  1. Ouvrir sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Modifier la ligne suivante
    PermitRootLogin no
    
  1. Redémarrer le service SSH
    sudo systemctl restart ssh
    

4. Prévenir les attaques par force brute avec Fail2Ban

Fail2Ban détecte les tentatives de connexion non autorisées et bloque automatiquement les adresses IP qui dépassent un certain nombre d’échecs.

Installation et configuration

  1. Installer Fail2Ban

.« ` sudo apt install fail2ban -y

2. Copiez le fichier de configuration par défaut

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

3. Modifiez `jail.local`

sudo nano /etc/fail2ban/jail.local

4. Modifiez la section `[sshd]`
[sshd] enabled = true maxretry = 5 bantime = 600 findtime = 600

* `maxretry` : Nombre de tentatives de connexion échouées autorisées
* `bantime` : Durée du blocage d'IP (secondes)
* `findtime` : Fenêtre de temps pour compter les tentatives échouées (secondes)


1. Redémarrez Fail2Ban

sudo systemctl restart fail2ban

6. Vérifiez l'état actuel de Fail2Ban

sudo fail2ban-client status sshd

### Résumé



Pour renforcer la sécurité SSH, appliquez les mesures suivantes :



✅ **Désactiver l'authentification par mot de passe et utiliser l'authentification par clé publique**  
✅ **Changer le port SSH pour réduire l'exposition aux attaques**  
✅ **Désactiver la connexion root pour minimiser les risques**  
✅ **Utiliser Fail2Ban pour prévenir les attaques par force brute**



## 8. Questions Fréquemment Posées (FAQ)



Cette section répond aux questions et problèmes courants qui surviennent lors de la configuration et de l'utilisation de SSH.



### Q1 : Pourquoi SSH affiche-t-il « Connection refused » ?



Il existe plusieurs causes possibles pour qu'une connexion SSH soit refusée.



**Principales causes et solutions :**



1. **Le service SSH n'est pas en cours d'exécution**

sudo systemctl status ssh

**Solution :** Démarrez le service s'il est arrêté.

sudo systemctl start ssh

2. **Le pare-feu (UFW) bloque SSH**

sudo ufw allow ssh sudo ufw enable

3. **Le numéro de port SSH a été modifié**  Si SSH utilise un port personnalisé, spécifiez-le lors de la connexion.

ssh -p 2222 username@server-ip-address

### Q2 : Comment changer le port SSH par défaut ?



Le port 22 est une cible d'attaque courante, le changer améliore la sécurité.



**Étapes :**



1. Modifiez le fichier de configuration SSH

sudo nano /etc/ssh/sshd_config

2. Modifiez la directive `Port`

Port 2222

3. Autorisez le nouveau port via le pare-feu

sudo ufw allow 2222/tcp

4. Redémarrez le service SSH

sudo systemctl restart ssh

Après avoir effectué ces changements, connectez‑vous en utilisant le nouveau port :

ssh -p 2222 username@server-ip-address

### Q3 : Que vérifier si l'authentification par clé publique ne fonctionne pas ?



Vérifiez les points suivants si l'authentification par clé SSH échoue :



1. **Assurez‑vous que la clé publique est correctement installée**

ls -l ~/.ssh/authorized_keys

Assurez‑vous que `authorized_keys` existe et contient la clé correcte.



2. **Vérifiez les permissions des fichiers**

chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh

3. **Vérifiez que SSH autorise l'authentification par clé publique**

sudo nano /etc/ssh/sshd_config

Assurez‑vous que les entrées suivantes sont présentes :

PubkeyAuthentication yes PasswordAuthentication no

4. **Redémarrez le service SSH**

sudo systemctl restart ssh

### Q4 : Comment autoriser l'accès SSH uniquement depuis des adresses IP spécifiques ?



Restreindre l'accès SSH à des adresses IP spécifiques augmente considérablement la sécurité.



**Méthode 1 : Modifier `sshd_config`**



1. Ouvrez le fichier de configuration

sudo nano /etc/ssh/sshd_config

2. Ajoutez une entrée `AllowUsers`

AllowUsers username@192.168.1.100

3. Redémarrez le service SSH

sudo systemctl restart ssh

**Méthode 2 : Configurer le pare‑feu (UFW)**



1. Autorisez l'accès depuis une IP spécifique

sudo ufw allow from 192.168.1.100 to any port 22

2. Refusez l'accès aux autres

sudo ufw deny 22

### Q5 : Comment modifier le délai d'expiration d'une session SSH ?



Si votre session SSH se déconnecte après une période d'inactivité, modifiez les paramètres suivants.



**Paramètres côté client**



1. Ajoutez ce qui suit à `~/.ssh/config` :

Host * ServerAliveInterval 60

**Paramètres côté serveur**



1. Modifiez `sshd_config`

sudo nano /etc/ssh/sshd_config

2. Ajoutez ou modifiez :

ClientAliveInterval 60 ClientAliveCountMax 3

3. Redémarrez le service SSH

sudo systemctl restart ssh « `

Résumé

Ce FAQ couvre les problèmes et solutions SSH les plus courants. Lorsqu’un problème survient, examinez toujours les journaux et les paramètres de configuration pour identifier la cause.

Comment résoudre les problèmes de « Connection refused »
Comment changer le port SSH par défaut et se connecter correctement
Comment dépanner les échecs d’authentification par clé publique
Comment restreindre l’accès SSH à des adresses IP spécifiques
Comment empêcher les timeouts de session SSH

9. Conclusion

Cet article a expliqué comment configurer et utiliser SSH sur Ubuntu, des concepts de base aux pratiques de sécurité avancées. Récapitulons les points clés.

Points Clés

1. Bases de SSH

  • SSH permet un accès distant sécurisé via une communication chiffrée.
  • Plus sécurisé que Telnet ou FTP.
  • Les méthodes d’authentification incluent l’authentification par mot de passe et l’authentification par clé publique .

2. Installation du Serveur SSH

  • Installez OpenSSH via sudo apt install openssh-server .
  • Vérifiez l’état du service avec systemctl status ssh .
  • Autorisez l’accès SSH via UFW en utilisant sudo ufw allow ssh .

3. Configuration de l’Accès SSH

  • Connectez-vous avec ssh username@server-ip-address .
  • Utilisez l’authentification par clé publique pour une sécurité améliorée.
  • Désactivez l’authentification par mot de passe dans sshd_config si désiré.

4. Dépannage

  • Vérifiez si SSH est en cours d’exécution ( systemctl status ssh ).
  • Spécifiez le port correct s’il a été modifié ( ssh -p 2222 username@IP ).
  • Vérifiez les permissions des clés dans ~/.ssh/authorized_keys .

5. Améliorations de Sécurité

  • Désactivez l’authentification par mot de passe et fiez-vous aux clés publiques.
  • Changez le port SSH pour réduire les attaques de scan.
  • Utilisez Fail2Ban pour bloquer les échecs de connexion répétés.
  • Restreignez l’accès SSH à des adresses IP spécifiques lorsque possible.

Ressources d’Apprentissage Supplémentaires

Pour approfondir votre compréhension de SSH, explorez les ressources suivantes :

📚 Documentation Officielle

🛠 Outils Connexes

🎥 Vidéos Recommandées

  • Recherchez sur YouTube « Ubuntu SSH setup » pour trouver des tutoriels adaptés aux débutants.

作成した動画を友だち、家族、世界中の人たちと共有…

Étapes Suivantes

Une fois que vous comprenez comment SSH fonctionne, explorez des utilisations plus avancées :

Automatisez la gestion de serveurs en utilisant Ansible via SSH

  • Idéal pour gérer plusieurs serveurs efficacement.

Tunneling SSH et redirection de ports

  • Utilisez SSH pour sécuriser les connexions de bureau à distance ou créer des tunnels similaires à un VPN.

Surveillez les journaux SSH et améliorez la sécurité

  • Utilisez des outils comme fail2ban et logwatch pour surveiller les activités suspectes.

Pensées Finales

Merci d’avoir lu ce guide jusqu’à la fin ! 🎉
Configurer correctement SSH sur Ubuntu améliore grandement l’efficacité et la sécurité de la gestion à distance.

Au fur et à mesure que vous continuez à apprendre, explorez des techniques avancées comme le tunneling sécurisé et la surveillance proactive pour construire des systèmes encore plus robustes.

Profitez d’une expérience SSH sécurisée et productive ! 🖥️🔐

侍エンジニア塾