SSH Config : simplifier ses connexions avec ~/.ssh/config

Credit : Illustration backtotheweb.fr

SSH Config : simplifier ses connexions avec ~/.ssh/config

Dylan D. — Agent Support Technique Serveur SSH 610 mots 4 min

Fini les commandes a rallonge

On a tous galéré avec ça au moins une fois.

Sans fichier de configuration, chaque connexion SSH ressemble a cela :

ssh -i ~/.ssh/id_ed25519_ionos -p 2222 deploy@203.0.113.50

Avec un fichier ~/.ssh/config, cela devient :

ssh prod

Creer le fichier de configuration

mkdir -p ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/config && chmod 600 ~/.ssh/config

SSH Config : simplifier ses connexions avec ~/.ssh/config

Syntaxe de base

Editez ~/.ssh/config :

# Serveur de production IONOS
Host prod
    HostName 203.0.113.50
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_ionos

# Serveur de staging
Host staging
    HostName 203.0.113.51
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_ionos

# Serveur de base de donnees (acces interne uniquement)
Host db
    HostName 10.0.1.100
    User dbadmin
    IdentityFile ~/.ssh/id_ed25519_db

Desormais, ssh prod se connecte directement avec tous les bons parametres.

Wildcards et options globales

Appliquez des options a plusieurs hotes :

# Options par defaut pour tous les serveurs IONOS
Host ionos-*
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_ionos
    ServerAliveInterval 60
    ServerAliveCountMax 3

Host ionos-prod
    HostName 203.0.113.50

Host ionos-staging
    HostName 203.0.113.51

Host ionos-dev
    HostName 203.0.113.52

# Options globales (appliquees a tous les hotes)
Host *
    AddKeysToAgent yes
    IdentitiesOnly yes
    Compression yes

ProxyJump : rebondir via un bastion

Pour atteindre un serveur dans un reseau prive, passez par un serveur bastion :

Host bastion
    HostName 203.0.113.50
    User admin
    Port 22
    IdentityFile ~/.ssh/id_ed25519_bastion

Host db-interne
    HostName 10.0.1.100
    User dbadmin
    ProxyJump bastion
    IdentityFile ~/.ssh/id_ed25519_db

Host app-interne
    HostName 10.0.1.200
    User deploy
    ProxyJump bastion

ssh db-interne se connecte automatiquement au bastion puis rebondit vers le serveur de base de donnees. C'est l'equivalent de l'ancienne syntaxe ProxyCommand ssh -W %h:%p bastion.

Pour un double rebond :

Host deep-server
    HostName 192.168.1.10
    User admin
    ProxyJump bastion,app-interne

SSH Config : simplifier ses connexions avec ~/.ssh/config

IdentityFile : une cle par projet

Utilisez des cles differentes pour chaque contexte :

# Generer des cles dediees
ssh-keygen -t ed25519 -C "prod-ionos" -f ~/.ssh/id_ed25519_ionos
ssh-keygen -t ed25519 -C "github" -f ~/.ssh/id_ed25519_github
ssh-keygen -t ed25519 -C "db-admin" -f ~/.ssh/id_ed25519_db
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_github
    IdentitiesOnly yes

L'option IdentitiesOnly yes empeche SSH d'essayer toutes les cles et n'utilise que celle specifiee.

Multiplexing : reutiliser les connexions

Le multiplexing garde la connexion SSH ouverte et la reutilise pour les sessions suivantes. La premiere connexion prend quelques secondes ; les suivantes sont instantanees :

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 600

Creez le repertoire pour les sockets :

mkdir -p ~/.ssh/sockets

Verifiez les connexions actives :

ssh -O check prod
# Master running (pid=12345)

# Fermer manuellement une connexion partagee
ssh -O exit prod

Tunnel SSH et port forwarding

Definissez des tunnels dans la configuration :

Host tunnel-db
    HostName 203.0.113.50
    User deploy
    LocalForward 3307 10.0.1.100:3306
    RequestTTY no
    ExitOnForwardFailure yes

Lancez le tunnel avec ssh -N tunnel-db, puis connectez-vous a MySQL en local sur le port 3307.

Bonnes pratiques

Le fichier ~/.ssh/config est un gain de productivite enorme quand vous gerez plusieurs serveurs IONOS au quotidien.


Si vous avez des questions, n'hésitez pas à nous écrire. On répond à tout le monde.

# Articles similaires

// newsletter

Cet article vous a aide ? Recevez les prochains par email.