Pourquoi ssh -R autorise le port "0" mais ssh -L nécessite un numéro de port?

3

Pourquoi ssh -Rest-il possible d'allouer un port libre en spécifiant "0" alors qu'avec ssh -Lvous devez spécifier un port libre valide?

Je veux que ssh utilise un port libre local pour le trafic distant FWD sans dépendre des hacks des ports libres

Des pages de manuel

-R [adresse_bind:] port: hôte: hostport

Si l'argument du port est '0', le port d'écoute sera alloué dynamiquement sur le serveur et signalé au client lors de l'exécution.

Mais -L ne fournit pas cette possibilité :(

-L [adresse_bind:] port: hôte: hostport

Spécifie que le port donné sur l'hôte local (client) doit être transféré à l'hôte donné et le port côté distant .....

Leo Gallucci
la source

Réponses:

1

SSH se liera au port spécifié par L et écoutera les connexions arbitraires initiées par les clients (et les paquets sur les connexions déjà établies, en les transférant vers les serveurs distants, mais ce n'est pas pertinent dans le contexte de cette question).

Pour établir une connexion, le client doit spécifier le numéro de port sur lequel le serveur écoute ces demandes. Si ce port est sélectionné de manière arbitraire, le client ne le sait pas et ne peut donc pas initier la connexion.

Car -Rce n'est pas un problème car le serveur distant n'acceptera aucune connexion sur ce port autre que celle du serveur local (qui connaît le numéro de port à partir de l' -Rargument).

Une fois la connexion initiale établie, des ports supplémentaires attribués dynamiquement peuvent être négociés (et donc connus) à la fois par le client et le serveur pour le trafic réel.

Dan Cornilescu
la source
Les ports -L et -R sont à l'écoute, votre réponse n'a donc pas de sens, n'est-ce pas?
pedz
@pedz Un processus local n'écoutera jamais un port d'
ordinateur
Avec le -R, le côté distant fait l'écoute. C'est la différence entre -R et -L. -L le côté local écoute. -R le côté distant écoute. Dans les deux cas, le port (si les options le permettent) peut être spécifié ou autorisé à choisir un port intermérique.
pedz
Ah, je vois ce que vous voulez dire - oui, techniquement, ils écoutent tous les paquets. Je vais mettre à jour la réponse.
Dan Cornilescu