SLBCloud
Intermédiaire8 min de lecture

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

cfg
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 yes

ServerAliveInterval

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.

bash
ssh-keygen -t ed25519            # acceptez de saisir une phrase
eval $(ssh-agent)
ssh-add ~/.ssh/id_ed25519
ssh-add -l                       # les clés chargées

Rebondir 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.

cfg
Host interne
    HostName 10.0.0.5
    User alexis
    ProxyJump web1

ProxyJump, 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

bash
ssh -v [email protected]        # -vvv pour tout voir
MessageCause
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 refusedsshd est arrêté, ou écoute sur un autre port
Connection timed outPare-feu, ou la machine ne répond pas du tout
REMOTE HOST IDENTIFICATION HAS CHANGEDRé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