Tunel SSH

Iniciado por DonQuimi, 8 Marzo 2016, 12:56 PM

0 Miembros y 2 Visitantes están viendo este tema.

DonQuimi

Buenos dias!

Hace ya algun tiempo que busco la manera de poder acceder desde mi movil a la pagina de administracion de mi router. Este (un livebox de Orange) NO permite el acceso desde el exterior si no es desde una IP especificada previamente en la pagina de configuracion.

Al pretender acceder desde un movil, logicamente, no puedo especificar una IP en concreto pues esta va canviando con el tiempo.

Ya que tengo en casa un Linux encendido las 24 horas, he pensado en un tunel ssh. Pero no entiendo del todo la sintaxis. Por lo que he entendido, debe ser algo así:

ssh -L 8080:192.168.1.1:80 yomismo@eldominiodemicasa.no-ip.com

Entonces, ahora, que debo hacer en el movil? Por lo que entiendo, la linea anterior redirige el trafico del puerto 80 del router al puerto 8080 de http://eldominiodemicasa.no-ip.com

Pero si yo escribo en el navegador de mi movil http://eldominiodemicasa.no-ip.com:8080 no aparece absolutamente nada. Aún habiendo abierto en el NAT el puerto 8080 para la maquina Linux que me efectua la redireccion...

Evidentemente algo hago mal, y seguro que es una chorrada, pero no se que es.

Alguna pista? Gracias!


MinusFour

No tienes que abrir el puerto 8080 en la maquina del server, pero necesitas tener un servidor SSH escuchando en eldominiodemicasa.no-ip.com. ¿En la página de configuración no puedes especificar un dominio? Así solo tendrías que actualizar tu dominio con la ip de tu movil (aunque si varios dispositivos moviles de tu compañia de telefono tienen una misma ip, es un riesgo que sería mejor no correr).

DonQuimi

Gracias por responder,

Respecto a lo que dices de indicar un dominio, no es posible, ya que la pagina de configuración del router ofrece 4 textbox separados por puntos para introducir una IP. Me apunto el dato de que varios dispositivos de un mismo operador pueden tener la misma IP, no lo sabia ;)

Por lo que dices de que no es necesario abrir el puerto 8080, se me genera una duda que, seguro, se debe a mi desconocimiento en el tema:

según lo he entendido yo (y aqui estarà el error) lo que hago con el comando "ssh -L 8080..." es abrir un tunel entre el puerto 8080 de esta maquina, que estara reflejando el contenido del puerto 80 del router, y el telefono movil, que accederia a dicho contenido a través del puerto 8080 de la maquina Linux, previamente habiendo iniciado sesion con algun cliente ssh (tipo juice ssh), e introduciendo en el navegador del telefono  "http://eldominiodemicasa.no-ip.com:8080", no?

Gracias por tu colaboración, ando superperdido en este tema...

DonQuimi

Para hacer mas facil la detección del problema, os explico, paso por paso lo que hago:

1.- Introduzcon en la maquina con Linux el comando: ssh -L 8080:192.168.1.1:80 yomismo@eldominiodemicasa.no-ip.com

2.- Abro en el router el puerto 8080, para la IP de la maquina Linux. Por lo que me decia MinusFour, un paso innecesario.

3.- Inicio una sesion ssh desde el smartphone con el usuario anteriormente indicado y usando el puerto 22.

4.- Sin cerrar dicha sesion ssh en el smartphone, voy al navegador y escribo: http://eldominiodemicasa.no-ip.com:8080

I no pasa nada...

MinusFour

Uh, hace mucho que no uso un tunnel SSH. ¿No debería ser http://localhost:8080?

DonQuimi

Si, perdona. Inicialmente lo intenté con localhost:8080, pero al ver que no funcionava probé suerte de la otra manera...

Hoy sigo igual pese a mis intentos... Oye, y no habrá otra manera de hacer esto? Osea, de acceder a la configuración del router con otro metodo que no sea un tunel ssh? Quizas es que no lo he enfocado bien desde el principio...

MinusFour

Hay varias formas, puedes montar un reverse proxy con nginx por ejemplo:

https://www.nginx.com/resources/admin-guide/reverse-proxy/

Pones en un PC nginx, haces el proxy pass a 192.168.1.1 en cualquier path y necesitas configurar tu NAT para que puedas acceder al nginx desde fuera, de forma que:

Client-> Nginx -> Servidor HTTP del router

Aunque lo que estás haciendo con SSH debería funcionar.

DonQuimi

Gracias por el consejo.

He estado investigando sobre nginx y me ha parecido una solución mucho mas elegante, ya que no requiere que abra un extremo del tunel ssh en el smartphone. Simplemente escribo la direccion con el puerto correspondiente y listo.

De momento he conseguido acceder al router, con este contenido en el fichero que hay dentro de "sites-available":

server{
        listen 8080;
        server_name eldominiodemicasa.no-ip.com;

        location / {
                proxy_pass http://192.168.1.1:80;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $http_host;
                }
        }


Ahora, el "problemilla" es que en la barra de direcciones del navegador del smartphone, de vez en cuando, desaparece el numero de puerto al hacer click en algun link y claro, da error. Pero por el momento, volviendo a introducir el numero de puerto dentro de su espacio correspondiente en la url, se dirige bien a link indicado.

Seguire investigando a ver porque ocurre esto y como solucionarlo...

Gracias por la ayuda! (Quizas se podria renombrar el tema, o moverlo a otro sitio, al no tratar en este momento sobre ssh tunneling?)

MinusFour

No es necesario que uses el puerto 8080, puedes usar el mismo puerto que tu página. A menos que por alguna razón tu router no te deje. La verdad no es que este pasando con los links, hasta donde tengo entendido las urls relativas se tienen que reescribir con el mismo puerto. A menos que esten usando urls absolutas (pero te deberían cambiar la dirección a 192.168.1.1 y no solo el puerto a menos que nginx este cambiando los links?).

DonQuimi

No me he explicado bien, creo. El puerto 80 quiero dejarlo libre para un servidor apache que tengo en la misma maquina, de aqui que utilize el puerto 8080.

Por otro lado, cuando digo que me varia el link, quiero decir lo siguiente: yo pongo en el navegador del smartphone: eldominiodemicasa.no-ip.com:8080 y, efectivamente, nginx me redirige a la pagina de mi router. Todo bien hasta aqui.

Ahora, cuando hago login con el usuario y password (convenientemente modificado el que viene por defecto), nginx me dirige a eldominiodemicasa.no-ip.com/index.stm.

Es decir, en este punto, se pierde el ":8080". Si escribo manualmente este puerto en la barra de direcciones, y actualizo, entonces ya me entra a la configuración, ya que el login se ha efectuado antes correctamente y la sesión aún esta iniciada. Pero es algo engorroso tener que ir introduciendo manualmente el numero de puerto cada vez que hago click en un link.

Creo que lo solucionaria canviando algo en la configuración de nginx, no? Por lo que he entendido, utilizando "http_post" en el "proxy_set_header" deberia respetarse el puerto indicado... pero no es así.

Gracias!