Réseaux & Télécoms PDF Gratuit

Cours de SSH en PDF (Débutant)

SSH - Secure SHell : Ce qu'il faut savoir. SSH (Secure Shell) est un protocole cryptographique permettant d'établir des connexions à distance sécurisées vers un shell distant ou des services réseau. Téléchargez ce cours PDF pour acquérir les bases pratiques et théoriques nécessaires à l'utilisation sécurisée de SSH. Le document couvre aussi les échanges de clés (KEX), l'authentification mutuelle et les mécanismes de vérification d'empreinte.

🎯 Ce que vous allez apprendre

  • Fonctionnement de SSH : Comprendre comment SSH établit des connexions sécurisées entre client et serveur, y compris la gestion des clés en mémoire avec ssh-agent (KEX, gestion de session) et les communications sur le port 22.
  • Cryptographie dans SSH : Explorer les algorithmes de chiffrement, les échanges de clés, la cryptographie asymétrique, les mécanismes KEX et l'usage des clés publiques/privées ainsi que des MAC (Message Authentication Code) pour l'intégrité.
  • Authentification des utilisateurs : Méthodes d'authentification (mot de passe, clé publique/clé privée) et bonnes pratiques de sécurité pour une authentification forte.
  • Utilisation d'OpenSSH : Outils et commandes OpenSSH pour gérer connexions, clés et tunneling en ligne de commande.
  • Transfert de fichiers sécurisé via SCP et SFTP : Copie et transfert de fichiers sécurisés entre hôtes (SCP, SFTP) et gestion des permissions.
  • Tunneling et VPN avec SSH : Tunneling (redirection de ports, X11 forwarding) et utilisation de SSH pour des connexions VPN simples.

Télécharger le support de cours SSH en PDF

Téléchargez le support de cours SSH en PDF (94 pages) via le bouton de téléchargement disponible sur cette page. Le PDF contient les exemples de configuration, scripts et commandes listés ici pour une utilisation hors-ligne et en formation.

📑 Sommaire du document

  • Introduction et concepts clés
  • Architecture SSH et modèle client/serveur
  • Installation et configuration d'OpenSSH (client & serveur)
  • Gestion des clés : génération, formats (Ed25519, RSA), et stockage
  • Authentification et contrôle d'accès (AllowUsers, AllowGroups, sudo)
  • Transfert de fichiers : SCP, SFTP, bonnes pratiques
  • Tunneling, port forwarding et X11 forwarding
  • Sécurisation (hardening) et paramètres de sshd_config
  • Dépannage, journalisation et diagnostic des connexions
  • Annexes : exemples, scripts, commandes essentielles

👤 À qui s'adresse ce cours ?

  • Public cible : Débutants souhaitant comprendre les bases du shell sécurisé, du transfert de fichiers et du tunneling SSH ; solutions pour Windows (PuTTY), Linux/macOS (OpenSSH) et transfert de fichiers (WinSCP).
  • Prérequis : Connaissance de base du terminal et notions élémentaires de réseau (adresses IP, ports). Le cours explique pas à pas les commandes essentielles.
  • Points pratiques : Le cours aborde aussi le déport d'affichage X11 (X11 forwarding) depuis des clients comme PuTTY pour Windows.

❓ Foire Aux Questions (FAQ)

Qu'est-ce que SSH ?
SSH est un protocole de communication qui chiffre les échanges entre un client et un serveur, offrant un shell sécurisé et des mécanismes d'authentification par clé publique/privée.

Pourquoi utiliser SSH plutôt que telnet ?
SSH chiffre les données (mots de passe, commandes, fichiers), empêchant les interceptions sur le réseau — contrairement à telnet qui transmet en clair.

Caractéristique SSH Telnet
Chiffrement Oui — chiffrement symétrique/asymétrique, KEX, MAC Non — texte en clair
Authentification Clé publique/privée, mots de passe, options 2FA Mot de passe en clair
Port par défaut 22 23
Intégrité et vérification Vérification d'empreinte (host key), protection contre MITM Aucune vérification cryptographique
Cas d'usage Administration distante, tunneling, transferts sécurisés (SCP/SFTP) Accès distant basique — obsolète pour l'administration sécurisée

