Quelle est la différence de fonctionnalité entre les deux? Je suis un peu confus.
Le transfert local rend un port distant disponible localement.
Le transfert à distance rend un port local accessible à distance.
Mais cette «disponibilité» fonctionnera dans les deux sens ... ou pas?
Par exemple, les éléments suivants (émis par un «hôte» hôte)
ssh -R 1234:localhost:2345 user@work
Cela établira un tunnel sécurisé entre le travail :: 1234 et la maison :: 2345, non?
Si je mets quelque chose à une extrémité, cela sortira à l'autre extrémité.
Mais alors, je peux obtenir la même chose par l'appel suivant de l'hôte 'work':
ssh -L 1234:localhost:2345 user@home
Donc, la seule différence est d'où je l'appelle, n'est-ce pas?
ssh
ssh-tunnel
nandaloo
la source
la source
Réponses:
La principale différence pratique est que si vous connectez 2 ordinateurs A et B et que B se trouve derrière un pare-feu ou un routeur NAT que vous ne contrôlez pas, et qu'il bloque les entrées. Vous êtes assis en A. Vous ne pouvez pas obtenir A pour se connecter à B. Mais B ne bloquera pas les sorties. Vous obtenez donc que B se connecte à A.
- clarification supplémentaire--
Ce qui précède, que l'intervenant a compris .. signifie la principale différence pratique entre le transfert local et distant. ssh -L et ssh -R lorsque vous les utiliseriez. Je ne commentais pas les exemples de commandes spécifiques qu'il a donnés, où il bascule -L et -R, et à quel serveur sshd il se connecte. Mais maintenant, je vais essayer de le commenter. Avec les commandes ssh qu'il a données, du point de vue du client normal et du serveur régulier, il ne semble pas y avoir de différence, car il ne dit pas "ah c'est un client ssh et ceci est un serveur ssh .. "il ne connaît pas ssh, et quel est l'aspect client / serveur de ssh est hors de propos et inconnu du client régulier et du serveur régulier aussi. Ils se soucient juste de qui écoute, et de leur point de vue, la situation est la même. L'ordinateur de travail écoute et sur 1234. Ils ne ' t remarquez que dans un cas, il s'agit d'un serveur ssh sshd.exe, et dans l'autre cas, il s'agit d'un client ssh.exe, ssh. Par ailleurs, où le client ssh est, est considéré comme local.
la source
Oui, si je comprends bien, la redirection de port locale de a vers b doit être identique à la redirection de port distante de b vers a (et vice versa). Un tunnel sortant de a à b (vu de a) doit être égal à un tunnel entrant de a à b (vu de b).
La redirection de port locale crée un tunnel sortant qui peut être utilisé pour amener un ordinateur Internet public sur la machine locale. Un utilisateur local peut accéder à une combinaison hôte: port distant sur un hôte local, car le port donné sur l'hôte local (client) est transmis à l'hôte donné et le port sur le côté distant:
La redirection de port à distance crée un tunnel entrant qui peut être utilisé pour mettre un ordinateur local sur Internet public. Un internaute peut accéder à une certaine combinaison hôte local: port sur un hôte distant. Le port donné sur l'hôte (serveur) distant est transmis à l'hôte et au port donnés du côté local:
la source
0x4a6f4672
signifie?Avec la redirection de port locale, vous (le client) ouvrez un socket d'écoute sur votre ordinateur et connectez votre client de protocole de niveau application à ce socket. La connexion est maintenant transmise via SSH au serveur. Le serveur se connecte à l'hôte distant et tunnelise les données de votre client de protocole vers la destination finale.
Avec la redirection de port à distance, le serveur ouvre un socket d'écoute sur l'hôte du serveur. Certaines applications distantes se connectent à cet hôte et envoient des informations qui sont transférées sur votre ordinateur client. Ici, la connexion est établie vers la destination finale (certains serveurs de protocole de niveau application s'exécutant sur votre ordinateur ou sur votre réseau) et les données sont transférées de l'application distante à la destination finale.
la source
Ceci est mieux compris avec de petits exemples. Dans ces exemples, les connexions sont structurées comme ceci:
Serveur local - (LAN) - Terminal ----- (SSH, généralement via Internet) ----- Point final du tunnel - (LAN) - Machine distante
Vous utilisez la redirection de port locale si vous souhaitez créer un tunnel vers un certain ordinateur / port distant, accessible par le point de terminaison du tunnel auquel vous avez accès ssh. Par conséquent, le port de cette machine distante est également accessible localement sur votre propre terminal, à savoir http: // localhost: terminal_port /.
Cela se fait à l'aide de la syntaxe suivante:
Vous pouvez utiliser la redirection de port à distance si vous souhaitez activer N'IMPORTE QUI (!) À distance, qui est en mesure d'atteindre le port d'écoute du point de terminaison du tunnel pour pouvoir accéder à distance à une ip / port dans votre réseau local. Pour votre serveur local, il semble que la connexion depuis la machine distante soit initiée par le terminal.
La syntaxe est:
la source
La page de manuel de socat clarifie cela très bien. Oui, je sais que ssh et socat sont deux choses complètement différentes - mais la documentation de socat est juste très bonne.
la source