explication de tunneling ssh

8

J'ai une question concernant le tunneling ssh. J'ai lu cet article

Je voudrais faire fonctionner le transfert X et exécuter certaines applications X à la maison et les afficher sur un système distant:

 ssh -X -R 5555:localhost:22 [email protected] -N

Sur la télécommande:

 ssh -X -p 5555 [email protected]

Puis à la maison:

 //configure sshd to listen on 5555
 ssh [email protected]
 //here run some app

Cela devrait-il fonctionner?

wawa235
la source
Veuillez l'essayer au lieu de demander si cela fonctionnerait.
Wutaz
Oui, il est toujours préférable d'essayer les choses et si cela ne fonctionne pas, demandez pourquoi.
slm
on dirait que vous le faites à l'envers .. le "normal" est de fonctionner dans la télécommande et de l'afficher localement. si vous souhaitez afficher sur une télécommande, parlez-nous de votre réseau, cela peut être simple et même pas besoin de ssh
Skaperen

Réponses:

9

J'ai dessiné quelques croquis

La machine sur laquelle la commande ssh tunnel est saisie est appelée «votre hôte» .

tunnel ssh à partir du local


tunnel ssh à partir d'une télécommande

introduction

  1. local: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostsignifie: connectez-vous avec ssh à connectToHost, et transférez toutes les tentatives de connexion au port local sur la machine appelée , accessible depuis la machine.sourcePortonPortforwardToHostconnectToHost

  2. éloigné: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostsignifie: connectez-vous avec ssh à connectToHostet transférez toutes les tentatives de connexion au port distant sourcePort vers onPortsur la machine appelée forwardToHost, accessible depuis votre machine locale.

Votre exemple

Eh bien, si vous souhaitez uniquement faire fonctionner le transfert X, c'est-à-dire exécuter certaines applications X sur l'ordinateur à la maison et les afficher sur un système distant (appelons-le un ordinateur de travail, car il peut être sur votre lieu de travail), alors vous pouvez pas besoin du tout d'un tunnel ssh.

Démarrer des applications X sans tunnel

Pouvez-vous simplement passer de l'ordinateur de travail à votre ordinateur personnel? Si c'est le cas, lorsque vous êtes assis sur l'ordinateur de travail et que vous souhaitez démarrer une application X qui s'exécute sur votre ordinateur personnel mais s'affiche sur votre ordinateur de travail , vous devez taper (sur l'ordinateur de travail):

ssh -X homeuser @ homecomputer firefox

Cela démarrera Firefox sur votre ordinateur personnel et l'affichera sur la machine où vous avez tapé cette commande, par exemple votre ordinateur de travail.

L'ordinateur caché a besoin d'un tunnel

Ceci est l' image numéro 3 de mes croquis. Plusieurs fois, l'ordinateur domestique n'est pas accessible directement depuis Internet, car il est derrière un pare-feu ou caché via NAT (à partir d'un routeur). Ensuite, vous pouvez utiliser un tunnel.

Sur votre ordinateur personnel bleu ( yourhost), vous tapez:

ssh -R 5555:localhost:22 remoteuser@remotehost

5555est le port vert et 22ist le port rose dans l'image.

Si vous êtes maintenant au travail, sur le remotehost, et que vous vous connectez au port vert 5555, votre connexion est tunnelée / transmise au port rose de votre ordinateur personnel localhost(c'est-à-dire votre ordinateur domestique bleu lui-même). Vous devez maintenant taper sur votre ordinateur de travail:

ssh -X -p 5555 homeuser@localhost firefox

qui démarrera Firefox sur votre ordinateur personnel ( yourhost) et l'affichera sur la machine sur laquelle vous avez tapé cette commande, par exemple votre ordinateur professionnel ( remotehost).

erik
la source
1

Vous devez spécifier l'affichage distant que vous souhaitez transférer. Sur la télécommande:

DISPLAY=:0 ssh -X -p 5555 user@localhost # not sure why you used 192.168.1.2

Pour faire défiler l' :0affichage.

Ensuite, dans ce shell (qui fonctionne maintenant sur votre machine domestique), exécutez:

echo "$DISPLAY"

pour savoir ce qu'est l'affichage renvoyé. Ce sera quelque chose comme localhost:10, ce qui signifie que vous devez établir une connexion TCP sur le port 6010 pour vous connecter à l'écran :0de la machine distante ( :0c'est-à-dire se connecter à une socket de domaine Unix dans quelque chose comme /tmp/.X11-unix)

Ensuite, pour qu'une application sur votre machine s'affiche sur l'écran du serveur distant, il suffit de leur dire d'utiliser localhost:10:

DISPLAY=localhost:10 xlogo

par exemple.

Notez que c'est un tunnel sur un tunnel.

Stéphane Chazelas
la source