Le Tunnel SSH sous Linux (Port Forwarding)
LINUX / BASH CLI
Le Local Port Forwarding (-L) est une technique puissante sous Linux pour accéder à des services distants (Web, BDD, VNC) masqués derrière un pare-feu, en utilisant un serveur intermédiaire comme rebond.
1. Cas pratique : Accéder en SSH via un Rebond
Vous êtes sur votre poste Linux et voulez atteindre la cible 172.18.138.146 (réseau privé) en passant par le bastion 10.30.103.22.
Étape A : Créer le tunnel
Ouvrez votre terminal et lancez :
ssh -N -T -L 2222:172.18.138.146:22 tunnel@10.30.103.22
Le terminal va sembler figer (pas d'invite de commande). C'est normal : le tunnel est actif au premier plan.
Étape B : Se connecter à la cible
Ouvrez un nouvel onglet de terminal. Connectez-vous à votre propre machine sur le port 2222 :
ssh -p 2222 user@localhost
localhost:2222 → (Tunnel) → 172.18.138.146:22.
2. Cas pratique : Accéder à un site Web masqué
Le serveur cible héberge une interface Web sécurisée sur le port 9443, inaccessible depuis l'extérieur.
Étape A : La commande
ssh -N -T -L 9443:172.18.138.146:9443 tunnel@10.30.103.22
-L 80:...), vous devez lancer la commande ssh avec sudo. C'est pourquoi on utilise souvent 2222 ou 9443.
Étape B : L'accès navigateur
Lancez Firefox ou Chromium et allez sur :
https://localhost:9443
Acceptez l'alerte de certificat de sécurité (SSL) si elle apparaît.
3. Script Bash Stabilisé (Anti-Coupure)
Pour éviter que le pare-feu ne coupe la connexion inactive, on utilise les options ServerAlive. Voici la syntaxe multi-lignes pour Bash :
ssh -N -T \ -o ServerAliveInterval=30 \ -o ServerAliveCountMax=3 \ -L 2222:172.18.138.146:22 \ tunnel@10.30.103.22
4. Astuce Linux : Le mode Arrière-plan (-f)
Sous Linux, vous n'êtes pas obligé de garder un terminal ouvert bloqué. L'option -f (Fork) envoie SSH en tâche de fond après l'authentification.
# L'option -f envoie le processus en arrière-plan ssh -f -N -T -L 2222:172.18.138.146:22 tunnel@10.30.103.22
Une fois lancé, vous récupérez la main sur votre terminal immédiatement.
Ctrl+C ne suffit pas. Il faut trouver son processus et le tuer :1. Trouver l'ID :
ps aux | grep ssh2. Tuer le processus :
kill 12345 (remplacez 12345 par l'ID trouvé).