Votre VPS Linux heberge une base de donnees MySQL, une interface Pterodactyl ou un service interne dont vous avez besoin depuis votre poste de travail, mais exposer ce port sur Internet serait une faille de securite majeure. La solution est le tunnel SSH (aussi appele SSH port forwarding) : il chiffre et redirige le trafic TCP via votre connexion SSH existante, sans ouvrir aucun port supplementaire dans votre pare-feu.
Ce guide couvre les trois modes de redirection de port SSH (local, distant et dynamique), la persistance du tunnel via le fichier de configuration SSH, ainsi que les bonnes pratiques reseau. Nous prenons pour exemple un administrateur VPS Linux gerant un serveur de jeu FiveM ou Minecraft. Toutes les commandes suivantes sont compatibles Linux, macOS et Windows 10/11 (client OpenSSH natif).
Pourquoi un tunnel SSH plutot qu'un port ouvert ?
Ouvrir le port 3306 (MySQL) ou le port 8080 d'une interface d'administration directement sur votre pare-feu VPS Linux expose ce service a Internet entier. Meme avec un mot de passe fort, les scanners automatises trouvent ces ports en quelques minutes. Le tunnel SSH evite ce risque en trois points :
- Aucun port supplementaire a ouvrir : seul le port SSH (22 par defaut) est utilise. Le firewall n'a pas a etre modifie pour les services internes.
- Chiffrement de bout en bout : le trafic entre votre poste et le serveur VPS est chiffre par OpenSSH, quel que soit le protocole transporte (MySQL, HTTP, VNC).
- Authentification SSH : le tunnel est conditionne a votre cle publique SSH ou login SSH, pas au service interne lui-meme. Un attaquant sans cle privee ne peut pas atteindre les services tunnelises.
Le tunnel SSH s'appuie sur OpenSSH, installe par defaut sur toutes les distributions Linux courantes (Ubuntu, Debian, Rocky Linux, AlmaLinux) et integre nativement dans macOS et Windows 10/11. Aucun script supplementaire, aucun agent tiers : la commande suivante suffit a creer un tunnel chiffre vers votre serveur VPS Linux.
Hebergez votre VPS Linux chez ElypseCloud et profitez d'un acces SSH inclus des la livraison, avec une infrastructure reseau 10 Gbps concue pour les serveurs de jeu.
Decouvrir les VPS Linux ElypseCloudTunnel local : acceder a un service distant depuis votre machine
Le tunnel local (-L) redirige un port de votre machine locale vers un port accessible depuis votre serveur VPS. C'est le cas d'usage le plus courant : acceder a une base de donnees MySQL, une interface phpMyAdmin ou un panneau d'administration Pterodactyl sans exposer ces services sur le reseau local ni sur Internet.
Syntaxe du tunnel local
ssh -L [IP_LOCALE:]PORT_LOCAL:DESTINATION:PORT_DESTINATION [UTILISATEUR@]VPS
PORT_LOCAL: port sur votre machine (superieur ou egal a 1024 sans droits root).DESTINATION:PORT_DESTINATION: l'hote et le port a atteindre, dont le nom DNS est resolu depuis le VPS.VPS: adresse IP ou nom de domaine de votre serveur VPS Linux.
Exemple : acceder a MySQL sur le VPS
ssh -L 3336:localhost:3306 admin@203.0.113.10
La commande suivante cree un tunnel : votre port local 3336 est redirige sur le port 3306 du VPS. Connectez votre client MySQL a 127.0.0.1:3336 pour acceder a la base de donnees, sans ouvrir MySQL sur Internet. L'ip address de votre VPS n'a pas a figurer dans les reglages MySQL du client.
Exemple : acceder a Pterodactyl Panel sur le VPS
ssh -L 8880:localhost:80 admin@203.0.113.10
Ouvrez ensuite http://127.0.0.1:8880 dans votre navigateur pour acceder au panneau Pterodactyl heberge sur le VPS, sans exposer le port 80 publiquement. Cette technique est particulierement utile pour administrer un serveur de jeu FiveM ou Minecraft en securite depuis un desktop ou un poste en bureau.
Plusieurs redirections en une seule commande
ssh -L 3336:localhost:3306 -L 8880:localhost:80 admin@203.0.113.10
Vous pouvez chainer autant de redirections -L que necessaire dans une meme connexion SSH. L'option -N empeche l'ouverture d'un shell interactif, reservant la connexion au forwarding uniquement.
Tunnel distant : exposer un service local via le VPS
Le tunnel distant (-R), aussi appele reverse SSH tunnel, fonctionne dans le sens oppose : il rend un service tournant sur votre machine locale accessible via votre serveur VPS. Utile pour partager un serveur de test interne ou realiser un backup depuis un serveur distant sans ouvrir de port entrant sur votre reseau local.
Syntaxe du tunnel distant
ssh -R [DISTANT:]PORT_DISTANT:DESTINATION:PORT_DESTINATION [UTILISATEUR@]VPS
Exemple : exposer un serveur de developpement local
ssh -R 8080:127.0.0.1:3000 -N -f admin@203.0.113.10
Le serveur VPS ecoute sur le port 8080 et redirige tout le trafic vers le port 3000 de votre machine locale. Vos collaborateurs peuvent acceder a votre serveur de developpement via IP_VPS:8080. La connexion entre leur navigateur et votre machine passe entierement par le tunnel SSH chiffre.
Configuration de GatewayPorts sur le serveur VPS
Par defaut, OpenSSH lie les tunnels distants uniquement sur l'interface loopback du VPS (127.0.0.1). Le tunnel n'est donc pas accessible depuis l'exterieur. Pour le rendre accessible, configurez GatewayPorts dans le fichier /etc/ssh/sshd_config sur le VPS, puis redemarrez le service SSH :
# Editer /etc/ssh/sshd_config sur le VPS
GatewayPorts clientspecified
# Redemarrer SSH
sudo systemctl restart sshd
Avec clientspecified, precisez l'adresse d'ecoute dans la commande suivante, executee depuis votre poste :
ssh -R 0.0.0.0:8080:127.0.0.1:3000 -N -f admin@203.0.113.10
N'activez GatewayPorts que le temps necessaire : une adresse d'ecoute 0.0.0.0 expose le port sur toutes les interfaces reseau du VPS Linux. Desactivez la directive et redemarrez sshd des que le besoin est passe, pour limiter la surface d'attaque de votre serveur de jeu ou de votre serveur web.
Tunnel dynamique : proxy SOCKS sur le VPS
Le tunnel dynamique (-D) cree un proxy SOCKS sur votre machine locale qui route tout le trafic compatible via le serveur VPS. Utile pour auditer le reseau de votre serveur depuis son contexte reseau, tester la resolution DNS vue du datacenter, ou acceder a des ressources accessibles uniquement depuis les adresses IP de votre infrastructure.
Syntaxe du tunnel dynamique
ssh -D [IP_LOCALE:]PORT_LOCAL [UTILISATEUR@]VPS
Exemple de proxy SOCKS5
ssh -D 9090 -N -f admin@203.0.113.10
Cette commande cree un proxy SOCKS5 sur 127.0.0.1:9090. Configurez votre navigateur ou votre outil reseau pour utiliser ce proxy afin de router votre trafic via le VPS. Contrairement aux tunnels -L et -R qui operent port a port, le tunnel dynamique delegue la resolution de la destination a chaque application cliente, comme un routeur logiciel. Il est compatible avec les protocoles HTTP, HTTPS et les connexions TCP directes (pas UDP).
Simplifier avec le fichier de configuration SSH
Repeter de longues commandes SSH a chaque acces est fastidieux et source d'erreurs. Definissez vos tunnels dans ~/.ssh/config sur votre poste local pour les demarrer en une seule commande courte. Ce fichier de configuration est lu par le client OpenSSH a chaque connexion :
# ~/.ssh/config
Host tunnel-mysql
HostName 203.0.113.10
User admin
LocalForward 3336 localhost:3306
Host tunnel-pterodactyl
HostName 203.0.113.10
User admin
LocalForward 8880 localhost:80
Host tunnel-socks
HostName 203.0.113.10
User admin
DynamicForward 9090
Lancez ensuite le tunnel MySQL avec la commande suivante :
ssh -N tunnel-mysql
L'option -N indique a SSH de ne pas ouvrir de shell interactif, uniquement de maintenir la redirection de port. Associez -f pour passer le processus en arriere-plan et liberer votre terminal. Ce tuto s'applique identiquement sur Linux, macOS et Windows 10/11 (PowerShell ou invite de commandes avec OpenSSH installe).
Garder le tunnel actif en arriere-plan
Les tunnels SSH se coupent quand la connexion est interrompue. Pour un tunnel persistant sur un serveur VPS Linux de jeu, deux options sont disponibles.
Mode arriere-plan avec -N et -f
ssh -L 3336:localhost:3306 -N -f admin@203.0.113.10
-N: ne pas executer de commande distante (maintient uniquement le forwarding de port).-f: passe SSH en arriere-plan juste avant d'etablir le tunnel.
Reconnexion automatique avec keepalive
Pour que le tunnel se maintienne en cas de coupure reseau, ajoutez dans votre entree ~/.ssh/config :
Host tunnel-mysql
HostName 203.0.113.10
User admin
LocalForward 3336 localhost:3306
ServerAliveInterval 60
ServerAliveCountMax 3
ExitOnForwardFailure yes
ServerAliveInterval 60: envoie un paquet keepalive toutes les 60 secondes au serveur VPS.ServerAliveCountMax 3: ferme la connexion si le VPS ne repond pas apres 3 tentatives.ExitOnForwardFailure yes: arrete SSH si le port local est deja utilise (evite les tunnels fantomes).
Pour une persistance complete en production sur votre VPS Linux, vous pouvez utiliser une session tmux dediee sur le VPS ou configurer un service systemd sur votre poste local qui relance le tunnel automatiquement apres un redemarrer du systeme.
Bonnes pratiques de securite
Un tunnel SSH bien configure est securise par nature, mais quelques regles renforcent encore la posture de votre serveur VPS Linux :
- Utilisez des cles SSH (cle publique / cle privee) plutot qu'un nom d'utilisateur et mot de passe. Consultez le guide configurer une cle SSH sur un VPS Linux sans perdre l'acces.
- AllowTcpForwarding : conservez la valeur
yesdans/etc/ssh/sshd_configuniquement si vous avez besoin des tunnels. Pour restreindre le forwarding a certains utilisateurs, utilisez un blocMatch Userdans la configuration du serveur SSH. - Activez Fail2ban pour bloquer les tentatives d'acces SSH par force brute sur votre serveur. Consultez le guide Fail2ban sur un VPS Linux.
- Limitez GatewayPorts : ne l'activez que ponctuellement et desactivez-le des que le besoin est passe pour reduire la surface d'attaque.
- Verifiez les ports en ecoute apres avoir cree un tunnel avec la commande ss sur Linux, pour confirmer que seul le port attendu est ouvert sur les bonnes interfaces reseau.
- Firewall et UFW : le tunnel passe uniquement par SSH, mais votre firewall doit quand meme bloquer tous les ports inutiles. Consultez le guide ouvrir les ports d'un serveur de jeu avec UFW.
Le tunnel SSH est l'une des techniques les plus simples et les plus sures pour securiser l'acces a un service interne sur un serveur VPS Linux. Pour les cas ou vous avez besoin d'un VPN complet entre plusieurs serveurs avec des scripts d'automatisation, un daemon comme WireGuard sera plus adapte. Pour surveiller les connexions reseau actives et les adresses IP connectees a votre VPS, consultez le guide lister les ports en ecoute sur un serveur Linux avec ss. Et pour administrer Docker derriere un tunnel SSH, le guide installer Docker sur un VPS detaille les bonnes pratiques reseau adaptees a ce contexte.