Ir al contenido
GProxy
Registro
Гайды 5 min de lectura 32 vistas

Túnel SSH como Proxy

Aprende a aprovechar los túneles SSH para un proxy SOCKS seguro, cifrando tus datos y asegurando una navegación privada y sin restricciones.

Безопасность
Túnel SSH como Proxy

Un túnel SSH puede utilizarse como un proxy SOCKS aprovechando la función de reenvío dinámico de puertos del cliente SSH, permitiendo que el tráfico de un puerto local sea reenviado a través del servidor SSH a destinos arbitrarios en la red accesibles por el servidor SSH.

Entendiendo SOCKS a través de SSH

SOCKS (Socket Secure) es un protocolo de internet que enruta paquetes de red entre un cliente y un servidor a través de un servidor proxy. Cuando se combina con el reenvío dinámico de puertos de SSH, el cliente SSH crea un servidor proxy SOCKS local. Cualquier aplicación configurada para usar este proxy SOCKS local tendrá su tráfico cifrado y enrutado a través de la conexión SSH al servidor SSH remoto. El servidor SSH actúa entonces como el proxy SOCKS, estableciendo conexiones al destino final en nombre del cliente.

Este mecanismo extiende efectivamente el alcance de red del cliente al del servidor SSH, mientras que simultáneamente cifra todos los datos transmitidos entre el cliente y el servidor SSH.

Cómo funciona el reenvío dinámico de puertos

El reenvío dinámico de puertos, especificado por la opción -D en SSH, instruye al cliente SSH para:
1. Escuchar en un puerto local especificado para conexiones entrantes.
2. Cuando se recibe una conexión en este puerto local, el cliente SSH actúa como un servidor SOCKS.
3. Negocia el protocolo SOCKS con la aplicación cliente (por ejemplo, un navegador web).
4. Basándose en la solicitud SOCKS (que incluye el host y el puerto de destino), el cliente SSH reenvía esta solicitud a través del túnel SSH cifrado al servidor SSH.
5. El servidor SSH inicia entonces una conexión al host y puerto de destino desde su propio contexto de red.
6. Todos los datos subsiguientes intercambiados entre la aplicación cliente y el host de destino se retransmiten a través del túnel SSH, cifrados entre el cliente y el servidor SSH.

Configuración de un proxy SOCKS SSH

Para establecer un proxy SOCKS SSH, se utiliza un cliente SSH para conectarse a un servidor SSH remoto. El servidor debe estar configurado para permitir el reenvío TCP (lo cual suele estar habilitado por defecto a través de AllowTcpForwarding yes en sshd_config).

El comando básico para configurar un reenvío dinámico de puertos es:

ssh -D [LOCAL_PORT] [USER]@[SSH_SERVER_IP] -N -f

Opciones de comando explicadas:

  • -D [LOCAL_PORT]: Especifica el reenvío dinámico de puertos. El cliente SSH escuchará en LOCAL_PORT en la máquina local. Este puerto funcionará como un proxy SOCKS. Las opciones comunes para LOCAL_PORT incluyen 1080, 8080, 9050, o cualquier puerto sin privilegios superior a 1024.
  • [USER]: El nombre de usuario para la autenticación en el servidor SSH remoto.
  • [SSH_SERVER_IP]: La dirección IP o el nombre de host del servidor SSH remoto.
  • -N: Evita la ejecución de comandos remotos. Esta opción se utiliza cuando solo se desea el reenvío de puertos, sin una shell interactiva.
  • -f: Envía ssh al segundo plano antes de la ejecución del comando. Esto permite que el túnel SSH se ejecute como un proceso en segundo plano. Si se omite, la conexión SSH permanecerá en primer plano.
  • -q: Suprime la mayoría de los mensajes de advertencia y diagnóstico.
  • -C: Solicita la compresión de todos los datos (incluyendo stdin, stdout, stderr, y datos X11 y TCP reenviados). Útil en enlaces lentos.

Ejemplo de configuración:

Para crear un proxy SOCKS escuchando en el puerto local 8080, conectándose a user@example.com:

ssh -D 8080 user@example.com -N -f

Después de ejecutar este comando, el proceso del cliente SSH se ejecutará en segundo plano, escuchando en localhost:8080.

Configuración de clientes para usar el proxy SOCKS

Una vez que el proxy SOCKS SSH está activo, las aplicaciones deben configurarse para enrutar su tráfico a través de localhost:[LOCAL_PORT].

Firefox:

  1. Abre la configuración de Firefox.
  2. Busca "proxy" o navega a "Configuración de red" (normalmente about:preferences#general -> Configuración de red).
  3. Selecciona "Configuración manual del proxy".
  4. En el campo "Host SOCKS", introduce localhost y el PUERTO (por ejemplo, 8080).
  5. Selecciona "SOCKS v5".
  6. Asegúrate de que "Proxy DNS al usar SOCKS v5" esté marcado para evitar fugas de DNS.
  7. Haz clic en Aceptar.

Chrome/Chromium:

Chrome no tiene configuraciones de proxy SOCKS incorporadas. Normalmente se basa en la configuración del proxy del sistema o requiere indicadores de línea de comandos o extensiones.

Uso de indicadores de línea de comandos (temporal):

google-chrome --proxy-server="socks5://localhost:8080" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost"

El indicador --host-resolver-rules asegura que las solicitudes DNS también se enruten a través del proxy SOCKS5, evitando fugas de DNS.

Uso de extensiones de cambio de proxy:
Instala una extensión de navegador como "Proxy SwitchyOmega" y configúrala para usar un proxy SOCKS5 en localhost:[LOCAL_PORT].

Configuración de proxy a nivel de sistema operativo (macOS/Windows/Entornos de escritorio Linux)

Muchos sistemas operativos permiten configurar un proxy SOCKS a nivel de sistema. Esto afectará a la mayoría de las aplicaciones que respetan la configuración del proxy del sistema.

  • macOS: Ajustes del Sistema -> Red -> Seleccionar Servicio de Red -> Detalles -> Proxies -> Marcar "Proxy SOCKS" -> Introducir localhost y PUERTO.
  • Windows: Configuración -> Red e Internet -> Proxy -> Configuración manual del proxy -> Habilitar "Usar un servidor proxy" -> Establecer "Proxy SOCKS" en localhost y PUERTO.
  • Linux (GNOME/KDE): Normalmente se encuentra en la configuración de Red o Proxy dentro de la configuración del sistema, similar a macOS/Windows.

Herramientas de línea de comandos

curl:

curl --socks5-hostname localhost:8080 http://example.com

El uso de --socks5-hostname asegura que la resolución DNS también se realice a través del servidor proxy SOCKS, previniendo posibles fugas de DNS.

git:

Configura Git para usar el proxy SOCKS para conexiones HTTPS/HTTP o SSH.

Para HTTPS/HTTP:

git config --global http.proxy socks5://localhost:8080
git config --global https.proxy socks5://localhost:8080

Para SSH (si Git usa SSH para clonar/enviar):
Edita ~/.ssh/config:

Host github.com
    ProxyCommand nc -X 5 -x localhost:8080 %h %p

Esto le dice a SSH que se conecte a github.com a través del proxy SOCKS5 local.

proxychains-ng:

Para aplicaciones que no soportan directamente proxies SOCKS, proxychains-ng puede forzarlas a usar uno.
1. Instalar proxychains-ng: Normalmente disponible a través de gestores de paquetes (por ejemplo, sudo apt install proxychains4).
2. Configurar: Edita /etc/proxychains.conf o ~/.proxychains/proxychains.conf (si se crea) y añade:
socks5 127.0.0.1 8080
3. Ejecutar aplicación:
bash proxychains4 [your_application]

Casos de uso

Los proxies SOCKS SSH ofrecen varias ventajas prácticas:

  • Evitar Restricciones de Red: Accede a servicios o sitios web bloqueados por firewalls locales o restricciones geográficas enrutando el tráfico a través de un servidor SSH ubicado en una red sin restricciones.
  • Cifrar Tráfico No Cifrado: Todo el tráfico entre el cliente y el servidor
Actualizado: 04.03.2026
Volver a la categoría

Pruebe nuestros proxies

20,000+ proxies en 100+ países del mundo

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.