Double tunnel SSH

Imaginons le scénario suivant: Vous êtes derrière un firewall et vous voulez permettre à un utilisateur externe de prendre le contrôle ou de visualiser votre écran avec VNC. Malheureusement, vous n'avez pas accès à ce firewall, et vous ne pouvez donc pas forwarder un port vers le port 5900 de votre machine.

Heureusement, vous possédez un compte sur un serveur se trouvant sur Internet. Vous pouvez utiliser ce serveur comme serveur relais en créant un tunnel inversé grâce à ssh de la façon suivante:

 ssh -R 1234:localhost:5900 utilisateur@serveur.sur.le.net

Ainsi, les personnes se connectant au port 1234 du serveur.sur.le.net seront redirigées vers le port 5900 de votre machine. Cette astuce ne fonctionne que si l'option GatewayPorts est activée sur le serveur SSH du serveur.sur.le.net. Cette option autorise le serveur SSH à ouvrir le port 1234 sur toutes les interfaces du système. Si cette option n'est pas activée, utiliser le paramètre -g ou spécifier une interface dans la commande (ssh -g -R 123.234.123.234:1234:localhost:5900 utilisateur@serveur.sur.le.net) ne servira à rien car l'option -g ne fonctionne que pour les tunnels établis avec l'option -L.

Pour résoudre ce problème, il est possible d'établir un second tunnel passant par le premier tunnel:

Lancer cette commande sur le poste local:

ssh -R 1235:localhost:22 utilisateur@serveur.sur.le.net

 

Puis lancer cette commande sur serveur.sur.le.net:

ssh -g -L 1234:localhost:5900 utilisateur@localhost -p 1235

 

Ainsi, un second tunnel passant par le premier tunnel permet de rediriger le port 1234 sur le serveur public vers le port 5900 du poste local. Afin d'éviter d'encrypter les communications deux fois, le deuxième tunnel peut être établi avec l'option -c none pour désactiver l'encryption:

poste_local $ ssh -R 1235:localhost:22 utilisateur@serveur.sur.le.net
utilisateur@serveur.sur.le.net $ ssh -c none -g -L 1234:localhost:5900 utilisateur@localhost -p 1235

 

Comments

Excelent !

Le miracle d'internet et des logiciels libres :D

Le cas qui vient de se produire : Ma femme et son eeePC connectée à plus de 800km d'ici sur le réseau d'une résidence de vacances (auquel bien sûr je n'ai pas accès) à besoin que j'agisse sur sa machine.

Je me dis "mais si elle arrive à se connecter en ssh à ma machine peut-être qu'il y a un moyen pour que je la vois aussi du coup", googling sur "double tunnel ssh", tu arrives en deuxième position avec cet excellent article.

Résumé : Problème -> Solution en moins de trois minutes montre en mains. Je pensais que c'était possible tu me montres que c'est enfantin.

Encore une fois, merci beaucoup à toi et à tous ceux qui sont derrière ssh !

Très bon article

C'est en effet une bonne solution, facile à mettre en œuvre mais pour aller un peu plus loin, il est possible de généraliser l'accès à une machine via ssh en créant un tunnel ssh.
Il faut bien sûr disposer d'un poste accessible et configuré correctement sur Internet.

Pour plus d'explications et la méthode à suivre:

http://www.libre-astux.info/?p=81

il y a des solutions beaucoup plus simples

Mais c'est moins fun ...

Teamviewer permet de prendre la main sur un poste sans soucis (il lui faut une connexion internet tout de même).

Sauf que...

Malheureusement Teamviewer n'est ni libre, ni disponible pour Linux.  La méthode décrite dans ce post a l'avantage de ne nécessiter l'installation d'aucun logiciel supplémentaire et de ne pas avoir à changer la configuration.

Quoi d'autre?

J'utilisais ce genre d'astuce ssh (qui nécessite un serveur tiers tout de même), jusqu'à ce que je découvre hamachi (version linux existante), qui rend archi facile l'installation d'un vpn, après, Vnc, ssh, smb et autre fonctionne sans se poser de souci de firewall, de port forwarding etc..

Magique :)

Expliqué très simplement, vraiment nickel comme astuce :)
ça me permettra notamment d’accéder au réseau de ma fac, donc à mes documents de travail même depuis l'extérieur. Sympa ^^

Écrire un nouveau commentaire

The content of this field is kept private and will not be shown publicly.
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.

© 2009-2011 Linalis.com | Tous les articles sont sous licence CC by-sa | login

Formations Drupal | Formations Pentaho | Formations LPI | Contactez-nous