explicación de túnel ssh

8

Tengo una pregunta sobre el túnel ssh. He leido este articulo

Me gustaría hacer que el reenvío X funcione y ejecute algunas aplicaciones X en casa y que se muestren en un sistema remoto:

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

En remoto:

 ssh -X -p 5555 [email protected]

Luego en casa:

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

¿Debería funcionar?

wawa235
fuente
Inténtalo en lugar de preguntar si funcionaría.
Wutaz
Sí, siempre es mejor probar cosas y luego, si no funciona, pregunte por qué.
slm
suena como si lo estuvieras haciendo al revés ... lo "normal" es ejecutarlo en el control remoto y mostrarlo localmente. si desea visualizar en remoto, cuéntenos sobre su red, puede ser simple y ni siquiera necesitar ssh.
Skaperen

Respuestas:

9

He dibujado algunos bocetos

La máquina, donde se escribe el comando ssh tunnel se llama »su host« .

túnel ssh a partir de local


túnel ssh a partir de remoto

Introducción

  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 connectToHostsignifica: conectarse con ssh a connectToHost, y reenviar todos los intentos de conexión al puerto local en la máquina llamada , a la que se puede acceder desde la máquina.sourcePortonPortforwardToHostconnectToHost

  2. remoto: -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 connectToHostsignifica: conectarse con ssh a connectToHost, y reenviar todos los intentos de conexión al puerto remoto en la máquina llamada , a la que se puede acceder desde su máquina local.sourcePortonPortforwardToHost

Su ejemplo

Bueno, si solo desea hacer que el reenvío X funcione, es decir, ejecutar algunas aplicaciones X en la computadora en el hogar y hacer que se muestren en un sistema remoto (llamémoslo computadora de trabajo, porque podría estar en su lugar de trabajo), entonces posiblemente no necesito un túnel ssh en absoluto.

Iniciar aplicaciones X sin túnel

¿Puedes simplemente pasar de la computadora del trabajo a la computadora de tu casa? Si es así, cuando está sentado en la computadora del trabajo y desea iniciar una aplicación X que se ejecuta en la computadora de su hogar pero se muestra en la computadora del trabajo , debe escribir (en la computadora del trabajo):

ssh -X homeuser @ homecomputer firefox

Esto iniciará firefox en la computadora de su hogar y lo mostrará en la máquina donde escribió este comando, por ejemplo, la computadora de su trabajo.

La computadora oculta necesita un túnel

Esta es la imagen número 3 de mis bocetos. Muchas veces no se puede acceder directamente a la computadora doméstica desde Internet, porque está detrás de un firewall o está oculta a través de NAT (desde un enrutador). Entonces puedes usar un túnel.

En su computadora hogareña azul ( yourhost) usted escribe:

ssh -R 5555:localhost:22 remoteuser@remotehost

donde 5555está el puerto verde y 22es el puerto rosa en la imagen.

Si ahora está en el trabajo, en el remotehost, y se conecta al puerto verde 5555, su conexión se canaliza / reenvía al puerto rosa de la computadora de su hogar localhost(es decir, la computadora azul de su hogar). Ahora tiene que escribir en su computadora de trabajo:

ssh -X -p 5555 homeuser@localhost firefox

que iniciará firefox en la computadora de su casa ( yourhost) y lo mostrará en la máquina donde escribió este comando, por ejemplo, la computadora de su trabajo ( remotehost).

erik
fuente
1

Debe especificar la pantalla remota que desea reenviar. En remoto:

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

Para reenviar la :0pantalla.

Luego, en ese shell (ahora ejecutándose en su máquina doméstica), ejecute:

echo "$DISPLAY"

para averiguar cuál es la pantalla reenviada. Será algo así localhost:10, lo que significa que debe hacer una conexión TCP en el puerto 6010 para conectarse a la pantalla :0en la máquina remota ( :0lo que significa conectarse a algún socket de dominio Unix en algo así /tmp/.X11-unix)

Luego, para que una aplicación en su máquina se muestre en la pantalla del servidor remoto, solo es cuestión de decirles que usen localhost:10:

DISPLAY=localhost:10 xlogo

por ejemplo.

Tenga en cuenta que, eso es un túnel sobre un túnel.

Stéphane Chazelas
fuente