1 votes

Quelle est la différence entre ces deux formes de commandes de tunnel SSH ?

J'ai utilisé ssh -L dans le format suivant depuis longtemps pour connecter un front-end web fonctionnant localement à un service RPC ou HTTP distant.

ssh -L <local port>:localhost:<remote port> <remote host> # Format 1

Récemment, je me suis retrouvé à utiliser un autre type de tunnel pour me connecter à une base de données SQL à laquelle je ne pouvais accéder qu'à partir d'un autre serveur au sein de son réseau privé, formaté comme suit.

ssh -L <local port>:<final target host>:<remote port> <intermediate remote host> # Format 2

Bien que je comprenne les fonctions de ces deux formes, je n'ai pas un bon modèle mental pour savoir comment les deux peuvent fonctionner. Lorsque je ne connaissais que la première, je supposais que ssh -L signifie "passer le trafic sur le port local port a remote port on remote host et redirige ensuite le trafic de réponse vers localhost ." Cela indiquerait que remote host est le destinataire du trafic transféré.

Format 2 et le ssh (en particulier ce passage [1]) me conduisent à penser le contraire. Ces deux pages traitent l'hôte listé entre les " : "s dans le champ -L et non l'argument remote host à la fin de la commande, comme destinataire final du trafic transféré. De plus, le format 2 utilise l'hôte passé à la fin de la commande SSH comme jonction intermédiaire pour le trafic, en plus d'initialiser une session Shell distante.

En résumé, le deuxième type de ssh -L La commande me porte à croire que le premier type ne devrait pas fonctionner comme il le fait. Pourquoi le format 1 peut-il fonctionner comme un moyen de faire suivre le trafic sur local port a remote port si le format 2 traite remote host comme un arrêt intermédiaire pour le trafic ?

[1]

-L [bind_address :]port:remote_socket Chaque fois qu'une connexion est établie sur le port ou le socket local, la connexion est transmise par le canal sécurisé et un co-processeur est installé. canal sécurisé, et une connexion est établie vers l'un des deux ports suivants hôte port hostport ou le socket Unix remote_socket, de la machine distante.

Remarquez que ce passage ne mentionne jamais le nom d'hôte paramètre, passé comme dernier argument de toute commande SSH (par exemple, ssh -L <local port>:<...>:<remote port> <hostname> ).

1voto

jasonlaflair Points 668

Je pense que vous êtes sur le point de comprendre, il y a juste deux ou trois choses à clarifier. Donc, étant donné la commande SSH suivante émise sur un ordinateur client :

ssh -L [bind_address:]port:host:hostport user@server

Cette commande va initier une connexion SSH avec server et établir cette connexion directe. Le site -L demande au client SSH d'ouvrir un port (le numéro du port est le suivant port lié à l'interface réseau du client spécifié par bind_address ) sur l'ordinateur client. Cela permet à un autre logiciel sur le client (comme un navigateur web ou un outil de gestion de base de données) de se connecter à ce port et tout le trafic envoyé passera par le tunnel SSH et sur l'ordinateur du client. server ordinateur, le serveur SSH ouvrira une connexion à host:hostport et envoyer le trafic via cette connexion à la host ordinateur.

Dans votre exemple de format #1, votre serveur web et votre serveur SSH sont le même ordinateur, et donc host est juste localhost ce qui signifie que le localhost du serveur SSH. Dans votre deuxième exemple, vous utilisez le serveur SSH comme intermédiaire pour accéder à un autre ordinateur distant, mais l'essentiel est que le serveur SSH soit capable d'établir la connexion avec cet ordinateur ( host ). Ainsi, en réalité, les deux commandes font la même chose, la seule différence étant que l'une établit la connexion finale à un service sur le même ordinateur que le serveur SSH et que la seconde établit une connexion à un serveur distant.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X