
Accéder à distance à des machines situées derrière un NAT ou un pare-feu peut parfois sembler compliqué. Le tunnel SSH inverse, également appelé reverse SSH, est une solution simple et sécurisée. Avec cette méthode, c’est la machine distante qui initie la connexion vers un serveur public, permettant ainsi d’y accéder même derrière un réseau restreint. Lorsqu’on combine cette approche avec AutoSSH, le tunnel devient permanent et auto-réparateur, capable de se reconnecter automatiquement en cas de coupure. Ce guide explique comment configurer un tunnel SSH inverse stable, sécurisé et durable.
Pourquoi utiliser un tunnel SSH inverse avec AutoSSH ?
Un tunnel SSH classique redirige des ports de votre machine locale vers un serveur distant. L’inverse fonctionne autrement : la machine distante initie la connexion vers le serveur public, et un port d’écoute est ouvert sur ce serveur pour y accéder à tout moment.
Le problème, c’est que si la connexion tombe, vous devez la relancer manuellement. C’est là qu’intervient AutoSSH : il surveille le tunnel et le restaure automatiquement dès qu’il détecte une interruption, assurant ainsi un accès distant permanent.
Comprendre le tunnel SSH inverse
Le principe est simple :
- La machine distante établit une connexion SSH vers un serveur public.
- Grâce à l’option
-Rde SSH, un port sur le serveur distant est redirigé vers la machine cliente. - Depuis le serveur, vous pouvez vous connecter à la machine distante via ce port d’écoute.
Exemple de commande pour ouvrir le tunnel :
ssh -R 2222:localhost:22 utilisateur@serveur
Ici, le port 2222 du serveur distant est redirigé vers le port 22 de la machine distante.
Automatiser le tunnel avec AutoSSH
Pour maintenir le tunnel actif en permanence, AutoSSH est l’outil idéal. Il se relance automatiquement lorsqu’une connexion tombe. Une commande typique ressemble à ceci :
autossh -M 0 -f -N -R 2222:localhost:22 utilisateur@serveur -o "ServerAliveInterval=60" -o "ServerAliveCountMax=3"
-M 0désactive le monitoring basé sur port pour éviter les faux positifs.-fpermet de lancer AutoSSH en arrière-plan.-Nindique qu’aucune commande distante n’est exécutée, seul le tunnel est créé.- Les options
ServerAliveIntervaletServerAliveCountMaxpermettent de garder la connexion active et de détecter rapidement les interruptions.
Pour rendre cette configuration permanente, il est conseillé de créer un service systemd qui démarre automatiquement au démarrage de la machine.
Sécuriser et optimiser le tunnel
Même si le tunnel est puissant, il faut le sécuriser correctement :
- Utiliser des clés SSH pour l’authentification automatique.
- Choisir un port d’écoute non standard sur le serveur distant.
- Restreindre les utilisateurs autorisés à ouvrir des tunnels.
- Mettre en place des outils de surveillance pour détecter toute activité suspecte.
- Consigner les logs pour suivre les reconnexions et la stabilité du tunnel.
Exemple de service systemd pour AutoSSH
Pour automatiser le tunnel au démarrage :
[Unit]
Description=AutoSSH tunnel inverse
After=network-online.target
[Service]
User=monutilisateur
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -M 0 -N -R 2222:localhost:22 monutilisateur@serveur -o "ServerAliveInterval=60" -o "ServerAliveCountMax=3"
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Une fois le fichier créé :
sudo systemctl daemon-reload
sudo systemctl enable autossh-tunnel
sudo systemctl start autossh-tunnel
Le tunnel est alors lancé automatiquement à chaque démarrage et se reconnecte en cas de coupure.
Cas d’usage pratiques
- Objets connectés / IoT : accéder à une box domotique ou à un Raspberry Pi derrière un NAT sans configurer de redirection de ports.
- Serveurs personnels : permettre un accès distant à un ordinateur chez soi ou sur un réseau privé.
- Support et maintenance : administrateurs pouvant intervenir sur des machines clientes à distance sans intervention manuelle à chaque fois.
Limites et précautions
Même avec AutoSSH, le tunnel dépend de la stabilité de la connexion Internet. En cas de réseau instable, il peut y avoir des interruptions fréquentes.
Il est également important de sécuriser le serveur distant, car ouvrir un port d’écoute expose potentiellement à des attaques.
FAQ
Peut-on créer un tunnel SSH inverse sans droits root ?
Oui, tant que vous utilisez un port supérieur à 1024 sur le serveur.
AutoSSH consomme-t-il beaucoup de ressources ?
Non, il reste très léger et n’utilise presque rien une fois lancé.
Peut-on créer plusieurs tunnels vers le même serveur ?
Oui, il suffit de définir des ports différents pour chaque tunnel.
Conclusion
Configurer un tunnel SSH inverse avec AutoSSH est une solution simple et fiable pour accéder à des machines distantes derrière des NAT ou des firewalls. Avec AutoSSH, le tunnel devient permanent et auto-réparateur, ce qui permet un accès distant sûr et stable sans surveillance constante. C’est une méthode idéale pour les administrateurs, les développeurs et tous ceux qui ont besoin d’une connexion distante fiable.
