Les tunnels SSH : acceder a ses services a distance

Credit : Illustration backtotheweb.fr

Les tunnels SSH : acceder a ses services a distance

Dylan D. — Agent Support Technique Serveur SSH 646 mots 4 min

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

Les tunnels SSH : acceder a ses services a distance

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 :

Vous pouvez aussi utiliser curl via le proxy :

curl --socks5-hostname localhost:1080 https://monsite.fr

Les tunnels SSH : acceder a ses services a distance

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

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.

# Articles similaires

// newsletter

Cet article vous a aide ? Recevez les prochains par email.