OrdinAide

Tunnel ssh

Un "tunnel ssh" est une configuration de plusieurs fichiers entre un ordinateur distant et un serveur par exemple de courriers électroniques (mais on peut le faire pour différents types de services), basée sur l'utilisation de la commande UNIX ssh, de façon à connecter les deux ordinateurs sur certains ports. Il est utile d'en mettre un en place si, par exemple, vous êtes sur votre poste client et si vous voulez accéder aux serveurs proposant les services pop, imap, smtp, squid (le service squid est le nom technique du proxy cache web), alors que ces serveurs sont protégés par des filtres qui imposent que vous ne puissiez normalement y accéder que lorsque vous êtes "sur place" (dans les murs d'un établissement désservi par ces services).

L'explication du site http://www.institut.math.jussieu.fr/informatique/tunnel/tunnel_ssh.html est claire et renvoie sur des liens plus détaillés.

http://projects.tynsoe.org/fr/stm/doc.php fournit des explications en anglais et un logiciel pour Mac OS 10.5 (voir dans la sélection des logiciels indispensables pour Mac Logiciels bien/pour Mac.

Dans la pratique, comme il y a plusieurs commandes à exécuter à la suite, on fait souvent un script pour programmer un liste de ces commandes, de façon à pouvoir demander son exécution d'un seul coup (voir Travail distant/tunnel ssh/Scripts)

Par exemple pour la relève du courrier électronique en méthode POP, initialement sur le port 110 sur le serveur de courrier électronique, si on veut définir 1110 comme le port que le logiciel de courrier électronique doit consulter, la commande utile est
ssh -N -L 50110:[cible]:110 [bastion]
où le bastion est le serveur SSH, ouvert seulement sur le port 22, et la cible est le DNS du serveur de courrier électronique, dont la valeur est résolvable par le bastion.
Si on [cible] = localhost, c'est le localhost de [bastion] (donc généralement [bastion] lui-même).

Si de plus,on veut utiliser une clé RSA privée (voir Travail distant/tunnel ssh/svn-et-ssh pour la génération des fichiers clé) mémorisée dans une fichier (par exemple id_rsa.pub mémorisé sur l'ordinateur client sous /User/[login]/.ssh/id_rsa.pub), alors on peut rajouter l'option -i dans la commande ssh précédente :

ssh -i [privatekey-file] -N -L 50110:[cible]:110 [bastion]

Par défaut, le fichier de clé publique est id_rsa.pub mais il peut avoir un autre nom. L'idée est de n'avoir qu'une seule clé privée en tout (la même partout).

Les autres options utilisés dans le script proposé sur ce site sont :
-C qui active la compression de toutes les données avec l'algorithme de gzip,
-f pour que l'exécution de la commande ssh bascule en arrière plan.