
Routeur SSH conscient du réseau - achemine les connexions vers différentes IP/ports/clés/hôtes de saut en fonction du VPN actif ou du réseau
| CI | Code | OpenSpec | Security |
|---|---|---|---|
|
|
|
|
|
Routeur SSH conscient du réseau. Détecte votre réseau actif ou VPN et sélectionne automatiquement le bon hôte, port, fichier d'identité et hôte de rebond pour chaque connexion SSH — sans toucher à ~/.ssh/config.
Définissez chaque hôte logique une seule fois avec un profil default et des surcharges optionnelles par réseau. À chaque connexion, sshroute détecte sur quel réseau vous êtes (VPN, LAN de bureau, pair WireGuard, etc.) et résout les paramètres SSH corrects avant de passer la main au vrai /usr/bin/ssh.
ssh myserver
→ sshroute detecte : corp-vpn est actif
→ résout : 10.100.0.50:2222 via bastion.corp.internal
→ exec /usr/bin/ssh -p 2222 -i ~/.ssh/corp_key -J bastion.corp.internal 10.100.0.50
Votre lab a probablement au moins deux réalités : vous êtes soit à la maison sur le LAN, soit absent et vous vous connectez via WireGuard ou un autre VPN. Le problème est que ~/.ssh/config ne sait pas dans lequel vous êtes — vous finissez donc avec des alias séparés (server-lan, server-vpn), ou un hôte de rebond qui ne fonctionne qu'à moitié, ou vous mémorisez les IP.
sshroute résout ce problème en détectant votre réseau actuel avant chaque connexion. Lorsque l'interface WireGuard est active et que la route du pair existe, il se connecte directement à l'IP du tunnel. Quand vous êtes sur le LAN, il utilise l'adresse locale. Quand aucun des deux n'est joignable, il utilise le nom d'hôte public en secours. Un alias, trois réalités, zéro changement manuel.
Il intercepte également SSH de manière transparente — git push, rsync, scp passent tous automatiquement par lui une fois que vous avez configuré le mode shadow. Pas de wrappers, pas de fonctions shell, pas de réflexion.
Les réseaux d'entreprise sont pires. Vous avez l'internet public, peut-être un VPN site-à-site, peut-être un VPN personnel split-tunnel, et à l'intérieur vous avez différents hôtes de rebond selon l'environnement que vous ciblez — dev, staging, prod, chacun avec son bastion et sa clé. Garder cela en ordre dans ~/.ssh/config signifie soit un énorme fichier qui plante dès que l'infrastructure change, soit un script que toute l'équipe maintient différemment.
sshroute vous permet de définir la logique de routage de manière déclarative, de la conserver dans un fichier YAML versionné et de la partager dans toute l'équipe. La même configuration fonctionne pour tout le monde — le bon réseau est détecté automatiquement en fonction des interfaces ou routes actives sur chaque machine. Les clés, ports, utilisateurs et hôtes de rebond se résolvent sans que l'utilisateur ait à y penser.
| Fonctionnalité | ~/.ssh/config | WireGuard seulement | Teleport / Boundary | sshroute |
|---|---|---|---|---|
| Détecte votre réseau actuel | ❌ | ❌ | ❌ | ✅ |
| Choisit automatiquement le meilleur chemin | ❌ | ❌ | ❌ | ✅ |
| Secours en cas d’échec de connexion | ❌ | ❌ | ✅ | ✅ |
| Reconnexion automatique + reroutage à la coupure | ❌ | ⚠️ itinérance du tunnel | ⚠️ via proxy fixe | ✅ |
| Une commande par hôte, n’importe où | ❌ | ⚠️ VPN doit être actif | ✅ | ✅ |
| Taille de config pour 10 hôtes × 4 chemins | 📄 ~600 lignes | 📄 ~600 lignes + config VPN | 📄 config côté serveur | 📄 ~60 lignes |
| Appareils mobiles itinérants | ⚠️ alias manuels | ⚠️ VPN requis | ✅ | ✅ |
| Chaînage automatique d’hôte de rebond | ⚠️ -J manuel | ➖ n/a | ✅ | ✅ |
| Fonctionne avec scp / rsync / git / Ansible | ✅ | ✅ | ⚠️ partiel | ✅ |
| Aucune installation côté serveur sur les cibles | ✅ | ❌ | ❌ | ✅ |
| Pas de serveur d’authentification ni de démon | ✅ | ❌ | ❌ | ✅ |
| Pas d’agent client | ✅ | ❌ | ❌ | ✅ |
| Open source, entièrement auto-hébergé | ✅ | ✅ | ⚠️ open-core | ✅ |
Teleport et Boundary sont une catégorie différente — ils ajoutent le contrôle d’accès, les journaux d’audit et l’authentification par certificat en plus du routage. Si c’est ce dont vous avez besoin, utilisez-les. sshroute est pour quand vous voulez l’intelligence de routage sans la surcharge opérationnelle de gérer un serveur d’authentification central.
Téléchargez la dernière version depuis GitHub Releases. Des binaires sont disponibles pour Linux, macOS et Android sur AMD64 et ARM64.
go install github.com/thereisnotime/sshroute@latest
Téléchargez l’archive android_arm64 depuis GitHub Releases, extrayez-la et placez le binaire dans ~/.local/bin :