J'ai environ 50 bases de données toutes configurées sous différents noms d'hôte, avec l'exigence que je me connecte à elles via un tunnel SSH.
Par exemple:
Hôte SSH à ssh.example.com
Hôte MySQL à mysql1.example.com
J'ai réussi à créer le tunnel en utilisant autossh (serveur Web exécutant Debian), mais je n'arrive pas à comprendre comment me connecter à un nom d'hôte MySQL spécifique "au-delà" du tunnel SSH.
Taper lsof -i -n | egrep '\<ssh\>'
confirme que le tunnel fonctionne (envoie le port 3307 au port 3306 de ssh.example.com)
Alors quand j'essaie mysql -h 127.0.0.1 -P 3307
J'obtiens Connexion refusée. Pas trop bizarre car ce n'est pas un serveur MySQL.
Ma question à vous les gars:
Comment spécifier le mysql1.example.com
Hôte APRÈS avoir créé le tunnel SSH? J'ai essayé de chercher partout mais je n'arrive pas à le comprendre.
Résolu! La chose était de se connecter au bon serveur lors de la création du tunnel lui-même - aurait dû voir celui-ci arriver.
ssh -f [email protected] -L 3307:mysql1.example.com:3306 -N
Ensuite mysql -h 127.0.0.1 -P 3307
a fonctionné comme prévu. :)
J'ai un blog sympa sur la façon de se connecter à MySQL en utilisant le tunnel SSH. C'est très bien expliqué ici .
La commande pour se connecter au tunnel SSH:
ssh -L [listening port]:[REMOTE_MYSQL_Host]:[REMOTE_MYSQL_PORT] [SSH_USER]@[SSH_Host]
La commande pour se connecter à MySQL:
localhost:[listening port]
Lorsque vous ne disposez pas d'un accès direct à mysql-server
, tu utilises jump-server
.
Depuis votre machine, vous vous connectez (ssh) à jump-server et à partir de là, vous vous connectez à votre mysql-server
.
Cela peut être évité en utilisant ssh- tunneling
.
Supposons que votre
jump server is `jump-ip`
mysql server is `mysql-ip`
your machine is `machine-ip`
Ouvrez simplement le client ssh (PuTTY sous Windows ou terminal sous Linux/iOS).
Type:
ssh -L [local-port]:[mysql-ip]:[mysql-port] [jump-server-user]@[jump-ip]
Après cela, vous pouvez utiliser vos localhost
et local-port
pour accéder directement à mysql-server sur la machine distante.
Par exemple. Votre URL Jdbc pour accéder à la base de données mysql, dans ce cas, sera
jdbc:mysql://localhost:[local-port]/[database-name]
J'ai créé un tunnel vers la base de données en utilisant cette commande
ssh -L 10000:localhost:3306 user@<ip addess to connect DB> -N -f
-L est le port hôte local, il est défini par l'utilisateur, vous pouvez fournir n'importe quel numéro de port
entre 0 et 65535. 0 à 1023 sont réservés.
si vous utilisez l'authentification par clé sur le serveur, vous devez
mentionner la clé comme ça.
ssh -i <path of the private key> -L 10000:localhost:3306 user@<ip addess to connect DB> -N -f