Tunnel ssh et proxy socks…

16 Jan

Il arrive que l’accès à des services hébergés  sur des machines ne soit pas possible car les ports sont fermés ou tout simplement, car la machine n’est pas sur notre réseau. Il existe un moyen d’atteindre sur celles-ci en utilisant ssh.

Tout ce qu’il faut:

  • une connexion ssh sur le serveur distant, donc un port ouvert,
  • un client ssh pouvant faire des tunnels et des proxy’s socks: Putty, au hasard…

Un tunnel ssh

Le principe est le suivant:

  • se connecter à la machine en ssh,
  • faire un tunnel pour rediriger les requêtes vers le port local.

Le cas de test: un serveur héberge un SGBD fonctionnant seulement sur 127.0.0.1 en port 3306 et atteignable par un service ssh sur port 22.

La configuration de Putty,  le tunnel qui nous intéresse:

et voilà!

Pour ce connecter, il ne faut plus renseigner en host l’ip ou le nom de la machine, mais localhost et le bon port(Putty écoute le port 3306 en localhost et redirige ce qui arrive dessus sur le serveur distant sur le port 3306):

Connexion à la base avec un client graphique

Connexion à la base avec un client graphique

Maintenant, imaginons que le SGBD n’est pas sur le serveur ssh mais, cependant, sur le réseau du serveur ssh. Il n’est pas possible d’accéder directement au SGBD  depuis notre poste, mais le serveur ssh le voit: il suffit de ce connecter au serveur ssh et de faire le tunnel vers la machine concerné (il faut remplacer localhost dans le tunnel par la machine: putty écoute tout ce qui vient sur le 3306, le redirige vers la machine ssh qui va rediriger directement vers le serveur SGBD nommé):

Un proxy socks

Dans l’exemple du tunnel, nous étions bridés par une seule adresse où rediriger le flux du 3306 (localhost ou l’ip/nom de la machine). Le proxy socks permet de dynamiquement effectuer cette opération, à condition que le client utilisé le permette (et que le serveur ssh l’autorise, bien sur…). Firefox permet par exemple d’utiliser des proxy socks.

Le proxy se configure dans putty de la façon suivante:

Utilisation de FireProxy pour configurer mon proxy:

Donc, Firefox va tout rediriger en local sur le port 1080. Putty récupère le flux sur ce port (et sert de proxy en fait), et redirige vers le serveur ssh, qui va acheminer le flux vers la machine pointé par Firefox dans l’url.

2 thoughts on “Tunnel ssh et proxy socks…

  1. Pour aller un peu plus loin :
    http://nemesis2.qx.net/pages/MyEnTunnel

    Cet utilitaire Windows permet de maintenir une session putty ouverte afin de garder un tunnel actif.

    Deux manière de l’utiliser :
    * Directement en configurant les infos (ip, user …) dans l’outil et dans ce cas MyEnTunnel utilise plink pour créer le tunnel.
    * Soit en mettant le nom d’une session putty enregistrée dans le nom du serveur et dans ce cas, tous les paramètres de la session seront repris.

    Je n’ai pas encore pu testé l’outil pour cause de serveur down mais ça semble vraiment bien.

    a+

  2. En ensuite, pour ceux qui trouve putty EXCELLENT mais également un peu LIMITE, je vous invite à essayer Kitty
    http://www.9bis.net/kitty/

    Il s’agit d’un fork a putty sur lequel des options plus ou moins utiles (genre une transparence ;)) ont été ajoutées.

    a+

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *