Hoy vamos a presentar un patrón de conectividad para acceder a un conjunto de máquinas, exponiendo solamente una de ellas, y aprovechando el protocolo SSH para pasar el tráfico a través, de forma transparente. Eso facilita los casos en los que no podemos tener una VPN o una red dedicada.
No siempre tenemos acceso a nuestro terminal SSH favorito para acceder a nuestros entornos en caso de emergencia. De hecho, en muchas redes suelen prohibir el tráfico por otros puertos ajenos a la navegación web. Para estos casos podemos tener un terminal SSH a través de una página web propia.
Tenemos en el trabajo uno de esos enginjerks que lanzan acciones random para justificar su trabajo. Cortó el acceso a Dropbox, en donde tengo cosas útiles para mi trabajo. Harto de encender los datos móviles de mi móvil para ir sincronizando ficheros, me he montado un proxy SOCKS para mí.
Ya vimos en un artículo anterior como autenticar las sesiones SSH mediante claves locales en la máquina. Sin embargo, esto no es práctico cuando tenemos muchos servidores, y hay que replicar esas claves en todos ellos. Hoy vamos a ver como usar un script que pueda sacar las claves dinámicamente.
A veces tenemos la necesidad de exponer en internet algún puerto TCP de forma temporal, para hacer testing o alguna demo. Ya vimos como podemos hacer esto mediante túneles SSH reversos, aunque no siempre disponemos de un dominio público. En estos casos podemos usar un sistema de túneles llamado ngrok.
Algunas veces me he encontrado con usuarios de alguno de mis servidores SFTP que se quejan porque “les desaparecen archivos”. Si estamos seguros que esas desapariciones no tienen nada que ver con nosotros, lo mas probable es que lo hayan hecho los mismos usuarios, sea manualmente o de forma automática.
Es muy útil lanzar comandos SSH desde un script de bash. Sin embargo, los scripts en bash se vuelve ilegibles rápidamente, y no nos ofrece el poderío de la librería python. No es de extrañar que herramientas como ansible o fabric estén escritas en python, usando una librería llamada paramiko.
Ya vimos en un artículo anterior como levantar túneles SSH para llegar a través del protocolo SSH, a destinos que no están alcanzables normalmente. Esto está muy bien para aplicaciones puntuales, pero si tenemos que usar esos túneles una temporada, y deseamos que se mantengan levantados, ya es mas difícil.
Todos conocemos las bondades de SSH cuando se trata de acceder a un servidor remoto con una sesión interactiva. Sin embargo, pocos conocen otra habilidad que este servicio nos ofrece: encapsular tráfico de cualquier protocolo a través de un túnel SSH, cifrando nuestro tráfico y pasando potencialmente por otro puerto.
Algunas veces tenemos necesidad de crear un proyecto con un equipo pequeño y necesitamos versionarlo en un sitio accesible para todos los participantes involucrados. El precio de soluciones en la nube suele ser prohibitivo, y montar una solución gráfica puede ser demasiado. Lo podemos hacer simplemente usando git y ssh.