Cette antisèche des commandes SSH saute l'histoire du protocole et vous donne les lignes que vous tapez vraiment, les plus utilisées en premier. Connectez-vous avec ssh user@host, ajoutez -p 2222 quand le serveur a quitté le port 22, générez une clé moderne avec ssh-keygen -t ed25519, envoyez-la sur une machine avec ssh-copy-id, et copiez des fichiers avec scp. Les options de tunnel (-L, -D, -R) sont réelles et valent le coup, et elles arrêtent de ressembler à de la magie quand on se souvient que SSH fait deux boulots : il vous connecte, et il peut pousser du trafic dans ce même tuyau chiffré. Un court bloc ~/.ssh/config réduit ensuite les longues commandes à un nom que vous choisissez.
The short answer
Connectez-vous avec ssh user@host, ajoutez -p 2222 si le serveur a déplacé SSH hors du port 22.
Créez une clé avec ssh-keygen -t ed25519 -C "vous@machine", puis envoyez-la avec
ssh-copy-id user@host au lieu de la coller à la main. Copiez un fichier avec
scp file user@host:/path/, ou scp -r dir user@host:/path/ pour un dossier.
Un bloc ~/.ssh/config transforme ssh user@1.2.3.4 -p 2222 -i key en ssh monserveur.
Vous voulez entrer sur une machine. Voilà, c'est tout, et pourtant la moitié des guides SSH commencent par un cours d'histoire sur le protocole. On saute. La commande qu'il vous faut, c'est ssh user@host, et c'est la toute première ci-dessous. Se connecter, générer une clé, copier cette clé, déplacer un fichier. Ces quatre-là couvrent l'essentiel des journées. Les tunnels chic, c'est réel et je m'en sers, mais ce n'est pas pour ça que vous avez ouvert cette page.
Un truc à dire d'entrée. SSH fait deux boulots qui ressemblent à un seul : il vous connecte, et il peut pousser n'importe quel trafic réseau dans ce même tuyau chiffré. Gardez ces deux idées séparées dans votre tête et les options bizarres (le -L, le -D) arrêtent de ressembler à de la magie.
Se connecter à un serveur
Le cas de base est court et il ne change quasiment jamais. ssh user@host, où user est votre compte en face et host un nom ou une IP. À la première connexion, SSH vous montre une empreinte et demande si vous lui faites confiance. Vous tapez yes une fois, il s'en souvient, et il vous préviendra haut et fort si cette empreinte change un jour (c'est tout l'intérêt, cet avertissement est une fonctionnalité, pas un caprice).
| Commande | Ce que ça fait |
|---|---|
ssh user@host | Se connecter en tant que user sur host, sur le port 22 par défaut |
ssh -p 2222 user@host | Pareil, mais le serveur écoute SSH sur un port non standard (ici 2222) |
ssh user@host "uptime" | Lancer une seule commande à distance et revenir aussitôt, sans shell |
ssh -i ~/.ssh/key user@host | Forcer une clé précise au lieu de celle chargée par défaut |
Ce -p piège les gens parce que scp utilise un -P majuscule pour la même idée, et les confondre est un passage obligé. Minuscule pour ssh, majuscule pour scp. Je me suis trompé là-dessus plus souvent que je ne voudrais l'admettre.
Générer une clé SSH
Les mots de passe pour SSH, c'est une habitude à lâcher. Une paire de clés est plus solide et, une fois en place, plus rapide : pas de saisie de mot de passe, vous atterrissez direct. On en génère une avec ssh-keygen. Le -t choisit l'algorithme et le -C ajoute un commentaire pour que le vous du futur sache quelle clé est laquelle.
| Commande | Ce que ça fait |
|---|---|
ssh-keygen -t ed25519 -C "vous@machine" | Générer une paire de clés ed25519 moderne, avec un commentaire pour l'étiqueter |
ssh-keygen -t ed25519 | Pareil sans le commentaire, acceptez le chemin par défaut et c'est fait |
Ça écrit deux fichiers : ~/.ssh/id_ed25519 (votre clé privée, gardez-la comme un mot de passe) et ~/.ssh/id_ed25519.pub (la moitié publique, celle que vous distribuez). Quand il demande une phrase de passe, mettez-en une. Une clé privée sans phrase de passe qui fuite, c'est juste un mot de passe qui traîne dans un fichier, et vous ne remarquerez sa disparition que bien trop tard.
Mon avis : en 2026, ed25519, pas RSA. Pendant des années le défaut était rsa, souvent en 2048 ou 4096 bits, et ça marche encore très bien. Mais les clés ed25519 sont minuscules, rapides, et la sécurité est excellente, donc choisir -t ed25519 pour une nouvelle clé est simplement le meilleur défaut aujourd'hui. Le seul moment où je reviens à -t rsa -b 4096, c'est un vieil équipement antique ou un serveur figé qui ne sait vraiment pas parler ed25519, et c'est assez rare pour que je traite ça comme l'exception, pas la règle. Franchement, si vos clés RSA tournent aujourd'hui, il n'y a pas le feu, pas besoin de tout faire tourner cette nuit. Faites juste les nouvelles clés en ed25519 et laissez les vieilles s'éteindre toutes seules.
Copier sa clé sur un serveur
En voilà une qui m'agace. Tant de gens génèrent une clé, puis se connectent en SSH avec leur mot de passe, puis ouvrent ~/.ssh/authorized_keys dans vi et collent la clé publique à la main, en se battant avec l'indentation, en espérant ne pas avoir ajouté un retour à la ligne de trop. Il y a une commande exactement pour ça. C'est ssh-copy-id, et elle fait toute la danse à votre place.
| Commande | Ce que ça fait |
|---|---|
ssh-copy-id user@host | Installer votre clé publique dans le authorized_keys du serveur |
ssh-copy-id -i ~/.ssh/key.pub user@host | Pareil, mais en poussant une clé publique précise |
ssh-copy-id -p 2222 user@host | Pareil sur un serveur qui écoute sur un port non standard |
On vous demandera votre mot de passe cette dernière fois. Après ça, l'authentification par clé prend le relais et la demande de mot de passe disparaît. Si la commande n'est pas sur votre machine (elle manque sur macOS d'origine et quelques installs minimales), le chemin manuel marche toujours : cat ~/.ssh/id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys". Même résultat, plus de frappe.
Copier des fichiers avec scp
Besoin d'un fichier sur l'autre machine, ou d'en récupérer un ? scp, c'est la copie de fichiers de SSH. Le modèle mental, c'est le bon vieux cp, sauf qu'un côté porte un préfixe user@host: pour dire « ce chemin-là est là-bas ». Les deux-points font tout le travail. Oubliez-les et vous fabriquez juste une copie locale au nom déroutant.
| Commande | Ce que ça fait |
|---|---|
scp file user@host:/path/ | Envoyer un fichier local vers /path/ sur le serveur distant |
scp -r dir user@host:/path/ | Envoyer un dossier entier (le -r descend, comme avec cp) |
scp user@host:/path/file . | Récupérer un fichier distant dans votre dossier courant |
scp -P 2222 file user@host:/path/ | Copier vers un serveur sur un port non standard (-P majuscule, souvenez-vous) |
Pour un fichier ponctuel, scp est parfait et je ne vais pas vous en dissuader. Pour synchroniser à répétition une grosse arborescence, rsync par-dessus SSH est plus malin parce qu'il n'envoie que ce qui a changé, mais c'est une autre page. Copie rapide, vous prenez scp.
Tunnels : rediriger un port, ou tout un proxy
C'est là que le deuxième boulot de SSH (faire transiter du trafic) gagne sa place. Vous pouvez router un port à travers la connexion chiffrée pour qu'un service d'une machine apparaisse comme tournant sur une autre. Trois parfums, et les lettres prêtent vraiment à confusion, donc ici le tableau compte plus que d'habitude.
| Commande | Ce que ça fait |
|---|---|
ssh -L 8080:localhost:80 user@host | Redirection locale : votre localhost:8080 atteint le port 80 du serveur (ou de son réseau) |
ssh -D 1080 user@host | Proxy SOCKS : pointez un navigateur sur localhost:1080 et il sort par le serveur distant |
ssh -R 9000:localhost:3000 user@host | Redirection distante : le port 9000 du serveur atteint le port 3000 de votre machine |
La redirection locale (-L), c'est celle de tous les jours. Une base qui n'écoute que sur la loopback du serveur ? ssh -L 5432:localhost:5432 user@host et voilà votre 5432 local qui lui parle, à travers SSH, sans ouvrir le moindre trou dans le pare-feu. Le proxy SOCKS (-D), c'est l'option du génie fainéant : une option et tout votre navigateur sort par le serveur distant, pratique sur un wifi de café douteux. La redirection distante (-R) retourne le cerveau parce qu'elle marche à l'envers, en exposant un truc de votre portable côté serveur. Si garder -L et -R au clair vous fait loucher, un générateur de commande de tunnel SSH construit la ligne exacte et indique quel bout est lequel.
Le fichier ~/.ssh/config (la vraie amélioration)
Si vous ne retenez qu'une chose de cette page, retenez celle-ci. Taper ssh -i ~/.ssh/work_key -p 2222 deploy@203.0.113.10 dix fois par jour, c'est un impôt que vous n'êtes pas obligé de payer. Posez un bloc dans ~/.ssh/config et tout ça s'effondre en un nom que vous choisissez.
| Bloc ~/.ssh/config | Ce que ça fait |
|---|---|
Host monserveur | L'alias que vous taperez : ssh monserveur |
HostName 203.0.113.10 | La vraie adresse à composer |
User deploy | Le compte, pour zapper le user@ |
Port 2222 | Le port, pour zapper le -p |
IdentityFile ~/.ssh/work_key | La clé, pour zapper le -i |
Après ça, ssh monserveur est la commande complète. scp file.txt monserveur:/tmp/ aussi, parce que scp lit le même fichier de config. C'est le plus gros gain de confort de toute cette liste, et il faut environ une minute pour configurer le premier hôte. J'en garde une douzaine dans le mien et je ne me souviens quasiment plus des vraies IP, ce qui est un peu le but.
Agent forwarding et débogage
Deux de plus qui méritent leur place. L'une est une commodité avec un bord coupant, l'autre est comment vous comprenez pourquoi une connexion meurt.
| Commande | Ce que ça fait |
|---|---|
ssh -A user@host | Agent forwarding : permet de rebondir du serveur vers une troisième machine avec votre clé locale (lisez la mise en garde plus bas) |
ssh -v user@host | Verbeux : affiche chaque étape de la poignée de main pour voir où ça casse |
ssh -vvv user@host | Encore plus bavard, trois niveaux de profondeur, pour les échecs vraiment têtus |
À propos de -A : l'agent forwarding est délicieux quand vous faites du SSH vers un rebond et devez aller plus loin sans trimballer de clés privées. Pratique, oui. Mais voici la mise en garde, et elle est réelle : tant que vous êtes connecté, quiconque a les droits root sur cet hôte peut discrètement utiliser votre agent transféré pour s'authentifier en votre nom partout où votre clé ouvre. Sur une machine de pleine confiance, d'accord. Sur un hôte partagé ou non fiable, ne transférez pas votre agent ; utilisez plutôt ProxyJump, qui n'expose pas vos clés à la machine intermédiaire. Et -v, c'est la première chose à essayer quand SSH refuse de se connecter ou rejette silencieusement votre clé. Il montrera les clés proposées, les méthodes d'authentification autorisées par le serveur, exactement où la négociation a déraillé. Neuf fois sur dix la réponse est là, dans la sortie, en général un problème de permissions sur ~/.ssh.
Et après
Voilà le jeu de travail. Se connecter, les clés, ssh-copy-id, scp, les trois types de tunnels, l'alias de config, l'agent forwarding, et -v pour quand tout part de travers. Ça couvre vraiment l'essentiel de ce que je fais avec SSH dans une semaine normale, plus le truc rare que je cherche comme tout le monde. Une fois installé dans le shell, la même habitude copier-plutôt-que-mémoriser paie ailleurs, que vous fouilliez les connexions et les interfaces, que vous cherchiez des fichiers par nom ou par taille avant de les scp, ou que vous projetiez les mêmes idées sur Windows et cmd.
Questions fréquentes
Comment se connecter à un serveur en SSH ?
Lancez ssh user@host, où user est votre compte sur la machine distante et host son nom ou son IP. La première fois, SSH affiche une empreinte et vous demande de confirmer que vous faites confiance à la machine. Tapez yes et il s'en souvient. Si le serveur écoute SSH sur un port non standard, ajoutez -p suivi du numéro de port, comme ssh -p 2222 user@host.
Comment générer une clé SSH ?
Utilisez ssh-keygen -t ed25519 -C "vous@machine". Le -t choisit l'algorithme et ed25519 est le bon choix en 2026, petit et rapide avec une sécurité solide. Le -C ajoute juste une étiquette. Ça écrit une clé privée et une clé publique .pub correspondante dans ~/.ssh. Mettez une phrase de passe quand on vous le demande, car une clé privée sans phrase de passe est juste un mot de passe posé dans un fichier.
Comment copier ma clé SSH sur un serveur ?
Lancez ssh-copy-id user@host. Il se connecte avec votre mot de passe une dernière fois et installe votre clé publique dans le authorized_keys du serveur, en gérant le fichier et les permissions pour vous. Ensuite vous vous connectez avec la clé, sans mot de passe. Si ssh-copy-id manque, injectez la clé à la main : cat ~/.ssh/id_ed25519.pub | ssh user@host "cat >> ~/.ssh/authorized_keys".
Quelle est la différence entre ssh -L et ssh -D ?
ssh -L 8080:localhost:80 user@host est une redirection locale : elle mappe un port distant précis sur un port de votre machine, donc localhost:8080 atteint ce service. ssh -D 1080 user@host est un proxy SOCKS : pointez une appli sur localhost:1080 et tout son trafic sort par le serveur distant, pas un seul port. Prenez -L pour un service unique, -D quand vous voulez qu'un navigateur entier passe par le tunnel.
L'agent forwarding SSH est-il sûr à utiliser ?
Ça dépend de l'hôte. ssh -A vous laisse atteindre une troisième machine depuis celle où vous vous êtes connecté, avec votre clé locale, ce qui est pratique via un rebond. Le risque, c'est que quiconque a les droits root sur cet hôte intermédiaire peut utiliser votre agent transféré pour s'authentifier en votre nom tant que vous êtes connecté. Sur une machine de pleine confiance, c'est correct. Sur un hôte partagé ou non fiable, évitez -A et utilisez ProxyJump, qui n'expose pas vos clés à la machine intermédiaire.