Todos los que nos dedicamos a brindar soporte técnico alguna vez nos ha sucedido que necesitamos acceder remotamente a un servidor el cual se encuentra detrás de un firewall y por diversas razones el cliente no nos puede facilitar el acceso ssh a dicha máquina.
Es ahí cuando uno piensa en herramientas de administración remota como Teamviewer o Anydesk, entre otras, pero siempre el uso de estas herramientas tiene algunos contras como por ejemplo el uso de licencia es por eso que sugiero usar el ssh reverso.
Requerimientos:
Servidor A (Máquina a la que queremos acceder remotamente mediante ssh, está detrás de un firewall ).
- Debe poder conectarse al puerto ssh del Servidor B.
Servidor B (Máquina desde la cual nos conectaremos remotamente por ssh al Servidor A)
Una vez que tenemos todo listo ejecutamos el siguiente comando en el Servidor A:
ssh -R 2222:localhost:22 root@ipServidorB -p 22 -N -f
- -R específica el reenvío de puertos que vamos a realizar a través del tunel ssh
- 2222 puerto local que se abrirá en el Servidor B
- 22 puerto local que reenviaremos al servidor B
- root usuario autorizado al login mediante ssh
- -p 22 especificamos el puerto en el cual escucha el servicio ssh en el Servidor B (opcional)
- -N Esto es útil solo para reenviar puertos
- -f Lo ejecutará en segundo plano .
Ingresamos la contraseña del usuario root del Servidor B, establecemos la comunicación inicial y automáticamente abriremos el puert local 2222 en nuestro Servidor B.
Listo tenemos el tunel ssh establecido, ahora solo queda conectarnos remotamente desde el Servidor B al Servidor A mediante ssh:
ssh -p 2222 localhost
Felicidades con esto podemos reenviar cualquier puerto como ssh, http,https, etc 🙂 .
Excelente aporte, esto ayuda mucho cuando el cliente no quiere entregar los accesos ssh.