Les liens interressants (ou pas) de la semaine:
A propos
- About me: Geoffrey Bachelet
- Profile LinkedIn
To content | To menu | To search
Wednesday 1 November 2006
By Geoffrey on Wednesday 1 November 2006, 16:10 - Geekeries
Les liens interressants (ou pas) de la semaine:
Friday 20 October 2006
By Geoffrey on Friday 20 October 2006, 20:06 - Geekeries
Il arrive des fois où on aimerait pouvoir relier directment deux machines appartenant a deux réseaux distincts. C'est par exemple mon cas quand j'ai besoin (envie on va dire) d'accéder à ma machine du boulot depuis une machine non connectée au VPN. Dans ce genre de cas, il existe en général une machine qui possède des interfaces susceptibles d'accéder à chacune des machines (le concentrateur VPN par exemple). Nous appellerons cette machine relay, car elle servira de relai au tunnel. Pour éviter les sempiternelles appellations A et B qui embrouillent plus qu'autre chose, les machines s'appelleront startpoint pour la machine sur laquelle on a la main et endpoint pour la machine à laquelle on souhaite accéder.
Postulats de base:
relay possède un serveur SSH qui tournestartpoint possède un client SSH capable de créer un tunnel (ssh, par exemple)relay est accessible depuis startpoint et peut se connecter à endpointBien, allons y franchement, la commande, à executer depuis startpoint, permettant de créer un tunnel SSH entre startpoint et endpoint est la suivante:
ssh -L 2222:endpoint:22 relay
Qu'avons nous fait là ? L'option -L de SSH sert à binder un port de la machine locale (startpoint donc), à un autre port (ou le même) de la machine distante (endpoint). Ici, on associe le port local 2222 (22 étant déjà pris par mon serveur SSH, mais on pourrait utiliser le port 22 si aucun serveur ne tournait, à la différence près qu'il faudrait lancer la commande en root pour pouvoir binder un port inférieur à 1024 (c'est comme ça)) au port 22 de endpoint, c'est à dire le serveur SSH. Il nous est dès lors possible d'ouvrir une connection SSH sur endpoint en se connectant au port 2222 de notre machine locale:
ssh -p 2222 localhost
Magique non ? Bien sur, il est possible de forwarder n'importe quel port au travers du tunnel:
ssh -L 8080:endpoint:80 relay
Faire pointer votre navigateur sur http://localhost:8080/ vous ammenera sur le serveur web de endpoint.
Mais un tunnel ne se limite pas à joindre deux machines d'un réseau différents. On peut également imaginer un tunnel entre deux machines dans l'unique but de sécuriser une transmission, par exemple, des échanges de mails. Imaginons que votre serveur mail preferré, pop.example.com, ne propose pas de connection POP sécurisée. Vous pouvez remédier à ce manque flagrant de confidentialité en créant un tunnel SSH:
ssh -L 1100:localhost:110 pop.example.com
Bien sur, ce cas de figure nécessite d'avoir un compte permettant une connexion SSH sur pop.example.com, ce qui n'est pas forcément le cas. Pour remédier a ceci, deux solutions: utiliser un relay qui possède un serveur SSH, ou installer un serveur SSH sur startpoint pour s'en servir comme relai (sudo apt-get install openssh-server sur toute distribution debian-like qui se respecte):
ssh -L 1100:pop.example.com:110 localhost
And voila, il n'y a plus qu'a indiquer à notre client mail que le pop se situe sur localhost au port 1100, et le tour est joué :-)