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").
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
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
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. |