SSH como proxy Socks


Introducción

SSH es una excelente herramienta no solo para conectarte e interactuar con servidores remotos. En este artículo vamos a explorar el proxy SOCKS de SSH y qué significa. También veremos el Reenvío de puertos remotos con SSH y el Reenvío de puertos locales con SSH y cómo usar esas funcionalidades.


Explicación

SOCKS es un protocolo de Internet que intercambia paquetes de red entre un cliente y un servidor a través de un servidor proxy (extraído de Wikipedia). Básicamente, permite que nuestro servidor remoto se convierta en algo similar a una VPN usando SSH. Veamos las distintas opciones de cómo y cuándo usarlo. Pero es importante mencionar que tendremos que configurar la aplicación para que use ese proxy SOCKS, por ejemplo, nuestro navegador o curl.


El comando

ssh -D 9999 -Nn ec2-user@54.210.37.203

Por ejemplo, inicié una instancia EC2 para este ejemplo y este es el resultado de curl:

$ curl --socks4 localhost:9999 icanhazip.com
# OUTPUT:
# 54.210.37.203

Los parámetros y su significado

Saqué una porción del significado de los parámetros de la página del manual, pero en resumen significa reenvío dinámico de puerto sin ejecutar un shell.

-N No ejecuta un comando remoto. Esto es útil solo para redirigir puertos.
-n Redirige stdin desde /dev/null (evita leer desde stdin). Esto debe usarse cuando SSH se ejecuta en segundo plano.
-D Especifica un reenvío de puerto dinámico a nivel de aplicación. Funciona asignando un socket para escuchar en un puerto del lado local, opcionalmente enlazado a la dirección especificada (bind_address).

Notas finales

Como podés ver, esta opción es muy útil para crear una VPN o proxy temporal. Si querés hacerlo automático y no tan temporal, podés revisar autossh o una solución VPN más completa como OpenVPN. Podés usar este tipo de proxy en cualquier aplicación que soporte SOCKS; la mayoría de los navegadores, por ejemplo, lo soportan.


Errata

Si encontrás algún error o tenés alguna sugerencia, por favor enviame un mensaje para que lo corrija.

Además, podés revisar el código fuente y los cambios en el código generado y las fuentes aquí



No tienes cuenta? Regístrate aqui

Ya registrado? Iniciar sesión a tu cuenta ahora.

Iniciar session con GitHub
Iniciar sesion con Google
  • Comentarios

    Online: 0

Por favor inicie sesión para poder escribir comentarios.

by Gabriel Garrido