# [ssh] x11vnc dentro de un ssh-inverso

## upszot

hola gente...

La idea es conectarme con vncviever a una pc remota, la cual se encuentra tras un firewall... (desde ahora PC-remota)

(aclaro que) el X11vnc se encuentra configurado y funciona perfecto desde la red interna.

--------------------- "topologia" -------------------------------------------------------------

Cuento con 3 PC.

Red-1

PC-Remota    --> no tengo acceso al ssh u otros puertos desde internet (el ssh corre en el puerto 6022)

Red-2

Router (dd-wrt) configurado para hacer forwardeo de puertos... (puerto 60022 le pega a PC-Escritorio en el puerto 6022)

PC_Escritorio --> Se encuentra destras de un router con forwardeo de puertos y es accesible desde internet en determinados puertos 

Red-xx

M1530 (Laptop) --> el ssh esta en 6022   (en este momento conectada en la Red-2)

----------------------------------------------------------------------------------

logre conectarme a la PC-remota mediante un tunel inverso de la siguiente forma...

Paso-1:

```
PC-Remota# ssh -R 5555:PC-Remota:6022 -l usuario Router.no-ip.biz -p 60022
```

(esto abre un tunel inverso a PC-Remota al puerto 6022 escuchando desde mi PC-Escritorio(recuerden el fowardeo del router) en el puerto 5555)

Paso-2:

      me conecte desde la laptop (m1530) a PC-Escritorio como siempre 

```
ssh -p 6022 PC-Escritorio
```

Paso-3

      estando conectado en la PC-Escritorio me conecto al puerto 5555 que es donde esta la pc-remota..

```
ssh -C -l usuario localhost -p 5555
```

(en este punto ya me encuentro conectado en PC-Remota)....

hasta aca todo bien... el problema esta ahora...

desde la PC-Remota subo el servicio del vnc 

```
x11vnc -bg -rfbport 5900 -geometry 1024x768 -rfbauth /etc/x11vnc.pass -o /tmp/x11vnc.log
```

(para conectarme al mismo como verán, le tengo q pegar al puerto 5900)...

lo que yo quisiera en este punto es... desde mi laptop(M1530) conectarme por vncview a PC-Remota...

alguna idea??

----------

## Inodoro_Pereyra

Por mas que lo leo y lo releo, no termino de entender la topología.

PC remota tiene un firewall que previene conexiones entrantes pero no salientes y necesitas conectar la laptop a esa PC usando x1vnc? Es eso?

De ser así me parece que estás complicando demasiado el problema cuando lo mas simple es usar una VPN, y la VPN 

mas simple es hamachi en modo unmanaged, Tanto en Linux como en Windows funciona de mil maravillas.

Salud!

----------

## upszot

em si.. el tema es ese presisamente... 

  a la PC-Remota no se puede entrar desde afuera pero si puede salir por cualquier puerto...

la idea en una primer etapa es poder conectarme desde la nuve con vnc a la PC-Remota y en una 2da etapa hacerlo con freenx...

El tema de la VPN lo pense pero pense que era mas complicado implementarlo...

voy a ponerme a buscar informacion del tema a ver si logro solucionar mi problema de esta forma.

saludos

----------

## johnlu

Creo que tu problema es que no has entendido bien el funcionamiento de los túneles. Deberías leer bien la documentación.

Crear el túnel inverso en la máquina remota:

```
PC-Remota# ssh usuario@Router.no-ip.biz -p 60022 -R 5555:localhost:6022 
```

 (Aquí localhost es PC-Remota, por lo que estamos haciendo un túnel desde PC-Remota:6022 a PC-Escritorio:5555)

Una vez tienes ya el túnel inverso creado en tu máquina intermedia, lo que tienes que hacer es llevarte el puerto de nuevo a esa máquina desde la que quieres hacer la sesión VNC. En este caso, si no me equivoco sería algo como:

```
PC-Laptop$ ssh usuario@PC-Escritorio -p 6022 -L 5555:locahost:5555 
```

 (Aquí localhost es PC-Escritorio, por lo que estamos haciendo un túnel desde PC-Laptop:5555 a PC-Escritorio:5555)

Y ahora te conectas a PC-Remota a través del túnel que llega hasta PC-Laptop y te traes el puerto 5900 de PC-Remota a tu laptop:

```
PC-Laptop$ ssh usuario@localhost -p 5555 -L 5909:localhost:5900
```

 (Aquí el segundo localhost es PC-Remota, por lo que estamos haciendo un túnel desde PC-Laptop:5909 a PC-Remota:5900)

Debes tener encuenta que el nombre de host que pones tras el -R o el -L es siempre referente a la máquina a la que conectas, por lo que si haces ssh a PC-Remota el localhost que aparece en la opción -L es PC-Remota.

Solo queda abrir el visor VNC conectando a localhost:5909 en PC-Laptop para conectar.

----------

