Mole est une application en ligne de commande qui permet de simplifier la création de tunnels SSH.
Il est parfois utile de monter un tunnel pour accéder à un service qui n’est pas ouvert sur le WEB. Par exemple si votre serveur MYSQL, n’est accessible que depuis votre serveur web ou votre serveur de backup. Ou encore pour contourner un firewall qui bloquerait un port en particulier.
Sur cet exemple le serveur bleu ne peut pas accéder au port 80 (application web) du serveur rouge car un firewall le bloque. Mais le port 22 (ssh) est accessible. Il est donc possible de créer un tunnel qui forward le port 80 sur serveur rouge sur le port 8080 du serveur bleu. Une fois le tunnel mis en place il sera possible d’accéder à l’application web du serveur rouge via l’url: http://blue:8080.
Installation
Deux méthodes d’installation sont possibles. Via le script d’installation ou via homebrew pour les utilisateurs de mac.
L’installation via le script :
bash <(curl -fsSL https://raw.githubusercontent.com/davrodpin/mole/master/tools/install.sh)
Je vous invite à vérifier le contenu du script avant de le lancer.
L’installation via homebrew :
brew tap davrodpin/homebrew-mole && brew install mole
Mole est utile car il nous simplifie la syntaxe pour créer un tunnel ssh. En effet il n’apporte rien de plus que de la simplification.
Par exemple la commande suivante, qui permet d’accéder au port 80 local d’une machine :
➜ ssh -L 8080:xxxxx@wordpress:80 root@wordpress
Se transforme en quelque chose de plus simple via mole :
➜ mole -remote :80 -local :8080 -server xxxxx@wordpress
Utilisation
Pour se connecter à un serveur mysql qui n’est pas ouvert sur le web nous allons ouvrir un tunnel entre le port 3306 local du serveur et le port 3307 de mon mac :
➜ mole -v -remote :3306 -local :3307 -server xxxxx@wordpress
Je peux maintenant me connecter au serveur mysql du serveur sur le port 3307 de ma machine :
➜ mysql connect -h 127.0.0.1 -P 3307 -uxxxxxxx -p
Gestion des alias
Le dernier point qui est bien pratique si vous avez à jongler avec plusieurs serveurs c’est la gestion des alias. Il est possible d’enregister des alias pour les tunnels que l’on a fréquemment à créer.
➜ mole -alias wp-mysql -remote :3306 -local :3307 -server xxxxx@wordpress
➜ mole -start wp-mysql