1 votes

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

Je suis en train d'utiliser Putty pour réaliser le Transfert de Port en Tunnels Inversés SSH. La plupart des tutoriels m'apprennent à transférer un port distant vers un port local. Cependant, puis-je savoir s'il est 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 en fonctionnement avec une page de contenu, mais j'ai obtenu le code d'erreur ERR_EMPTY_RESPONSE lorsque j'ai visité localhost:12345 (j'ai défini le port 12345 comme le port source) depuis le dispositif client.


Mes Configurations Putty

Configuration du Proxy Sortant :

Configuration du Proxy Sortant

Configuration de Tunnelling (celui en mode Dynamique est pour la connexion Socks5, veuillez juste l'ignorer ; celui en mode R12345 est le tunnel sur lequel je travaille) :

Configuration de Tunnelling

Le résultat de ma tentative d'accéder au tunnel depuis la Destination (Serveur SSH) :

Le résultat de ma tentative d'accéder au tunnel depuis la Destination (Serveur SSH)

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


MISE À JOUR 1

Sur le dispositif où 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 par http://localhost:12345. Paramètres et résultats ci-dessous.

De même, le serveur http doit également sortir via 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 spécifierez se trouve dans le contexte du réseau LAN du client ssh. Parce que le client ssh et le serveur ssh pourraient être dans deux réseaux LAN différents.

Par exemple:

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

Alors, assurez-vous que 192.168.1.69 est joignable depuis votre côté (le client ssh). Il pourrait y avoir une machine avec une adresse ip similaire à 192.168.1.69 à la portée de terabithia.com dans le réseau LAN de terabithia, mais ce n'est pas l'other_host qui est mentionné dans l'extrait ci-dessus.

Quelques points subtils à noter:

  • Malgré que vous configuriez un port tcp d'écoute 1234 à l'intérieur de terabithia.com, il n'est pas accessible publiquement dans terabithia.com. Cela signifie que si vous vérifiez l'ouverture du port avec nc -w 5 -z terabithia.com 12202 && echo "ouvrez" || echo "fermé", alors vous verrez le message fermé affiché car le port est seulement accessible à l'intérieur de terabithia.com.
  • La commande nc -w 5 -z localhost 1234 aboutit toujours à l'intérieur de terabithia.com même s'il n'y a pas de port d'é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 affiché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 transférer des ports UDP.
  • Deux confusions majeures sont 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 c'est -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 de liaison d'adresse.

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 plusieurs mois, donc dans l'intérêt de vous donner rapidement une réponse, j'espère dire la bonne chose...)
un tunnel spécifié avec le port "Local" fera en sorte qu'un logiciel, que j'appellerai un "listener", écoute sur la machine exécutant le client SSH. Un port "Remote" fera en sorte qu'un logiciel, que j'appellerai un "listener", é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 dérouter. Normalement, lorsque vous êtes sur un ordinateur, vous pensez que "localhost" fait référence à cet ordinateur. Mais, euh, non. Il vaut mieux penser au champ "destination" comme du texte. Donc après que le listener reçoit du trafic, il 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 l'information de "destination". Ensuite, le logiciel SSH distant recevra ce trafic, regardera 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 réalité l'extrémité distante qui résoudra "localhost". Ainsi, localhost peut facilement faire référence à une machine différente de celle sur laquelle vous tapez le nom.

0voto

jrtapsell Points 458

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

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

Définitions des tunnels en ligne de commande

Pour les besoins de cette réponse, j'utiliserai la forme X:Y:Z, c'est ainsi que 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 y a 2 types de tunnels avec une destination définie :

Tunnels locaux

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

Tunnels distants

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

À 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 à des ports sur 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