Utilisez le transfert de port local pour transférer des données de façon sécurisée à partir d'une application client s'exécutant sur le même ordinateur que le client Secure Shell. Pour paramétrer le transfert de port local, vous devez désigner un port local arbitraire à utiliser pour le transfert des données, ainsi qu'un hôte et un port de destination pour la réception des données. Le principe du transfert de port local est le suivant :
Une fois la connexion Secure Shell établie, le client Secure Shell ouvre un socket Combinaison d'un nom d'hôte (adresse IP ou nom DNS) et d'un numéro de port qui crée un identifiant unique que l'application client utilise comme destination finale des communications. d'écoute sur l'ordinateur local (celui sur lequel le client Secure Shell s'exécute) avec le port local désigné. En règle générale, ce socket n'est disponible que pour les applications s'exécutant sur l'hôte client Secure Shell.
Le paramétrage des passerelles définit si les ports transférés localement sont accessibles aux applications distantes. Par défaut, l'utilisation de passerelles est désactivée. Le client utilise une adresse de bouclage (« localhost » ou 127.0.0.1) lorsqu'il ouvre un socket pour le transfert de port local. Ceci empêche les applications s'exécutant sur d'autres ordinateurs de se connecter au port transféré. Si vous activez l'utilisation de passerelles, une application client distante peut ouvrir un socket utilisant l'adresse Ethernet du client Secure Shell (par exemple, une adresse IP, une URL ou un nom DNS). Par exemple, un client Secure Shell s'exécutant sur acme.com peut être configuré pour transférer le port 8088. Si les passerelles sont désactivées, le socket transféré est localhost:8088. Si les passerelles sont activées, le socket transféré est acme.com:8088.
ATTENTION :L'activation des passerelles réduit la sécurité de votre client hôte, de votre réseau et de votre connexion parce que les applications distantes peuvent être autorisées à utiliser sans authentification le port transféré sur le système.
Une application client est configurée pour se connecter au port transféré (et non directement à l'hôte et au port du serveur d'application). Lorsque le client établit une connexion, toutes les données sont envoyées au port d'écoute, puis redirigées vers le client Secure Shell.
Ce dernier chiffre les données et les envoie au serveur Secure Shell par le canal Secure Shell.
Le serveur Secure Shell reçoit les données, les déchiffre et les redirige vers l'hôte et le port de destination utilisés par le serveur d'application.
REMARQUE :Si l'hôte et le port de destination finale ne sont pas sur le serveur hôte Secure Shell, les données sont échangées en mode non chiffré entre l'hôte Secure Shell et l'application serveur hôte.
Les données renvoyées par le serveur d'application sont dirigées vers le serveur Secure Shell qui les chiffre et les envoie en toute sécurité au client Secure Shell via le tunnel SSH. Le client Secure Shell déchiffre les données et les redirige vers le client d'application initial.
La syntaxe de ligne de commande générale pour le transfert de port local est la suivante :
ssh -L listening_port:app_host:hostport user@sshserver
Les diagrammes suivants illustrent deux méthodes d'application.
Dans la configuration ci-dessus, l'application client et le client Secure Shell s'exécutent sur l'hôte A. Le serveur Secure Shell et l'application serveur s'exécutent sur l'hôte B. Toutes les données envoyées au port 2222 de l'hôte A sont transférées vers le port 222 de l'hôte B. Dans cette configuration, toutes les données échangées sont chiffrées. La commande suivante (dans laquelle localhost identifie l'adresse de bouclage sur l'hôte B) applique cette configuration :
ssh -L 2222:localhost:222 user@HostB
Le diagramme suivant illustre le transfert de port local vers un hôte tiers. Dans cette configuration, l'application serveur s'exécute sur un hôte autre que le serveur Secure Shell. Toutes les données envoyées au port 2222 de l'hôte A sont transférées vers le port 222 de l'hôte C.
La commande suivante applique cette configuration :
ssh -L 2222:HostC:222 user@HostB
REMARQUE :Les données échangées entre l'hôte B et l'hôte C ne sont pas chiffrées.