Le Tunnel SSH (Local Port Forwarding)

RÉSEAU SSH

Le Local Port Forwarding (-L) permet d'accéder à un service (Web, SSH, BDD) situé sur un serveur inaccessible directement, en passant par un serveur intermédiaire (serveur de rebond ou "Bastion").

Le Concept : On ouvre une "porte" sur votre PC (ex: port 2222) qui voyage à travers le tunnel SSH pour ressortir de l'autre côté vers la cible réelle (ex: port 22).

1. Cas pratique : Accéder en SSH via un Rebond

Vous voulez atteindre le serveur cible 172.18.138.146 (inaccessible depuis Internet) en passant par le serveur de rebond 10.30.103.22.

Étape A : Créer le tunnel

Ouvrez un terminal (PowerShell ou Bash) et lancez :

ssh -N -T -L 2222:172.18.138.146:22 tunnel@10.30.103.22

Le terminal va sembler "bloqué" (curseur clignotant). C'est normal : le tunnel est actif. Ne fermez pas cette fenêtre.

Étape B : Se connecter à la cible

Ouvrez un deuxième terminal. Pour vous connecter à la cible, connectez-vous simplement à votre port local 2222 :

ssh -p 2222 user@localhost
Explication : SSH envoie votre trafic dans le port 2222 de votre PC → Voyage dans le tunnel chiffré → Sort du serveur 10.30... → Arrive sur le port 22 de 172.18...

2. Cas pratique : Accéder à un site Web masqué

Le serveur cible héberge une interface Web sécurisée (Port 9443), mais vous n'avez pas d'accès direct.

Étape A : La commande

ssh -N -T -L 9443:172.18.138.146:9443 tunnel@10.30.103.22
  • 9443 (1er chiffre) : Le port sur VOTRE ordinateur.
  • 172.18...:9443 : La destination réelle.

Étape B : L'accès navigateur

Ouvrez votre navigateur web (Chrome/Firefox) et tapez :

https://localhost:9443
# OU
https://127.0.0.1:9443
Alerte de sécurité SSL : Comme vous accédez via "localhost" mais que le certificat du serveur attend une autre adresse, votre navigateur affichera une alerte "Connexion non sécurisée". C'est normal dans ce contexte : cliquez sur Avancé > Accepter le risque.

3. Version Stabilisée (Anti-Coupure)

Les pare-feux coupent souvent les connexions SSH inactives. Pour maintenir le tunnel ouvert longtemps, on ajoute des options de "KeepAlive".

Version PowerShell (Windows) :

ssh -N -T `
  -o ServerAliveInterval=30 `
  -o ServerAliveCountMax=3 `
  -L 2222:172.18.138.146:22 `
  tunnel@10.30.103.22

Version Bash (Linux/Mac) :

ssh -N -T \
  -o ServerAliveInterval=30 \
  -o ServerAliveCountMax=3 \
  -L 2222:172.18.138.146:22 \
  tunnel@10.30.103.22

4. Comprendre les options

Option Signification
-L local:ip:distant Local Forwarding : Redirige un port local vers une IP cible.
-N No Command : Ne lance pas de shell (bash) sur le serveur distant. Sert uniquement à porter le tunnel. Utile si l'utilisateur tunnel a un shell restreint (`/bin/false`).
-T No TTY : Désactive l'allocation de terminal pseudo-TTY. Évite les erreurs si le serveur distant n'autorise pas les terminaux interactifs.
ServerAliveInterval Envoie un signal "ping" vide toutes les 30 secondes pour garder la connexion active.