miércoles, 9 de julio de 2014

Tunel SSH Reverso y trabajo con screen (terminal compartida)

Wenas,

Que se necesita:


  • Que todas las maquinas tengan SSH Server y SSH client :) (los servers iniciados claro esta).
  • Saber de Linux (bueno en este ambiente es linux, en windows ha de ser igual, adaptalo ejjeje)


hace tiempo llevo haciendo esto pero siempre se me olvida jejeje asi que lo dejo aquí mas que para mi por si a alguien le interesa.

Paso a explicar el caso, supongamos tienes un server (VPS, lo que sea [a la cual llamaremos de ahora en mas SV]) al cual te puedes conectar mediante SSH, y quisieras conectarte al computador de tu casa o al de un amigo que esta en apuros (al cual llamaremos desde ahora PC), y te encuentras con que al PC que te quieres no tiene puertos abiertos en router y la ISP te cobra bla bla bla...

Ademas el computador desde el que estas conectado (al cual llamaremos HS) ahora tampoco tiene los puertos abiertos en el router al que esta conectado :/ pinta mal la cosa xDDD... Pero no tanto recuerda que tienes el server :o, asi que wala, podremos hacer la conexion inversa y obtener la terminal del PC desde tu HS a traves de nuestro SV... mmm un poco confuso de explicar y como dicen una imagen vale mas que 1000 palabras aqui el esquema mejor explicado :)




Ahora si es mas fácil de explicar: El PC se conecta al servidor con el comodin -R de ssh indicando un puerto no ocupado (preferiblemente mayores a 2222) y ha de tenerse en cuenta dicho puerto, este se debe ejecutar de esta manera:


$ ssh -R 4444:localhost:22 usuario@SV

una vez hagas esto te pedirá la contraseña y paso a explicar:

ssh -> pues el cliente ssh jejeje

-R 4444:localhost:22 -> el -R lo que hara sera unir o bindear (jejeje) la conexion hacia un puerto que le indiques y hacia un host:puerto que asignaras también, has de tener en cuenta que si cambiaste la configuracion de tu ssh en la maquina que estas (me refiero al puerto) y no dejaste el 22 (que es defecto) debes cambiar el 22 por el puerto que hayas configurado.

usuario@SV -> usuario para conectartre al servidor luego el arroba (@) y la direccion del servidor (IP, dominio que se yo).


hasta ahi todo bien el PC conectara al SV y en el servidor se genera una conexion entre el puerto 22 del propio y el puerto 4444 que en otras palabras se conecta con PC. Ahora conectamos desde nuestro HS al servidor, y desde alli nos conectaremos a la PC por el puerto que se definió (en este caso 4444):

ssh usuario@SV

y ya conectado a SV ejecutamos:

$ ssh usuariodePC@localhost -p 4444

y boom aquí conecta jejeje, ya tendremos acceso a la maquina PC los comandos que ejecutemos desde HS se ejecutarán directamente en PC...

Y bien para que todo salga al peluche y si nuestro amigo es desconfiado pues le dices que desde PC ejecute screen (en otra terminal, no en la que esta conectado a SSH) así:

$ screen

Parecerá que no hace nada pero desde HS tu ejecutaras screen -ls asi:

$ screen -ls

y saldrá algo similar a esto:

There is a screen on:
15741.pts-9.PC (09/07/14 16:22:07) (Attached)
1 Socket in /var/run/screen/S-pc.

ves el nombre despues del punto me refiero a pts-9.PC y tu desde HS ejecutas:

$ screen -x pts-9.PC

y boom lo que escribas en HS aparecerá en PC y viceversa, ademas de que si necesitases claves (por ejemplo en un comando sudo) desde PC te escribiría la clave y todos felices :) una terminal compartida en donde podrán trabajar juntos :) y tu amigo (PC) verá todo lo que haces y así aprende jejejej...

Y bueno espero les sirva de mucho como a mi y si no pues a mi si me sirve que se me olvida a cada momento xDDD..

Saludos kid_goth

No hay comentarios:

Publicar un comentario