tunnel ssh pour accéder à mysql

14/04/2025

le but est d'accéder à un port sur une autre machine.

Si on a "mysql" dans un conteneur sur "prod.net"
Et qu'on veut y accéder depuis un conteneur sur "dev.net"

on a créé un serveur ssh dans un conteneur sur prod.net
on pourra s'y connecter comme ça :

ssh prod.net -p 2222

sshserver:
    ports:
        - target: 22
          published: 2222
          mode: host
    volumes:
        - "/root/.ssh:/root/.ssh:ro"
        - "/etc/ssh:/etc/ssh:ro"

ensuite on crée un tunnel ssh dans un conteneur sur dev.net

ça revient à faire ça dans un conteneur :

ssh -o StrictHostKeyChecking=no -N -L 0.0.0.0:3333:mysql:3306 root@prod.net -p 2222

sshtunnel:
    volumes:
        - /root/.ssh:/root/.ssh:ro
    environment:
        SSH_HOST: prod.net
        SSH_PORT: 2222
        SSH_USER: root
        # on pourra se connecter au port local (sshtunnel:3333), et on tombera sur le remote (via gextra.net:2222)
        LOCAL_PORT: 3333
        REMOTE_HOST: mysql
        REMOTE_PORT: 3306

et dans le projet gextra6 :

DATABASE_URL="mysql://root:xxxxxxxx@sshtunnel:3333/gextra6"

Raccourcis