Outils et clients SSH

  • PuTTY (Windows) — client SSH populaire pour Windows, avec options de transfert de clés et X11 forwarding.
  • OpenSSH (Linux/macOS) — suite en ligne de commande offrant serveur (sshd) et client (ssh), standard de facto pour sécuriser les serveurs.
  • WinSCP — client graphique pour Windows orienté transfert de fichiers sécurisé via SCP/SFTP.

SSH est également utilisé pour accéder et administrer des équipements réseau (routeurs, commutateurs Cisco). Les connexions terminales SSH remplacent souvent la console série pour l'administration à distance, permettant l'authentification forte et la vérification d'empreinte numérique avant d'accepter une clé d'hôte.

Configuration SSH sur routeurs Cisco

Exemple minimal de configuration pour activer SSH et restreindre l'accès sur un routeur Cisco :

ip domain-name example.com
username admin privilege 15 secret 0 VOTRE_MOT_DE_PASSE
crypto key generate rsa modulus 2048
line vty 0 4
 transport input ssh
 login local

Cette configuration active le transport SSH sur les lignes VTY, génère une clé RSA et utilise un compte local pour l'authentification — complétez avec ACL de gestion et SNMP sécurisé selon vos procédures.

Commandes essentielles

Liste des commandes de base pour travailler efficacement en ligne de commande : connexion, copie de fichiers, gestion et déploiement automatique des clés.

  1. ssh — établir une connexion distante et ouvrir un shell sécurisé.
  2. scp — copier des fichiers entre hôtes via SSH.
  3. sftp — client interactif pour transfert de fichiers sécurisés.
  4. ssh-keygen — générer des paires de clés publique/privée pour l'authentification.
  5. ssh-copy-id — copier automatiquement la clé publique vers le serveur distant pour autoriser l'accès sans mot de passe.

Dépannage et Débogage

Pour diagnostiquer les problèmes de connexion, utilisez les options de verbosité de ssh : ssh -v pour un premier niveau d'information, -vv ou -vvv pour des diagnostics plus détaillés. Vérifiez les permissions des répertoires et fichiers (~/.ssh, clés privées) ainsi que les logs côté serveur (ex. /var/log/auth.log ou journal systemd). Ces informations aident à identifier erreurs d'authentification, incompatibilités d'algorithmes ou problèmes de réseau.

Authentification des serveurs

Vérifier l'identité d'un serveur distant évite les attaques de type "man-in-the-middle". Au premier contact, le client SSH affichera souvent un message d'avertissement indiquant que « The authenticity of host '...' can't be established ». Il faut alors comparer l'empreinte affichée avec une empreinte fournie par un canal sûr (administrateur du serveur, documentation d'infrastructure, ou un gestionnaire de configuration).

Vérification de l'empreinte (Fingerprint)

L'empreinte numérique (fingerprint) est une représentation condensée de la clé publique du serveur. Accepter une clé sans vérification peut compromettre la sécurité. Vérifiez l'empreinte via un canal distinct et, si elle est correcte, validez-la ; la clé sera ajoutée au fichier local ~/.ssh/known_hosts. En cas de changement inattendu d'empreinte, contactez l'administrateur pour confirmer la rotation de clés avant d'accepter.

Sécuriser les équipements réseau avec SSH

Sur équipements réseau (routeurs, switchs), activez SSH pour remplacer les accès non chiffrés. Restreignez l'accès administratif aux adresses IP de gestion et créez des comptes avec mots de passe robustes ou clés publiques. Sur plateformes compatibles, générez des clés de l'équipement puis activez uniquement le transport SSH sur les lignes d'administration (VTY) pour limiter l'exposition.

Transfert de fichiers sécurisé : SCP et SFTP

Le document compare SCP et SFTP. SCP convient aux copies ponctuelles rapides ; SFTP propose un protocole interactif plus robuste (navigation à distance, gestion des permissions). Le texte détaille commandes, options courantes et bonnes pratiques pour sécuriser les transferts et protéger les clés privées.

Pourquoi choisir OpenSSH pour sécuriser vos serveurs ?

