Tunnel ssh : ssh -L (local) et ssh -R (remote) en bref
Geek
Par djib le samedi 24 février 2007, 17:02 - Lien permanent
Cet article n'a pas pour but de vous expliquer comment faire un tunnel SSH, mais plutôt de clarifier le fonctionnement d'un tunnel en mode local et en mode distant.
Je l'ai rédigé tel que j'aurais souhaité le lire il y a quelque mois. Surtout n'hésitez pas à signaler toute erreur.

SSH Local
Syntaxe : localhost% ssh -L port-local:adresse:port serveur-ssh
Le SSH local permet de transmettre les demandes locales (sur le port port-local de localhost) vers le serveur-ssh qui les envoies sur le port port de l'adresse adresse. (L'adresse adresse doit donc être accessible par serveur-ssh).

SSH Distant
Syntaxe : localhost% ssh -R port-distant:adresse:port serveur-ssh
Le SSH distant permet de transmettre les demandes distantes (sur le port port-distant de serveur-ssh) vers localhost qui les envoies sur le port port de l'adresse adresse. (L'adresse adresse doit donc être accessible par localhost).
Voilà, j'espère que vous n'hésiterez plus jamais entre -L et -R.
En résumé le mode local vous permet d'accéder à un serveur sur un réseau privé tandis que le mode distant (remote) permet d'ouvrir l'accès à un serveur sur un réseau privé. Les deux notions ne sont pas tout à fait l'inverse l'une de l'autre !!! (seul Localhost et Serveur SSH sont inversés).



Commentaires
Bonjour,
faut-il configurer le firewall pour etablir le tunnel ?
aussi, le tunnel ssh, etabli dans un sens, peut-il etre utilisé pour du vnc, mais dans l'autre sens ?
Cordialement
Aldo
Un tunnel ne fonctionne que dans un sens (enfin je crois). Tu peux te tourner vers d'autres solutions comme le VPN si tu veux (Réseau Privé Virtuel).
Sinon pour le pare-feu, oui, tu as besoin de le configurer.
pourtant avec logmein par exemple, on peut traverser un firewall, sans configurer de redirection de port...
j'aimerai realiser la meme chose sous linux
Je ne connais pas du tout logmein, mais si ton firewall bloque certains ports en entrée, comme le 22 par exemple, tu ne pourras pas te connecter en SSH. C'est l'intérêt d'un firewall.
vas voir logmein alors, tu seras impressionné
les ports sont ouverts en sortie
tu peux faire du vnc sans ouvrir de port
Bonjour,
Tu as forcément au moins un port ouvert en entrée sinon tu ne pourrais même pas contacter le PC derrière le firewall.
le port 80, mais il n'est pas redirigé vers l'ordi en question
Aldo, je ne sais pas si on parle de la même chose. Est-ce en entrée ou en sortie que tu ouvres le port 80 ? Si c'est en entrée c'est que tu as en théorie un serveur web.
Maintenant peut-être que tu bloques que les ports de 0 à 1024 par exemple (80 excepté) alors que logmein utilise le port 2200.
Sinon cela me semble impossible.
Tu peu utiliser ssh avec n'importe quel port, il suffit de le specifier; sinon, c'est 22 par defaut.
A noter que SSH permet aussi de faire du partage de fichier et du partage de bureau à distance.
Du partage de bureau ? Je ne pense pas...
Tu peux lancer une application distante en local, mais ça ne va pas plus loin il me semble.
Merci pour cette présentation claire et limpide !
@djib(10) : c’est possible en passant par x11vnc et xitghtvncviewer comme indiqué sur cette page :
http://zigazou.wordpress.com/2009/0...
De rien Zigazou, et merci pour le lien. Je me permets juste de re-confirmer que SSH (à ma connaissance) ne permet pas le partage de bureau. Je ne dis pas qu'on ne peut pas passer par d'autres applications par l'intermédiaire d'SSH, mais à ce moment, on peut affirmer faire à peu près n'importe quoi avec SSH. Sur une conf standard qui n'a qu'un serveur SSH, tu ne pourras pas appliquer ton astuce.
>Du partage de bureau ? Je ne pense pas...
>Je ne dis pas qu'on ne peut pas passer par d'autres applications par l'intermédiaire d'SSH, mais à ce moment, on peut affirmer faire à peu près n'importe quoi avec SSH.
Exactement. On peut citer NX (pour les lecteurs suivants de ce post via Google) qui permet de passer à très haute vitesse un bureau distant.
Sinon, ssh -Y permet de récupérer l'affichage d'une appli distante.
ssh -Y? Tu veux diressh -Xnon ?En tous les cas, merci pour NX, je ne connaissais pas, mais ça vaut visiblement le coup de se pencher dessus. Si je trouve tu temps j'installerai tout ça…
Pour ceux que cela interesse, ssh permet également de créer des tunnels VPN, voici quelques ressources sur le sujet:
VPN avec SSH:
http://www.libre-astux.info/?p=81
Redirections avec SSH:
http://www.libre-astux.info/?p=63
Intéressant, merci.
quelques précision sur SSH
On peut executer des application à distance, voir initialiser un bureau complet à distance.
Mais pour cela il faut activer la redirection X11 qui se trouve sur le port 0 du server ssh.
Il faut l'activer à la fois
"ForwardX11 yes")
exemple sur Ubuntu : il faut taper :
Lancer un bureau complet est très gourmand en bande passante. Le protocole X11 qui emprunte le tunnel SSH n'est pas forcément très optimisé.
De plus il a parfois la fâcheuse tendance de planter.
A n'utiliser que pour lancer des application légère
pour éxécuter un programme, il faut taper sur la console :
"./nom_du_programme" si le programme à éxécuter est dans le dossier de travail "nom_du_programme" si le programme est dans les variables d'environnements (ex /bin ou /usr/bin)Ah j'avais oublié,
Quelqu'un se demandait s'il était possible d'ouvrir un serveur comme par exemple du VNC sur un client SSH.
La réponse est OUI. C'est le but de l'option "-R" (remote) que se soit sur PUTTY ou le programme SSH (Linux).
Syntaxe :
LOCAL : -L port_du_client_à_rediriger:ip_cible:port_cible REMOTE : -R port_du_server_à_rediriger:ip_cible:port_cible DYNAMIQUE : -D port_à_redirigerpour un Tunnel LOCAL :
-L port_du_client_à_rediriger:ip_cible:port_cible
===> le CLIENT SSH peut se connecter au serveur (ip_cible,port_cible) en tant que CLIENT
pour un tunnel REMOTE :
-R port_du_serveur_à_rediriger:ip_cible:port_cible
port_du_serveur_à_rediriger
===> le SERVEUR SSH peut se connecter au serveur (ip_cible,port_cible) en tant que CLIENT
pour un tunnel dynamique
-D port_à_rediriger
au port port_à_rediriger.
==>PERMET D'ACCEDER A TOUTES LES IP ET TOUS LES PORT DANS UN SEUL TUNNEL. ==> DONC DE
SURFER SUR INTERNET
"127.0.0.1:port_à_rediriger"
J'espère que je n'ai pas fait d'erreur et que ca a pu aider quelqu'un
Intéressant cette histoire de proxy SOCKS. Je testerai à l'occasion.
Merci pour ta contribution.
Excellent tutorial! J'ai passé la journée d'hier à lire des schémas peu explicites et à m'embrouiller avec les concepts de ports et d'adresse. La première commande que j'ai testée après la lecture de cette page a fonctionné. Merci!
Ah ben ça ça fait plaisir
Merci.