Qu'est-ce que le transfert de port ssh et quelle est la différence entre le transfert de port ssh local et distant

Je me sens confus au sujet de la transmission de port ssh et la différence entre le transfert de port local et distant ssh. Pourriez-vous les expliquer en détail et avec des exemples? Merci!

J'ai dessiné quelques esquisses

tunnel ssh à partir de locaux


tunnel ssh à partir de la télécommande

introduction

  1. local: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHost signifie: se connecter avec ssh à connectToHost , et transférer toutes les tentatives de sourcePort au port onPort local vers port onPort sur la machine appelée forwardToHost , accessible depuis la machine connectToHost .

  2. remote: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHost signifie: se connecter avec ssh à connectToHost , et transférer toutes les tentatives de sourcePort au port onPort distant vers port onPort sur la machine appelée forwardToHost , qui peut être atteint à partir de votre machine locale.

Exemples

Exemple pour 1

 ssh -L 80:localhost:80 SUPERSERVER 

Vous spécifiez qu'une connection établie au port local 80 doit être transmise au port 80 sur SUPERSERVER. Cela signifie que si quelqu'un se connecte à votre ordinateur avec un browser Web, il obtient la réponse du server Web s'exécutant sur SUPERSERVER. Vous, sur votre machine locale, n'avez pas de server Web en cours d'exécution.

Exemple pour 2

 ssh -R 80:localhost:80 tinyserver 

Vous spécifiez qu'une connection établie sur le port 80 de tinyserver doit être transférée sur le port 80 de votre machine locale. Cela signifie que si quelqu'un se connecte au server petit et lent avec un browser Web, il obtient la réponse du server Web en cours d'exécution sur votre machine locale. Le tinyserver, qui n'a pas assez d'espace disque pour le grand site web, n'a pas de server web en cours d'exécution. Mais les gens qui se connectent à tinyserver le pensent.

Plus d'exemples

D'autres choses pourraient être: La machine puissante a cinq servers Web fonctionnant sur cinq ports différents. Si un user se connecte à l'un des cinq servers sur le port 80 avec son browser Web, la requête est redirigée vers le server Web correspondant s'exécutant sur la machine puissante. Ce serait

 ssh -R 80:localhost:30180 tinyserver1 ssh -R 80:localhost:30280 tinyserver2 etc. 

Ou peut-être que votre machine n'est que la connection entre les puissants et les petits servers. Alors ce serait (pour l'un des servers qui jouent leurs propres servers web):

 ssh -R 80:SUPERSERVER:30180 tinyserver1 ssh -R 80:SUPERSERVER:30280 tinyserver2 etc 

Transfert de port local

ssh crée un port local supplémentaire qu'il transmettra à un port du système distant.

Exemple

 ssh -L 8080:127.0.0.1:80 user@webserver 

Puis dans votre browser sur l'URL locale d'utilisation http://localhost:8080/

il se connectera au port 8080 des machines locales, que ssh transmettra à ssh distant, et il fera alors une request à 127.0.0.1:80 . La note 127.0.0.1 est en fait l'hôte local du server distant, mais il peut s'agir d'un hôte / IP disponible sur le réseau de la machine distante.

Avance à distance

Demande à ssh de créer un port d'écoute sur la machine distante qu'il va renvoyer (Reverse) au ssh local pour continuer.

 ssh -R 10123:127.0.0.1:123 user@webserver 

Ainsi, après ssh se connecte à webserver, le ssh distant crée et lsitens sur un port 10123. Un process sur le server Web se connectant à 10123, ssh va le récupérer et le renvoyer au ssh de la machine locale, qui l'envoie à 127.0.01 : 123 ports.