Credit : Illustration backtotheweb.fr
Les tunnels SSH : acceder a ses services a distance
Les tunnels SSH : acceder a ses services a distance
On a tous galéré avec ça au moins une fois.
Les tunnels SSH permettent d'acceder de maniere securisee a des services qui ne sont pas exposes sur Internet. C'est un outil puissant pour administrer vos serveurs IONOS sans ouvrir de ports supplementaires dans le pare-feu.
Tunnel local (Local Port Forwarding)
Le cas le plus courant : vous voulez acceder a un service distant (base de donnees, interface web) comme s'il etait local.
Syntaxe
ssh -L [port_local]:[hote_distant]:[port_distant] utilisateur@serveur
Exemples concrets
Acceder a MariaDB distante :
Votre base de donnees ecoute uniquement sur localhost (127.0.0.1:3306) sur le serveur. Depuis votre machine :
ssh -L 3307:127.0.0.1:3306 admin@mon-serveur-ionos.fr -p 2222
Maintenant, connectez-vous a la base via localhost:3307 :
mysql -h 127.0.0.1 -P 3307 -u wp_user -p wordpress_db
Acceder a phpMyAdmin non expose :
ssh -L 8080:127.0.0.1:80 admin@mon-serveur-ionos.fr -p 2222
Ouvrez http://localhost:8080/phpmyadmin dans votre navigateur.
Acceder a un Redis interne :
ssh -L 6380:127.0.0.1:6379 admin@mon-serveur-ionos.fr -p 2222
redis-cli -p 6380
Tunnel distant (Remote Port Forwarding)
Le tunnel distant fait l'inverse : il rend un service de votre machine locale accessible depuis le serveur.
Syntaxe
ssh -R [port_distant]:[hote_local]:[port_local] utilisateur@serveur
Exemple
Vous developpez en local sur le port 3000 et voulez montrer l'application a un collegue via le serveur :
ssh -R 8080:127.0.0.1:3000 admin@mon-serveur-ionos.fr -p 2222
Sur le serveur, l'application est maintenant accessible sur localhost:8080. Pour la rendre accessible depuis l'exterieur, ajoutez dans sshd_config :
GatewayPorts yes
Tunnel dynamique (SOCKS Proxy)
Le tunnel dynamique cree un proxy SOCKS qui route tout le trafic a travers le serveur.
ssh -D 1080 admin@mon-serveur-ionos.fr -p 2222
Configurez votre navigateur pour utiliser le proxy SOCKS5 sur localhost:1080. Tout votre trafic web passera par le serveur, utile pour :
- Tester un site depuis l'IP du serveur
- Naviguer sur un reseau Wi-Fi public en securite
- Acceder a des services geo-restreints
Vous pouvez aussi utiliser curl via le proxy :
curl --socks5-hostname localhost:1080 https://monsite.fr
Options utiles
Combinez ces options pour un usage optimal :
ssh -L 3307:127.0.0.1:3306 \
-N \ # Pas de shell interactif
-f \ # Passer en arriere-plan
-o ServerAliveInterval=60 \
-o ServerAliveCountMax=3 \
admin@mon-serveur-ionos.fr -p 2222
-N: n'execute pas de commande, juste le tunnel-f: passe en arriere-plan apres l'authentificationServerAliveInterval: envoie un keepalive toutes les 60 secondes
Tunnels persistants avec autossh
Pour des tunnels qui doivent rester ouverts en permanence, utilisez autossh qui reconnecte automatiquement en cas de coupure :
apt install autossh -y
autossh -M 20000 -f -N \
-L 3307:127.0.0.1:3306 \
-o ServerAliveInterval=60 \
-o ServerAliveCountMax=3 \
admin@mon-serveur-ionos.fr -p 2222
L'option -M 20000 definit le port de monitoring qu'autossh utilise pour verifier que la connexion est toujours active.
Creer un service systemd pour autossh
Pour un tunnel qui demarre au boot, creez /etc/systemd/system/tunnel-mysql.service :
[Unit]
Description=Tunnel SSH vers MariaDB
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=tunnel
ExecStart=/usr/bin/autossh -M 0 -N -L 3307:127.0.0.1:3306 -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -i /home/tunnel/.ssh/id_ed25519 admin@mon-serveur-ionos.fr -p 2222
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable tunnel-mysql
systemctl start tunnel-mysql
Configuration SSH cote client
Simplifiez vos connexions avec ~/.ssh/config :
Host ionos
HostName mon-serveur-ionos.fr
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519
LocalForward 3307 127.0.0.1:3306
LocalForward 6380 127.0.0.1:6379
ServerAliveInterval 60
Ensuite, un simple ssh ionos ouvre la connexion avec tous les tunnels configures.
Les tunnels SSH sont une solution elegante et securisee pour acceder a des services internes sans les exposer directement sur Internet. Combinees avec autossh et systemd, ils fournissent des connexions fiables et persistantes.