SSH tunneling
Un billet technique pour parler d’un outils bien pratique pour accéder à distance à une machine quand des obstacles (routeurs, firewalls, etc.) sont placés sur votre chemin.
Le tunneling SSH met en œuvre trois machines, au sens logique du termes, en pratique les trois machines peuvent être physiquement un seul et même ordinateur — mais ça réduit l’intérêt de la chose. Nous avons donc une machine locale, un serveur (proxy) et une machine cible. L’idée principale est d’arriver à contacter la machine cible à partir de la machine locale alors que des obstacle empêchent un connexion directe. La seule chos à avoir est un serveur intermédiaire qui lui à accès aux deux autre machines.
Il existe deux modes, le tunneling direct et le tunneling inverse. C’est en réalité la même opération qui est réalisée, mais pas de la même manière, ce qui permet de s’adapter aux différente configuration que l’on peut rencontrer.
Tunneling direct (local)
Cette opération permet de « faire croire » à la machine cible qu’elle communique avec une machine de son réseau local. L’initiateur redirige le flux reçu sur LOCAL-PORT vers le PORT de la machine cible par l’intermédiaire du proxy.
Établissement du tunnel :
ssh -Nft -L LOCAL-PORT:target.com:PORT user@proxy.com
Connexion :
ssh -p LOCAL-PORT user@localhost
Tunneling inverse
Là c’est une machine du réseau local de la machine cible qui permet un accès à celle-ci depuis l’extérieur. Ici l’initiateur demande au proxy de rediriger le flux qu’il reçoit sur REMOTE-PORT vers le PORT de la machine cible par son intermédiaire.
Établissement du tunnel :
ssh -Nft -R REMOTE-PORT:target.com:PORT user@proxy.com
Connexion :
ssh -p REMOTE-PORT user@proxy.com


