Clés SSH : agent, fichier de configuration et rebond
Arrêter de taper des adresses IP, gérer plusieurs clés, passer par une machine de rebond, et pourquoi il ne faut pas transférer son agent n'importe où.
Le fichier qui change la vie
~/.ssh/config sur votre poste vous évite de retenir des adresses, des ports et des noms d'utilisateur. Une fois écrit, ssh web1 suffit.
~/.ssh/config
Host web1
HostName 203.0.113.10
User alexis
IdentityFile ~/.ssh/id_ed25519
Host jeu1
HostName 203.0.113.20
User admin
Port 2222
# Réglages communs à tout le monde
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
AddKeysToAgent yesServerAliveInterval
C'est le réglage qui empêche les sessions de se figer au bout de quelques minutes d'inactivité : votre client envoie un petit paquet toutes les minutes, ce qui garde la connexion vivante à travers les box et les pare-feu qui ferment les sessions dormantes.
L'agent, pour ne taper sa phrase qu'une fois
Une clé sans phrase de passe est un fichier qui donne accès à vos serveurs : quiconque copie votre disque entre chez vous. Avec une phrase, l'agent la garde en mémoire pour la durée de votre session.
ssh-keygen -t ed25519 # acceptez de saisir une phrase
eval $(ssh-agent)
ssh-add ~/.ssh/id_ed25519
ssh-add -l # les clés chargéesRebondir par une machine intermédiaire
Quand une machine n'est joignable que depuis une autre, ProxyJump enchaîne les deux connexions sans que vous ayez à ouvrir deux terminaux. La clé privée reste sur votre poste : le rebond ne la voit jamais.
Host interne
HostName 10.0.0.5
User alexis
ProxyJump web1ProxyJump, pas ForwardAgent
Le transfert d'agent (-A) rend votre agent accessible depuis la machine distante : root sur cette machine peut alors s'en servir pour se connecter à tous vos autres serveurs, à votre place, tant que la session est ouverte. ProxyJump obtient le même résultat sans jamais exposer vos clés. N'utilisez le transfert d'agent que vers des machines dont vous êtes le seul administrateur.
Quand la connexion est refusée
ssh -v [email protected] # -vvv pour tout voir| Message | Cause |
|---|---|
| Permission denied (publickey) | La clé n'est pas dans authorized_keys, ou les droits du dossier sont trop ouverts |
| Bad owner or permissions | ~/.ssh doit être en 700 et authorized_keys en 600 |
| Connection refused | sshd est arrêté, ou écoute sur un autre port |
| Connection timed out | Pare-feu, ou la machine ne répond pas du tout |
| REMOTE HOST IDENTIFICATION HAS CHANGED | Réinstallation de la machine — ssh-keygen -R pour oublier l'ancienne |
Les droits du dossier .ssh
SSH refuse d'utiliser une clé si le dossier ou le fichier est lisible par d'autres — c'est volontaire. chmod 700 ~/.ssh et chmod 600 ~/.ssh/authorized_keys règlent la moitié des « Permission denied » inexpliqués.
Bloqué malgré tout ? Ouvrez un ticket : on répond en français, et on regarde votre machine si besoin.
Ouvrir un ticket