Utilisez le transfert de port distant pour transférer des données en toute sécurité à partir d'une application client s'exécutant sur le serveur hôte Secure Shell. Pour paramétrer le transfert de port distant, vous devez désigner un port distant 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 distant est le suivant :
Une fois la connexion Secure Shell établie, le serveur 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 le serveur hôte Secure Shell à l'aide du port d'écoute spécifié.
Une application client s'exécutant sur le serveur hôte Secure Shell est configurée pour se connecter au port d'écoute (et non directement au port et au serveur hôte de l'application). Une fois que ce client a établi une connexion, toutes les données sont envoyées au port d'écoute, puis redirigées vers le serveur Secure Shell.
Ce dernier chiffre les données et les envoie en toute sécurité au client Secure Shell via le tunnel SSH.
Le client Secure Shell reçoit les données qu'il déchiffre et redirige vers l'hôte et le port de destination (sur le client hôte Secure Shell) utilisés par l'application serveur.
Les données renvoyées par l'application serveur sont dirigées vers le client Secure Shell qui les chiffre et les envoie en toute sécurité au serveur Secure Shell via le tunnel SSH. Le serveur Secure Shell déchiffre les données et les redirige vers l'application client initiale.
La syntaxe de ligne de commande générale permettant de transférer un port distant est la suivante :
ssh -R listening_port:app_host:hostport user@sshserver
Le diagramme ci-après illustre l'une des configurations possibles de transfert de port distant.
L'application serveur et le client Secure Shell s'exécutent sur l'hôte A. Le serveur Secure Shell et l'application client s'exécutent sur l'hôte B. Toutes les données envoyées au port 2222 de l'hôte B sont transférées vers le port 222 de l'hôte A. Dans cette configuration, toutes les données échangées sont chiffrées. La commande suivante applique cette configuration.
ssh -R 2222:localhost:222 user@HostB