OpenSSH est largement adopté sur les serveurs Linux et macOS pour sa robustesse, sa compatibilité avec les standards et sa simplicité d'administration. Il propose un serveur (sshd), des outils de gestion des clés, des options fines de contrôle d'accès et le support natif du tunneling et du port forwarding. Le cours détaille la configuration minimale recommandée pour exposer un service SSH sur le port 22 tout en limitant les vecteurs d'attaque ; les paramètres critiques se trouvent dans sshd_config.

Sécurisation et bonnes pratiques (Hardening)

Changer le port par défaut

Modifier le port d'écoute par défaut (22) réduit le bruit des scans automatisés. L'obscurcissement n'est pas une protection suffisante : combinez ce changement avec d'autres contrôles d'accès.

Désactiver le login root

Interdire la connexion directe du compte root et forcer l'élévation via un compte utilisateur avec sudo limite les risques en cas de compromission d'identifiants.

Limiter les utilisateurs autorisés

Restreindre les accès via AllowUsers ou AllowGroups dans sshd_config et, si possible, filtrer les adresses IP autorisées pour l'administration.

Activer l'authentification par clé

Préférer l'authentification par clé publique and désactiver l'authentification par mot de passe lorsque le contexte le permet. Protégez les clés privées par une phrase de passe et un agent de gestion de clés.

Authentification à deux facteurs (2FA)

Compléter l'authentification par clé avec une seconde couche (TOTP via libpam-google-authenticator, tokens U2F/FIDO2 ou solution RADIUS) renforce la résistance aux compromissions de clé ou de mot de passe. Le document présente les options générales d'intégration PAM/RADIUS et les considérations opérationnelles (sauvegarde des codes, gestion des pertes de second facteur).

Pourquoi privilégier l'authentification par clé (Ed25519) ?

Les clés basées sur Ed25519 offrent un bon compromis sécurité/performance. Elles sont courtes, résistantes aux attaques connues et adaptées aux postes et serveurs contemporains. L'authentification par clé, associée à une passphrase et à un agent, fournit une authentification forte recommandée pour la plupart des usages débutants et intermédiaires.

SSH et la ligne de commande (CLI) pour l'administration

SSH est l'outil standard pour l'administration en CLI des serveurs distants. Édition de fichiers, gestion de services et déploiement s'effectuent via des sessions ssh ou des scripts. La CLI facilite l'intégration avec des outils d'automatisation (Ansible, scripts shell) et la création de tunnels pour sécuriser des flux — des pratiques indispensables pour l'administration système et le travail en shell à distance.

Utilisation de SSH dans un contexte de développement (Git/GitHub)

SSH est largement utilisé pour l'authentification auprès des services Git (GitHub, GitLab, Bitbucket). Générer une paire de clés et ajouter la clé publique à votre compte Git permet des push/pull sécurisés sans saisie répétée de mot de passe. L'agent (ssh-agent) stocke la clé privée en mémoire et facilite l'authentification lors des opérations Git depuis la CLI ou des pipelines d'intégration continue.

Gestion avancée des clés avec SSH-Agent

L'agent SSH (ssh-agent) permet de stocker une clé privée en mémoire pour éviter de retaper la passphrase à chaque connexion — utile pour un fonctionnement de type Single Sign-On local. Utilisez ssh-add pour charger une clé dans l'agent et démarrez l'agent dans le shell de session.

# Démarrer ssh-agent et ajouter une clé
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

L'agent améliore la commodité sans compromettre la sécurité, dès lors que l'accès au poste de travail est protégé.

Utilisation sur Machine Virtuelle

Pour se connecter à une VM (VirtualBox, VMware), activez un serveur SSH dans la VM (ex. openssh-server) et choisissez un mode réseau adapté : NAT avec redirection de port (mapper un port hôte vers le port 22 de la VM) ou réseau en bridge pour obtenir une adresse IP sur le même réseau que l'hôte. Assurez-vous que le pare-feu de la VM autorise le port SSH et que l'interface réseau de la VM est configurée pour l'accès distant.

Rédigé par Jacques-Emmanuel Dufresne, spécialiste réseaux & télécoms — ce document met l'accent sur des pratiques vérifiables, reproductibles et adaptées à l'administration distante et à la sécurité opérationnelle.