Guides SSH
Des réponses aux problèmes que l'on rencontre en travaillant sur des serveurs via SSH, avec des commandes à copier. Elles sont écrites pour OpenSSH et valent donc pour la plupart des clients.
Messages d'erreur
Ce que veut dire chaque message et comment le corriger.
- Tunnel SSH : « bind: Address already in use » et « remote port forwarding failed »
Corrigez bind Address already in use, channel_setup_fwd_listener et remote port forwarding failed : trouvez qui occupe le port et rendez l'échec visible.
- « channel 3: open failed: administratively prohibited: open failed »
channel open failed: administratively prohibited signifie que sshd ou authorized_keys interdit la redirection. Voir AllowTcpForwarding, PermitOpen, restrict.
- client_loop: send disconnect: Broken pipe : empêcher SSH de se couper
Corrigez « client_loop: send disconnect: Broken pipe » et « packet_write_wait » : ServerAliveInterval, délais NAT, et quand utiliser tmux à la place.
- Erreur SSH « ssh: connect to host port 22: Connection refused »
Sens de « ssh: connect to host port 22: Connection refused » et comment trouver la cause : sshd arrêté, mauvais port, adresse d'écoute ou règle de pare-feu.
- « kex_exchange_identification: read: Connection reset by peer »
kex_exchange_identification: Connection reset by peer ou Connection closed by remote host. Vérifiez pénalités, MaxStartups, TCP wrappers, pare-feu et tunnels.
- Erreur SSH « Operation timed out » ou « Connection timed out » sur le port 22
Pourquoi SSH affiche « Operation timed out » ou « Connection timed out » : pare-feu, groupes de sécurité, routage ou mauvaise adresse, et comment trouver.
- « Could not open a connection to your authentication agent » : résoudre l'erreur
Résoudre l'erreur Could not open a connection to your authentication agent : lancer ssh-agent avec eval, corriger SSH_AUTH_SOCK ou activer le service Windows.
- « ssh: Could not resolve hostname » : causes et solutions
Résoudre l'erreur ssh: Could not resolve hostname (nodename nor servname provided, Name or service not known) : faute de frappe, alias manquant, port ou DNS.
- Comment déboguer une connexion SSH
Déboguez SSH pas à pas : lisez ssh -v ligne par ligne, contrôlez les vrais réglages avec ssh -G et voyez les raisons du serveur avec sshd -d et sshd -T.
- "git@github.com: Permission denied (publickey)" : comment le corriger
Corrigez git@github.com: Permission denied (publickey) et Could not read from remote repository. Testez avec ssh -T, puis vérifiez la clé, l'agent et le compte.
- WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED ! Que faire
Ce que signifie "REMOTE HOST IDENTIFICATION HAS CHANGED" : réinstallation ou attaque, vérification de la nouvelle empreinte et ssh-keygen -R.
- "Host key verification failed" avec SSH, dans les scripts et en CI
Pourquoi SSH affiche Host key verification failed, comment distinguer un hôte inconnu d'une clé modifiée, et corriger sans risque dans un script, cron ou la CI.
- Load key: "invalid format" ou "error in libcrypto" avec SSH
Corriger Load key invalid format et error in libcrypto : fins de ligne, saut de ligne final absent, clé publique par erreur, fichier PPK ou secret de CI abîmé.
- Qu'est-ce que known_hosts, et comment vérifier l'empreinte d'un hôte SSH ?
Ce qu'est le fichier SSH known_hosts, son format, les entrées hachées, la vérification d'une empreinte d'hôte, avec ssh-keyscan, accept-new, UpdateHostKeys et SSHFP.
- SSH "no matching key exchange method found" ou "no matching host key type found" : comment résoudre l'erreur
Corriger "no matching key exchange method found", "no matching host key type found" et "no matching cipher found" pour un ancien hôte, via la config ssh.
- "sign_and_send_pubkey: no mutual signature supported" : comment résoudre l'erreur
sign_and_send_pubkey: no mutual signature supported signifie que votre clé RSA exige SHA-1 pour un vieux serveur. Vérifiez, puis corrigez sans risque pour cet hôte.
- "ssh: connect to host port 22: No route to host"
ssh: connect to host port 22: No route to host. Distinguer une machine éteinte d'une règle de pare-feu ou d'une route défaillante, avec une commande par cause.
- "Permission denied, please try again." alors que le mot de passe est bon
SSH affiche Permission denied, please try again. Vérifiez le mot de passe, le nom d'utilisateur, la connexion root, un compte verrouillé ou AllowUsers.
- "WARNING: connection is not using a post-quantum key exchange algorithm" : ce que cela signifie
OpenSSH 10.1 et suivants avertissent quand la connexion n'utilise pas d'échange de clés post-quantique. Ce que cela signifie, et comment le corriger.
- « Pseudo-terminal will not be allocated because stdin is not a terminal » : signification et solution
Pourquoi SSH affiche Pseudo-terminal will not be allocated because stdin is not a terminal, et quand utiliser -T, -t, -tt ou une commande pour l'éviter.
- SFTP : « subsystem request failed on channel 0 » et « Connection closed »
sftp ou scp affiche subsystem request failed on channel 0, puis Connection closed : le serveur n'a pas de ligne Subsystem sftp. Vérifier, corriger, contourner.
- Erreur SSH « Too many authentication failures » : comment la résoudre
Résoudre « Too many authentication failures » en SSH : votre agent propose trop de clés avant la bonne. Utilisez IdentitiesOnly et IdentityFile par hôte.
- « Error opening terminal » et « unknown terminal type » sous SSH : résoudre l'erreur
Résoudre Error opening terminal ou 'xterm-256color': unknown terminal type en SSH : copiez l'entrée terminfo sur le serveur ou choisissez un TERM courant.
- WARNING: UNPROTECTED PRIVATE KEY FILE : corriger les mauvaises permissions
Corrigez l'erreur SSH « UNPROTECTED PRIVATE KEY FILE » et « bad permissions » avec chmod 600, plus les vérifications côté serveur sur ~/.ssh et StrictModes.
Clés et connexion
Créer des clés, se connecter sans mot de passe et corriger les échecs de connexion.
- Le fichier authorized_keys expliqué
Le fichier SSH authorized_keys : format des lignes, options, permissions exigées par sshd, AuthorizedKeysFile et ligne retenue quand une clé apparaît deux fois.
- Convertir une clé .ppk en OpenSSH, et inversement
Convertissez une clé SSH .ppk en OpenSSH avec une seule commande, et une clé OpenSSH en .ppk. Les deux sens, phrases secrètes et PPK version 3.
- Comment désactiver la connexion par mot de passe pour SSH
Désactivez la connexion SSH par mot de passe sans vous enfermer dehors : fichiers drop-in qui écrasent sshd_config, KbdInteractive, UsePAM et sshd -T.
- Comment utiliser une YubiKey ou une clé FIDO2 avec SSH (ed25519-sk)
Créez une clé SSH ed25519-sk sur une YubiKey ou une clé FIDO2 : clés résidentes, verify-required, version de serveur requise et problème du ssh de macOS.
- Comment générer une clé SSH ed25519
Générez une clé SSH ed25519 avec ssh-keygen, ajoutez une phrase secrète, copiez la clé publique sur un serveur ou GitHub et testez la connexion. macOS, Linux.
- Comment ajouter une clé SSH à GitHub
Ajoutez une clé SSH à votre compte GitHub : générez-la, collez la clé publique dans les réglages, vérifiez l'empreinte avec ssh -T et passez un dépôt en SSH.
- Comment corriger "Permission denied (publickey)" avec SSH
Résoudre l'erreur SSH Permission denied (publickey) : voir quelle clé ssh -v propose, lire le journal du serveur, installer la clé ou corriger les droits.
- Comment retrouver une clé publique SSH à partir de la clé privée
Fichier .pub perdu ? Lancez ssh-keygen -y pour retrouver la clé publique depuis la clé privée, et vérifiez qu'un fichier .pub correspond bien à une clé privée.
- Clés SSH RSA ou ed25519 : laquelle choisir ?
ed25519 pour toute nouvelle clé SSH, RSA seulement si un système l'exige. Niveau de sécurité, tailles, compatibilité et accès aux vieux serveurs.
- Comment ajouter une clé SSH à ssh-agent et au Trousseau macOS
Ne retapez plus la phrase secrète de votre clé SSH sur Mac : UseKeychain, AddKeysToAgent, ssh-add --apple-use-keychain, IdentitiesOnly et le redémarrage.
- L'authentification par certificats SSH expliquée
Mettez en place des certificats SSH avec ssh-keygen -s : une CA, TrustedUserCAKeys, principals, validité, certificats d'hôte, @cert-authority et révocation.
- Comment utiliser les mêmes clés SSH sur plusieurs ordinateurs
SSH sur portable, fixe et téléphone : une clé par appareil dans authorized_keys, ou une clé copiée proprement. Commandes, risques et que faire en cas de perte.
Configuration et nombreux serveurs
Des connexions courtes à taper et faciles à garder en ordre.
- Comment importer sa config SSH dans un gestionnaire de config SSH
Préparer ~/.ssh/config à l'import : lister chaque hôte, fichiers Include compris, les vérifier avec ssh -G, les exporter en CSV et emporter clés et known_hosts.
- Comment gérer de nombreux serveurs SSH
Garder de nombreux serveurs SSH en ordre : nommage, motifs Host, Include par projet, une clé par usage, inventaire, known_hosts haché et quand passer à Ansible.
- Comment utiliser plusieurs comptes GitHub avec SSH
Utiliser deux comptes GitHub sur une machine : une clé chacun, alias Host dans ~/.ssh/config, IdentitiesOnly, et includeIf pour commiter avec la bonne adresse.
- Comment enregistrer les commandes fréquentes du terminal (snippets SSH)
Gardez vos commandes SSH : historique plus long, Ctrl-R avec étiquettes, alias et fonctions, RemoteCommand par hôte, et ce qu'il ne faut jamais garder.
- Le fichier de configuration SSH, avec des exemples
Comment fonctionne ~/.ssh/config, avec exemples : motifs Host, pourquoi la première valeur l'emporte, Include, Match et ssh -G pour voir les réglages réels.
- Multiplexage SSH avec ControlMaster et ControlPersist
Réutilisez une connexion SSH pour plusieurs sessions avec ControlMaster, ControlPath et ControlPersist. Vérifiez avec -O check, fermez avec -O exit.
Tunnels et hôtes de rebond
Atteindre en sécurité ce qui se trouve derrière un serveur.
- Garder un tunnel SSH actif avec autossh et systemd
Un tunnel SSH permanent avec autossh et une unité systemd (Restart=always, ServerAliveInterval, ExitOnForwardFailure), plus une clé dédiée et restreinte.
- Comment se connecter à PostgreSQL ou MySQL via un tunnel SSH
Joignez une base PostgreSQL ou MySQL privée via un tunnel SSH : commandes, ports, adresses d'écoute, contrôles TLS et utilisateur limité avec PermitOpen.
- Jump host ou bastion : quelle différence ?
Jump host ou bastion : ce que veut dire chaque terme, comment ProxyJump et ProxyCommand passent par eux, et ce qui fait d'un serveur de rebond un vrai bastion.
- Comment utiliser ProxyJump et un hôte de rebond avec SSH
Atteindre des serveurs privés via un hôte de rebond avec ssh -J et ProxyJump : plusieurs sauts, plus sûr que la redirection d'agent, et ProxyCommand.
- Comment créer un tunnel SSH inverse derrière un NAT
Joignez une machine derrière un NAT en lançant ssh -R vers un serveur à adresse publique. Exemples testés, GatewayPorts et comment garder le tunnel privé.
- Comment configurer un bastion SSH
Configurez un bastion SSH qui ne redirige que vers les serveurs choisis : Match, AllowTcpForwarding, PermitOpen et ForceCommand, puis ProxyJump et journaux.
- Comment utiliser SSH comme proxy SOCKS
Transformez un serveur SSH en proxy SOCKS avec ssh -D 1080. Testez avec curl, configurez un navigateur, gardez le DNS hors de votre réseau local et le port privé.
- Gérer ses tunnels SSH : enregistrer, démarrer et arrêter les redirections
Enregistrez vos tunnels SSH dans ~/.ssh/config avec LocalForward, RemoteForward et DynamicForward, lancez-les avec ssh -f -N, arrêtez-les avec ssh -O exit.
- Tunnels SSH expliqués : redirection de port locale, distante et dynamique
La redirection de port SSH avec des exemples testés : tunnels local -L, distant -R et dynamique -D, plusieurs ports, rebond, ssh config, GatewayPorts et erreurs.
- Comment se connecter en SSH à un serveur sans IP publique ou derrière un CGNAT
Quatre façons d'atteindre une machine sans IPv4 publique ou derrière un CGNAT : VPN ou réseau overlay, tunnel inverse, IPv6 et redirection de port du routeur.
Sécuriser un serveur
Réduire ce qu'un attaquant peut tenter et ce qu'une erreur peut casser.
- Les risques de l'agent forwarding SSH, et quoi utiliser à la place
Ce qu'expose vraiment ssh -A : root sur l'hôte distant peut utiliser votre socket d'agent pendant la connexion. ProxyJump et ssh-add -c réduisent le risque.
- Comment éviter de lancer des commandes sur le mauvais serveur
Rendez la production reconnaissable : prompt rouge, barre d'état tmux, couleur du terminal. Plus garde-fous pour rm, dry run et collage protégé.
- Changer le port SSH sans se bloquer l'accès
Changez le port SSH dans le bon ordre : pare-feu, SELinux, sshd_config, ssh.socket sur Ubuntu récent, test avant de fermer le port 22. Et ce que cela protège.
- Comment voir les tentatives de connexion SSH sous Linux
Voyez les connexions SSH réussies et échouées avec journalctl, auth.log, /var/log/secure, last, lastb et who. Sens de chaque ligne et lesquelles inquiètent.
- Comment désactiver la connexion root par SSH
Mettez PermitRootLogin no sans vous enfermer dehors : ce que fait chaque valeur, pourquoi un drop-in peut écraser votre changement, et sshd -T.
- Comment configurer fail2ban pour SSH
Configurez fail2ban pour SSH : jail.local, la jail sshd, bantime, findtime, maxretry, le backend systemd, l'état des bannissements et le débannissement.
- Comment durcir sshd_config : une checklist testable
Durcissez sshd_config pas à pas : connexion root, mots de passe, AllowUsers, redirections, algorithmes, avec sshd -t et sshd -T contre le blocage.
- Comment éviter un rm -rf accidentel sur un serveur Linux
Protéger un serveur Linux d'un rm -rf accidentel : rm -I et --preserve-root=all, safe-rm, garde-fous dans les scripts, chattr +i, corbeille, snapshots.
- Comment restreindre une clé SSH à une commande ou à une adresse
Limitez une clé SSH avec restrict, command=, from= et permitopen= dans authorized_keys. Avec SSH_ORIGINAL_COMMAND, un script d'aiguillage et les failles trouvées.
- Comment révoquer une clé SSH quand quelqu'un quitte l'équipe
Retrouvez par son empreinte la clé SSH d'un collaborateur sortant, supprimez-la, bloquez-la avec RevokedKeys et une KRL, fermez les sessions ouvertes.
- Comment partager un accès SSH sans partager sa clé privée
Donner un accès SSH à vos collègues : une clé ou un compte par personne, expiration, certificats courts, retrait propre et partage de terminal avec tmux.
- Comment ajouter l'authentification à deux facteurs à SSH avec TOTP
Exigez une clé SSH plus un code TOTP avec libpam-google-authenticator et AuthenticationMethods sur Debian ou Ubuntu, et gardez une porte de secours en cas d'erreur.
- Comment utiliser sudo via SSH sans divulguer votre mot de passe
Un mot de passe saisi à l'invite sudo avec ssh -t est chiffré. Ce qui fuit, c'est echo pass | sudo -S. Utiliser sudo à distance en sécurité : NOPASSWD, visudo.
- Comment autoriser SSH dans ufw sans vous enfermer dehors
Autorisez SSH dans ufw avant de l'activer : allow, limit, port personnalisé, une seule IP, et un filet de sécurité temporisé pour ne pas vous couper du serveur.
SSH sur chaque système
Activer et configurer SSH sur votre système.
- Comment créer un utilisateur avec accès SSH et sudo
Créez un utilisateur Linux qui se connecte par clé et utilise sudo : adduser, le groupe sudo ou wheel, et les permissions exactes de .ssh et authorized_keys.
- Comment activer SSH sur un Mac
Activez la session à distance sur macOS dans Réglages Système ou avec systemsetup, limitez les utilisateurs autorisés et corrigez l'erreur d'accès au disque.
- Comment activer SSH sur un Raspberry Pi
Activez SSH sur un Raspberry Pi avec Imager, raspi-config, le bureau ou un fichier sur la carte SD, sans écran, puis trouvez l'adresse du Pi.
- Comment activer SSH sur Ubuntu
Installez openssh-server sur Ubuntu, démarrez-le, ouvrez le pare-feu et testez la connexion. Pourquoi ssh.service peut sembler inactif alors que SSH marche.
- Comment générer une clé SSH sous Windows
Générez une clé SSH sous Windows avec ssh-keygen dans PowerShell, démarrez le service ssh-agent pour ne saisir la phrase secrète qu'une fois et copiez la clé.
- Comment installer OpenSSH Server sur Windows 11
Installer OpenSSH Server sur Windows 11 avec PowerShell : Add-WindowsCapability, le service sshd, la règle de pare-feu et administrators_authorized_keys.
- Console série sur Mac avec screen et /dev/tty.usbserial
Console série sur Mac : trouver le port /dev/cu.usbserial, se connecter avec screen ou cu à la bonne vitesse, régler parité et flux, quitter screen.
- ssh-copy-id sous Windows : la commande PowerShell qui fonctionne
OpenSSH pour Windows n'a pas de ssh-copy-id. Cette ligne PowerShell fait le même travail pour les serveurs Linux, plus une méthode pour les serveurs Windows.
- Comment se connecter en SSH à un conteneur Docker
Ouvrir un shell dans un conteneur Docker avec docker exec, en local ou sur un hôte distant via SSH. Résoudre les erreurs courantes, et quand utiliser sshd.
- telnet: command not found sur Mac ? Utiliser Telnet sous macOS
Pourquoi macOS n'a plus la commande telnet, tester un port avec nc, installer telnet avec Homebrew, et quand les switchs et routeurs en ont encore besoin.
Sessions et tmux
Garder votre travail en vie et maîtriser vos sessions.
- Comment garder une session SSH active après une déconnexion avec tmux
Lancez tmux sur le serveur et votre travail survit à une coupure SSH. Créer, détacher, rattacher et fermer les sessions, plus les alternatives nohup et systemd-run.
- Mosh ou SSH : quelle différence ?
Mosh garde un terminal actif quand le réseau change, sur les ports UDP 60000 à 61000. Ce qui le distingue de SSH, comment l'installer, et ce qu'il ne sait pas faire.
- Comment exécuter une commande sur plusieurs serveurs en SSH
Lancer une commande sur de nombreux serveurs en SSH : boucle, xargs et GNU parallel, parallel-ssh, synchronize-panes de tmux, et un déploiement prudent.
- Comment exécuter une commande via SSH
Lancez des commandes distantes avec ssh user@server 'commande'. Guillemets, heredoc, codes de sortie, pourquoi ssh dans une boucle while s'arrête, -n et -t.
- Comment tuer une session SSH bloquée : les séquences d'échappement
Appuyez sur Entrée, puis ~ et . pour fermer une session SSH bloquée. Toutes les séquences d'échappement, ~C, ~^Z, sessions imbriquées, caractère d'échappement.
- Comment enregistrer une session SSH sous Linux
Enregistrer et rejouer une session SSH : script, scriptreplay, asciinema, tlog sur le serveur et journaux sudo. Et garder les mots de passe hors des fichiers.
- Aide-mémoire tmux : commandes et raccourcis
Les commandes et raccourcis tmux utiles : sessions, fenêtres, panneaux, mode copie, scripts et config. Vérifié sur tmux 3.5a, raccourcis par défaut.
- tmux ou screen : quelle différence
tmux et GNU screen gardent tous deux vos sessions de terminal actives après la déconnexion. Comparaison côte à côte : raccourcis, panneaux, scripts et port série.
- Comment utiliser le X11 forwarding (redirection X11) via SSH
X11 forwarding via SSH : lancez des programmes graphiques Linux avec ssh -X. Différence entre -X et -Y, prérequis serveur, XQuartz sur Mac, erreurs et risques.
SFTP et transfert de fichiers
Déplacer des fichiers via SSH.
- Comment modifier des fichiers distants en SSH
Modifier un fichier sur un serveur en SSH : nano ou vim dans la session, sudoedit, scp aller-retour, vim scp://, sshfs ou un éditeur avec un mode distant.
- Comment utiliser rsync via SSH
Synchronisez des dossiers avec rsync via SSH : -avz, la règle de la barre oblique finale, un port avec -e, la reprise avec --partial, --dry-run avant --delete.
- Exemples scp : copier des fichiers et des dossiers via SSH
Exemples scp testés : envoi, téléchargement, dossier avec -r, autre port avec -P, copie entre deux serveurs avec -3, et quand il faut l'option héritée -O.
- scp, SFTP ou rsync : lequel choisir
scp pour une copie rapide, SFTP pour parcourir ou reprendre, rsync pour synchroniser des dossiers en n'envoyant que les changements. Exemples et barre finale.
- Commandes sftp : get, put, ls, lcd et mode batch
Les commandes sftp utiles, testées : connexion, get, put, ls, lcd, reprise avec reget, et transferts scriptés en mode batch -b, qui exige une connexion par clé.
- Comment monter un dossier distant via SSH avec sshfs
Montez un dossier de serveur comme un dossier local avec sshfs : montage et démontage, option reconnect, que faire en cas de coupure, et macFUSE sur Mac.
SSH depuis un téléphone
Ce qu'il faut pour travailler sur un serveur depuis son téléphone.
- Comment transférer des fichiers vers un serveur en SFTP depuis un iPhone
L'app Fichiers de l'iPhone ne fait pas de SFTP. Quoi chercher dans une app, ce que le serveur doit offrir et comment créer un utilisateur sftp seul avec chroot.
- Comment se connecter en SSH depuis un téléphone Android
Ce qu'il faut pour faire du SSH depuis Android : juger un client, les clés sur le téléphone, pourquoi les sessions meurent en arrière-plan, et OpenSSH sur le mobile.
- Comment se connecter en SSH depuis un iPhone
Ce qu'il faut pour utiliser SSH depuis un iPhone : un serveur joignable, une clé propre au téléphone et tmux, car iOS suspend les apps et coupe la connexion.
Vaults chiffrés
Comment fonctionne le chiffrement et ce qu'il protège.
- Argon2id expliqué : ce que signifient m, t et p et quoi choisir
Argon2id fait payer de la mémoire à chaque essai de mot de passe. Sens de m, t et p, valeurs RFC 9106 et OWASP, avantage sur PBKDF2 face aux GPU, avec exemples.
- Que veut dire chiffré de bout en bout pour un coffre-fort de mots de passe ?
Chiffré de bout en bout : votre appareil chiffre le coffre-fort de mots de passe avec des clés que le serveur n'a pas. Ce que le serveur voit, et quoi demander.
- Gestionnaire de mots de passe SSH : stocker ses mots de passe SSH en sécurité
Où garder ses mots de passe SSH : les clés d'abord, les risques de sshpass -p, le trousseau macOS et secret-tool pour le reste, et ce que doit faire un gestionnaire.