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.

Le Concept : SSH crée un tuyau chiffré. Tout ce qui entre dans le port local (ex: 9443) de votre poste Linux voyage dans ce tuyau et ressort sur le serveur distant pour atteindre la cible.

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
Explication : SSH redirige : 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
Ports privilégiés (< 1024) : Sous Linux, si vous voulez utiliser un port local inférieur à 1024 (ex: -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.

Comment fermer le tunnel ? Comme il tourne en fond, faire Ctrl+C ne suffit pas. Il faut trouver son processus et le tuer :
1. Trouver l'ID : ps aux | grep ssh
2. Tuer le processus : kill 12345 (remplacez 12345 par l'ID trouvé).