Outils personnels

Tunnel SSH via un serveur intermédiaire : Différence entre versions

De wikiGite

(Page créée avec « A partir d'un poste, on veut atteindre un serveur externe, sur un port exotique (222, 81, 444, ...) ou non (25, 443, ...) à priori fermé en sortie par un proxy. Le seul po... »)
 
m (La syntaxe :)
Ligne 6 : Ligne 6 :
 
  %ssh -C -N -f -L port-local:ip-du-serveur-final:port-du-serveur-cible user@serveur-intermediaire
 
  %ssh -C -N -f -L port-local:ip-du-serveur-final:port-du-serveur-cible user@serveur-intermediaire
 
Un tunnel est ouvert entre le poste local et le serveur intermédiaire sur "port-local" (exemple : 80). Lorsque "serveur-intermédiaire" reçoit cette requête, il la redirige vers "port-du-serveur-cible" sur "serveur-cible". (évidemment, il ne faut pas que "port-local" soit utilisé sur "serveur-intermédiaire", sinon ce dernier refusera de le réutiliser).
 
Un tunnel est ouvert entre le poste local et le serveur intermédiaire sur "port-local" (exemple : 80). Lorsque "serveur-intermédiaire" reçoit cette requête, il la redirige vers "port-du-serveur-cible" sur "serveur-cible". (évidemment, il ne faut pas que "port-local" soit utilisé sur "serveur-intermédiaire", sinon ce dernier refusera de le réutiliser).
 +
 
On accède alors à serveur-cible en utilisant "localhost" et "port-local"
 
On accède alors à serveur-cible en utilisant "localhost" et "port-local"
  

Version du 2 décembre 2010 à 17:45

A partir d'un poste, on veut atteindre un serveur externe, sur un port exotique (222, 81, 444, ...) ou non (25, 443, ...) à priori fermé en sortie par un proxy.

Le seul port disponible est, par exemple, le 80 (HTTP).

La syntaxe :

%ssh -C -N -f -L port-local:ip-du-serveur-final:port-du-serveur-cible user@serveur-intermediaire

Un tunnel est ouvert entre le poste local et le serveur intermédiaire sur "port-local" (exemple : 80). Lorsque "serveur-intermédiaire" reçoit cette requête, il la redirige vers "port-du-serveur-cible" sur "serveur-cible". (évidemment, il ne faut pas que "port-local" soit utilisé sur "serveur-intermédiaire", sinon ce dernier refusera de le réutiliser).

On accède alors à serveur-cible en utilisant "localhost" et "port-local"

Exemples

Si on veut atteindre le port 443 (HTTPS) d'un serveur-cible, en passant par le port 80 :

ssh -C -N -f -L 80:www.serveur-cible.tld:443 user@serveur-intermediaire

"user" doit avoir le droit de se connecter sur serveur-intermediaire. Dans un navigateur, l'URL

https://localhost:80

accèdera par le tunnel au HTTPS (443) de serveur-cible.


Autre exemple : on veut ouvrir une connexion RDP (3389) vers un serveur qui n'autorise qu'une seule adresse IP en entrée, celle d'un serveur linux, et pas celle du poste qui lancera le client RDP.

ssh -C -N -f -L 3389:serveur-cible:3389 user@serveur-intermediaire

"serveur cible" recevra une requête 3389 (RDP) provenant de "serveur-intermediaire" dont l'IP est autorisée. Dans le client RDP, en mettant "localhost" comme nom de serveur, on accède au bureau à distance ou à TSE de serveur-cible, par le tunnel.