Jabber encapsulé par SSH

lundi 4 décembre 2006
par  Laurent RICHARD
popularité : 3%

Vous êtes dans un endroit où les flux Internet sont filtrés ou demandent un accès authentifié payant ou non.

Bref, vous ne voulez pas ou ne pouvez pas passer par la voie "normale".

Le port de SSH est ouvert et vous pouvez vous connecter à un serveur distant qui, lui, a un accès libre à Internet.

Nous allons faire usage des options -L et -R de ssh.

-L : forward de port en local (L pour local)

-R : forward de port sur le serveur distant (R pour remote)

Exemple pour le serveur distant isiarlon.hopto.org :

ssh -L 1234:localhost:4242 -R 4242:jabber.org:5222 isiarlon.hopto.org

Analysons

Nous créeons un tunnel SSH sur le port local (localhost) 1234 vers le port distant 4242. Ensuite nous créons un nouveau tunnel SSH à partir du port distant 4242 (sur isiarlon donc) vers le port 5222 du serveur Jabber (ici Jabber.org).

En résumé, le port distant 4242 joue les intermédiaire entre notre ordinateur et le port de réception des flux Jabber. (Cette technique peut être exportée à d’autres protocoles).

Résultat

Il ne nous teste plus qu’à tester si notre mécanisme fonctionne.

telnet localhost 1234

puis

GET /

Cette technique fonctionne aussi pour faire des tests http, et autres.

Le résultat devrait ressembler à ceci :

<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='none' from='jabber.org' version='1.0'><stream:error><xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>Connection closed by foreign host.

Il ne vous reste plus qu’à configurer votre messagerie instantannée avec le serveur localhost et le port 1234.

Bonne discussion.