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!
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
.
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.
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.
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.
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.