1 votes

Est-ce que je peux utiliser un autre hôte à la place de localhost pour le champ de destination dans le renvoi de port en tunnel inverse SSH?

Je suis en train d'utiliser Putty pour réaliser une redirection de port en tunnel inversé SSH. La plupart des tutoriels m'apprennent à rediriger un port distant vers un port local. Cependant, est-ce logique d'entrer un autre hôte tel que 192.168.1.132:8081 dans le champ Destination?

J'ai essayé de le faire. 192.168.1.132:8081 est un serveur web fonctionnel avec une page de contenu, mais j'ai reçu ERR_EMPTY_RESPONSE lorsque j'ai visité localhost:12345 (j'ai défini le port 12345 comme port source) à partir du périphérique client.


Mes configurations Putty

Configuration du proxy sortant :

Configuration du proxy sortant

Configuration du tunnel (celui en Dynamic est pour la connexion Socks5, veuillez simplement l'ignorer ; celui en R12345 est le tunnel que j'expérimente) :

Configuration du tunnel

Le résultat lorsque j'essaie d'accéder au tunnel depuis la Destination (serveur SSH) :

Le résultat lorsque j'essaie d'accéder au tunnel depuis la Destination (serveur SSH)

Est-ce que quelqu'un peut m'aider?


MISE À JOUR 1

Sur l'appareil sur lequel j'exécute la commande SSH, je sors via un serveur proxy. Est-ce que cela affecte le comportement du tunnel inversé?


MISE À JOUR 2

J'ai essayé de créer le tunnel inversé directement depuis le serveur http. Cependant, sur le serveur SSH, je peux visiter le site web via http://localhost:12345. Configuration et résultat ci-dessous.

De même, le serveur http doit également passer par le proxy http de mon bureau!

Créer un tunnel inversé depuis le serveur http

Et ensuite je peux visiter le serveur http depuis le serveur SSH via localhost:12345

1voto

eigenfield Points 153

Oui!

MAIS vous devez comprendre que cet other_host que vous allez spécifier est dans le contexte du réseau LAN du client ssh. Parce que le client ssh et le serveur ssh peuvent être dans deux réseaux LAN différents.

Par exemple:

ssh -R 1234:192.168.1.69:4321 johnny@terabithia.com
#                 ^
#                 |_ other_host

Ensuite, assurez-vous que 192.168.1.69 est joignable depuis votre extrémité (le client ssh). Il pourrait y avoir une machine avec une adresse IP similaire à 192.168.1.69 à portée de terabithia.com dans le réseau LAN de terabithia, mais ce n'est pas l'other_host auquel il est fait référence dans l'extrait ci-dessus.

Quelques points subtils à noter:

  • Malgré la configuration d'un port tcp d'écoute 1234 à l'intérieur de terabithia.com, ce port n'est pas accessible publiquement sur terabithia.com. Cela signifie que, si vous vérifiez l'ouverture de port avec nc -w 5 -z terabithia.com 12202 && echo "ouvert" || echo "fermé" alors vous verrez le message fermé imprimé car le port est uniquement accessible à l'intérieur de terabithia.com.
  • La commande nc -w 5 -z localhost 1234 réussit toujours à l'intérieur de terabithia.com même s'il n'y a pas de port en écoute dans l'other_host ou même si l'other_host n'existe pas du tout. Dans ces cas, les messages d'erreur sont imprimés dans la console du client ssh.
  • Comme ssh est un protocole de communication orienté connexion basé sur TCP, vous aurez besoin d'autres outils en combinaison tels que nc ou socat pour faire avancer les ports UDP.
  • La principale confusion réside dans l'utilisation de -R versus -L. Le truc pour comprendre facilement ce sujet est de penser que le client ssh et le serveur ssh appartiennent à deux réseaux LAN différents. Le contexte de other_host est pris du LAN du client ssh si -R est utilisé. Sinon, si -L, alors le contexte est pris dans le LAN du serveur ssh.
  • Seul -L peut ouvrir un port accessible publiquement si vous ajoutez le champ adresse de liaison.

0voto

frooyo Points 658

Oui, vous pouvez le faire, mais si vous ne comprenez pas comment cela fonctionne, il est facile de faire des suppositions incorrectes.

Si je me souviens bien (cela fait quelques mois, donc dans le souci de vous donner rapidement une réponse, j'espère que c'est correct...)
un tunnel spécifié avec le port "Local" fera en sorte qu'un logiciel, que j'appellerai un "écouteur", écoute sur la machine exécutant le client SSH. Un port "Remote" fera en sorte qu'un logiciel, que j'appellerai un "écouteur", écoute sur la machine exécutant le serveur SSH.

Comprendre Localhost avec les tunnels:
Maintenant, voici la partie vraiment délicate qui peut facilement vous perturber. Normalement, lorsque vous êtes sur un ordinateur, vous pensez que "localhost" se réfère à cet ordinateur. Mais, euh, non. Il est préférable de penser au champ "destination" comme du texte. Donc, après que l'écouteur reçoit du trafic, l'écouteur transmettra ce trafic à travers le logiciel SSH local, qui cryptera les données et poussera le trafic à travers le tunnel. Le côté qui envoie le trafic fournira également les informations de "destination". Ensuite, le logiciel SSH distant recevra ce trafic, examinera ce que dit la destination, et essayera d'envoyer le trafic là-bas.

Donc, si vous tapez "localhost" sur votre client, le texte "localhost" est envoyé à travers le tunnel SSH, et c'est en fait l'extrémité distante qui résoudra "localhost". Donc, localhost peut facilement se référer à une machine différente de celle sur laquelle vous tapez le nom.

0voto

jrtapsell Points 458

Puis-je utiliser un autre hôte que localhost pour le champ Destination dans le renvoi de port tunnel inversé SSH?

Oui, vous pouvez mettre n'importe quel hôte que vous souhaitez dans le champ hôte de destination.

Définitions de tunnel en ligne de commande

Pour les besoins de cette réponse, j'utiliserai la forme X:Y:Z, qui est la façon dont le client SSH en ligne de commande décrit les tunnels, où ce tunnel :

  • Port Source
    • 1234
  • Destination
    • localhost:4321

serait décrit comme 1234:localhost:4321

Comment fonctionnent les tunnels

Il existe 2 types de tunnels ayant une destination définie :

Tunnels locaux

Pour un tunnel défini comme X:Y:Z, vous pouvez considérer le trafic comme étant envoyé au client au port X, et le serveur se connectant à l'hôte Y sur le port Z, et transférant tout le trafic à travers.

Tunnels distants

Pour un tunnel défini comme X:Y:Z, vous pouvez considérer le trafic comme étant envoyé au serveur au port X, et le client se connectant à l'hôte Y sur le port Z, et transférant tout le trafic à travers.

À quoi peuvent servir les tunnels

Les tunnels locaux peuvent être utilisés pour :

  • Accéder à des services qui ne sont pas accessibles via internet
  • Accéder à des services qui ne peuvent être utilisés que depuis une adresse IP spécifique

Les tunnels distants peuvent être utilisés pour :

  • Permettre à des systèmes distants d'accéder aux ports de votre machine locale sans les exposer à internet
  • Exposer d'autres systèmes de votre réseau via internet

0voto

Bram Points 1

Si vous avez spécifié un proxy, alors dans certains cas vous devez ajouter l'adresse IP locale (192.168.1.132 dans cet exemple) à la liste des "hôtes/adresses IP exclus" dans le panneau des paramètres du proxy. Sinon, la connexion SSH inverse passant par Putty essaiera de se connecter à l'adresse IP locale en utilisant le proxy.

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