ssh est la porte d’entrée de tout serveur Linux en production. La connexion basique ssh user@host suffit pour commencer, mais dès que vous gérez plusieurs serveurs, plusieurs clés ou un bastion, la configuration du client devient indispensable. Ce guide couvre tout : de la première connexion jusqu’aux techniques utilisées à l’examen LFCS et RHCSA.
C’est un objectif direct LFCS (domaine Networking — “Configure the OpenSSH server and client”) et RHCSA (domaine Manage Security — “Configure key-based authentication for SSH”).
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Établir une connexion SSH de base avec utilisateur, port et clé
- Créer et utiliser un fichier
~/.ssh/configavec des alias de connexion - Rebondir sur un serveur via un bastion avec
ProxyJump - Accélérer les reconnexions avec ControlMaster
- Diagnostiquer une connexion qui échoue avec
-v/-vvv - Gérer les empreintes avec
known_hostset éviter les faux positifs MitM
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »| Situation | Technique |
|---|---|
| Se connecter à 10 serveurs avec des ports et clés différents | ~/.ssh/config avec aliases |
| Atteindre un serveur interne via un bastion public | ProxyJump |
| Exécuter des scripts Ansible ou rsync sans saisir de mot de passe | clé SSH + ssh-agent |
| Connexions répétées lors d’un déploiement | ControlMaster (multiplexage) |
| Connexion refusée après rebuild d’une VM | nettoyer known_hosts |
| Déboguer un refus d’authentification | ssh -vvv user@host |
Connexion de base
Section intitulée « Connexion de base »Forme minimale
Section intitulée « Forme minimale »ssh bob@192.168.1.10SSH se connecte sur le port 22 avec l’utilisateur bob. Si aucune clé n’est trouvée, il demande le mot de passe.
Options courantes à la volée
Section intitulée « Options courantes à la volée »# Port non standardssh -p 2222 bob@192.168.1.10
# Clé privée spécifiquessh -i ~/.ssh/id_ed25519_backup bob@backup.example.com
# Mode verbose (debug léger)ssh -v bob@192.168.1.10Vérifier que la connexion est établie :
# Sur le serveur distant après connexionwhoamihostnameuptimeAccepter l’empreinte du serveur
Section intitulée « Accepter l’empreinte du serveur »Au premier contact, SSH affiche l’empreinte du serveur :
The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.ED25519 key fingerprint is SHA256:xxxx...Are you sure you want to continue connecting (yes/no/[fingerprint])?Tapez yes pour mémoriser l’empreinte dans ~/.ssh/known_hosts. SSH refusera la connexion si l’empreinte change à l’avenir — c’est intentionnel (protection MitM).
Configurer ~/.ssh/config
Section intitulée « Configurer ~/.ssh/config »Le fichier ~/.ssh/config permet de définir des alias de connexion avec tous leurs paramètres. C’est la façon propre de gérer plusieurs serveurs.
Structure de base
Section intitulée « Structure de base »Host webserver HostName 192.168.1.20 User deploy Port 2222 IdentityFile ~/.ssh/id_ed25519_deploy
Host db HostName 10.0.1.5 User dbadmin IdentityFile ~/.ssh/id_ed25519_dbAvec cette config, ssh webserver est équivalent à ssh -p 2222 -i ~/.ssh/id_ed25519_deploy deploy@192.168.1.20.
Configuration globale avec Host *
Section intitulée « Configuration globale avec Host * »Host * ServerAliveInterval 60 ServerAliveCountMax 3 Compression yes IdentityFile ~/.ssh/id_ed25519ServerAliveInterval 60 envoie un keepalive toutes les 60 s — évite les déconnexions sur les sessions inactives. Ces options s’appliquent à tous les hôtes, sauf surcharge par un bloc Host spécifique.
Principales directives
Section intitulée « Principales directives »| Directive | Rôle |
|---|---|
Host | Alias de connexion |
HostName | Adresse réelle ou FQDN |
User | Utilisateur distant |
Port | Port SSH (défaut : 22) |
IdentityFile | Chemin de la clé privée |
ServerAliveInterval | Keepalive (secondes) |
ServerAliveCountMax | Tentatives avant coupure |
Compression | Compression des données |
ForwardAgent | Transfert de l’agent SSH |
StrictHostKeyChecking | Vérification d’empreinte |
ProxyJump | Rebond via bastion |
ControlMaster | Multiplexage de connexion |
ControlPath | Socket du multiplexage |
ControlPersist | Durée de vie du master |
ProxyJump — rebondir via un bastion
Section intitulée « ProxyJump — rebondir via un bastion »Dans une architecture typique, les serveurs internes ne sont pas accessibles directement depuis Internet. On passe par un bastion (aussi appelé jump host).
[Workstation] → [bastion:22] → [internal-server:22]Configuration dans ~/.ssh/config
Section intitulée « Configuration dans ~/.ssh/config »Host bastion HostName bastion.example.com User jumpuser IdentityFile ~/.ssh/id_ed25519
Host internal HostName 10.0.1.50 User admin ProxyJump bastion IdentityFile ~/.ssh/id_ed25519# Connexion directe au serveur internessh internalSSH établit d’abord la connexion au bastion, puis rebondit automatiquement vers internal. Vous n’avez pas besoin de copier votre clé sur le bastion — le ForwardAgent yes n’est pas nécessaire avec ProxyJump.
En one-liner (sans fichier config)
Section intitulée « En one-liner (sans fichier config) »ssh -J jumpuser@bastion.example.com admin@10.0.1.50ProxyJump en chaîne (multi-sauts)
Section intitulée « ProxyJump en chaîne (multi-sauts) »Host deep-server HostName 10.1.2.3 User admin ProxyJump bastion,intermediateControlMaster — multiplexer les connexions
Section intitulée « ControlMaster — multiplexer les connexions »Lors d’un déploiement ou d’une série de commandes, SSH établit une nouvelle connexion TCP + authentification à chaque appel. ControlMaster permet de réutiliser une connexion existante — la première connexion crée un socket, les suivantes l’empruntent.
Host *.example.com ControlMaster auto ControlPath ~/.ssh/cm-%r@%h:%p ControlPersist 10mControlMaster auto: utilise une connexion existante si possible, en crée une sinonControlPath: chemin du socket Unix (utilise des variables%ruser,%hhost,%pport)ControlPersist 10m: le socket reste ouvert 10 min après la dernière session
Résultat : rsync, scp ou ansible sur le même hôte sont quasi-instantanés après la première connexion.
Gérer known_hosts
Section intitulée « Gérer known_hosts »Avertissement MitM après rebuild d’une VM
Section intitulée « Avertissement MitM après rebuild d’une VM »Quand une VM est reconstruite ou une IP réaffectée, la clé d’hôte change. SSH affiche :
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Supprimer l’ancienne entrée :
ssh-keygen -R 192.168.1.10# oussh-keygen -R hostname.example.comSSH demande ensuite de confirmer la nouvelle empreinte au prochain ssh.
Ajouter une empreinte sans se connecter
Section intitulée « Ajouter une empreinte sans se connecter »ssh-keyscan -H 192.168.1.10 >> ~/.ssh/known_hostsUtile dans les scripts d’automatisation pour pré-peupler known_hosts avant le premier ssh.
Désactiver la vérification (environnements éphémères uniquement)
Section intitulée « Désactiver la vérification (environnements éphémères uniquement) »Host 192.168.122.* StrictHostKeyChecking no UserKnownHostsFile /dev/nullDiagnostiquer une connexion
Section intitulée « Diagnostiquer une connexion »Niveau de verbosité -v
Section intitulée « Niveau de verbosité -v »ssh -v bob@192.168.1.10 # debug de basessh -vv bob@192.168.1.10 # détail du handshakessh -vvv bob@192.168.1.10 # tout (trop verbeux sauf cas extrême)Les premières lignes à regarder :
debug1: Reading configuration data ~/.ssh/configdebug1: Connecting to 192.168.1.10 [192.168.1.10] port 22.debug1: Connection established.debug1: Authenticating to 192.168.1.10:22 as 'bob'debug1: Trying private key: ~/.ssh/id_ed25519debug1: Authentication succeeded (publickey).Si Authentication succeeded n’apparaît pas → problème de clé ou d’authorized_keys côté serveur.
Vérifier les permissions côté client
Section intitulée « Vérifier les permissions côté client »Les permissions incorrectes sur ~/.ssh/ font silencieusement échouer l’authentification par clé :
chmod 700 ~/.sshchmod 600 ~/.ssh/id_ed25519chmod 644 ~/.ssh/id_ed25519.pubchmod 600 ~/.ssh/authorized_keyschmod 644 ~/.ssh/known_hostschmod 600 ~/.ssh/configLire les logs côté serveur
Section intitulée « Lire les logs côté serveur »# Sur le serveur distantsudo journalctl -u ssh -n 50# ou sur RHEL/Fedorasudo journalctl -u sshd -n 50
# Rechercher les refussudo grep "Failed\|refused\|Invalid" /var/log/auth.logTableau de dépannage
Section intitulée « Tableau de dépannage »| Symptôme | Cause probable | Action |
|---|---|---|
Connection refused | Port 22 fermé ou sshd arrêté | sudo systemctl status ssh côté serveur |
Permission denied (publickey) | Mauvaise clé ou authorized_keys absent/corrompu | Vérifier avec -v, corriger les permissions |
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED | VM reconstruite, IP réaffectée | ssh-keygen -R <ip> |
Host key verification failed | Empreinte inconnue en mode strict | Vérifier avant d’accepter, ou ssh-keyscan |
| Timeout sans message | Firewall bloque le port 22 | nc -zv <host> 22 ou telnet <host> 22 |
| Connexion coupée après inactivité | Pas de keepalive | Ajouter ServerAliveInterval 60 dans la config |
À retenir
Section intitulée « À retenir »~/.ssh/configcentralise les paramètres de connexion pour tous vos serveurs — c’est la façon professionnelle de gérer l’accès distantProxyJumpremplace les anciennes configurations-A+ bastion manuel — plus simple, plus sûrControlMasterest indispensable pour les outils comme Ansible ou rsync qui multiplient les connexionsssh -vest la première commande à lancer quand une connexion échoue- Les permissions sur
~/.ssh/ne sont pas optionnelles — SSH refuse silencieusement si elles sont incorrectes
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications