Descripción general
ssh-socks utiliza la función de reenvío dinámico de puertos (-D option) de SSH para crear un proxy SOCKS en la máquina local. A través de este proxy, el tráfico de navegadores web u otras aplicaciones se puede dirigir a Internet a través del servidor SSH remoto. Esto tiene el efecto de acceder a Internet desde el servidor remoto.
Casos de uso principales
- Acceso a contenido con restricciones geográficas
- Mejora de la seguridad en Wi-Fi público
- Acceso a recursos de red interna de la empresa
- Elusión de firewalls
Opciones principales
ssh-socks utiliza principalmente las opciones del comando 'ssh'. A continuación se muestran las opciones de 'ssh' que se utilizan con frecuencia al configurar un proxy SOCKS.
Configuración del proxy
Comando generado:
Combina los comandos.
Descripción:
`ssh-socks` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Ejemplos de uso
Ejemplos de uso comunes de ssh-socks. [user] y [remote_host] deben reemplazarse por el nombre de usuario real y la dirección del servidor remoto.
Configuración básica de proxy SOCKS
ssh -D 8080 user@remote_host
Configura un proxy SOCKS en el puerto local 8080 y se conecta al servidor remoto. Este comando ocupará la terminal.
Ejecución de proxy SOCKS en segundo plano
ssh -fN -D 8080 user@remote_host
Ejecuta el proxy en segundo plano para poder seguir utilizando la terminal. -N evita la ejecución de comandos remotos y -f lo envía a segundo plano.
Acceso a páginas web a través del proxy (curl)
curl --socks5-hostname localhost:8080 http://example.com
Utiliza el proxy SOCKS configurado anteriormente (localhost:8080) para acceder a una página web con el comando curl.
Acceso a páginas web a través del proxy (wget)
wget -e use_proxy=yes -e http_proxy=socks5://localhost:8080 http://example.com
Utiliza el proxy SOCKS configurado anteriormente (localhost:8080) para acceder a una página web con el comando wget.
Instalación
ssh-socks generalmente no es un comando independiente que requiera una instalación separada. En su lugar, puede configurarlo directamente utilizando la funcionalidad del comando 'ssh', o para mayor comodidad, puede crear un alias de shell o un script simple para usarlo.
Configuración como alias de shell
alias ssh-socks='ssh -fN -D 8080'
Puede definir el comando 'ssh-socks' agregando la siguiente línea a su archivo ~/.bashrc o ~/.zshrc. Después de realizar el cambio, debe aplicarlo ejecutando 'source ~/.bashrc' o 'source ~/.zshrc'.
Cómo usar
Después de configurar el alias, puede usarlo como 'ssh-socks user@remote_host'. Si desea cambiar el número de puerto, deberá modificar la definición del alias.
Configuración como script simple
#!/bin/bash
PORT=${1:-8080}
HOST=$2
if [ -z "$HOST" ]; then
echo "Uso: ssh-socks [puerto] user@remote_host"
echo "Puerto por defecto: 8080"
exit 1
fi
shift
if [ $# -eq 1 ]; then
HOST=$1
else
HOST=$2
fi
ssh -fN -D $PORT "$HOST"
echo "El proxy SOCKS se está ejecutando en localhost:$PORT. (PID: $(pgrep -f "ssh -fN -D $PORT $HOST"))"
Puede crear un script ejecutable en una ruta como /usr/local/bin/ssh-socks. Este método permite pasar puertos u otras opciones como argumentos de manera más flexible.
Cómo usar el script
Después de crear el script, otorgue permisos de ejecución con 'chmod +x /usr/local/bin/ssh-socks' y úselo como 'ssh-socks user@remote_host' o 'ssh-socks 9000 user@remote_host'.
Consejos y precauciones
Aquí hay algunos consejos útiles y precauciones al usar ssh-socks.
Configuración del navegador web
La mayoría de los navegadores web admiten la configuración de proxy SOCKS. En la configuración de red del navegador, especifique 'SOCKS Host' como 'localhost' y 'Port' como el puerto configurado (por ejemplo, 8080).
- Firefox: Configuración -> Configuración de red -> Configuración manual de proxy -> Host SOCKS
- Chrome/Edge: Usar configuración de proxy del sistema (varía según la configuración del SO)
Uso del archivo de configuración SSH (~/.ssh/config)
Puede hacer que los comandos sean más concisos definiendo previamente la configuración del host remoto en el archivo ~/.ssh/config.
- Host myproxy Hostname remote_host User user DynamicForward 8080 ExitOnForwardFailure yes ServerAliveInterval 60 ServerAliveCountMax 3
Ejemplo de uso del archivo de configuración SSH
ssh -fN myproxy
Después de configurar como se describe anteriormente, puede ejecutar el proxy con el comando 'ssh -fN myproxy'.
Finalizar el proxy
Para finalizar un proxy SSH SOCKS que se ejecuta en segundo plano, debe encontrar el proceso SSH correspondiente y matarlo.
- ps aux | grep 'ssh -fN -D 8080' (verificar ID del proceso)
- kill [PID]
Consideraciones de seguridad
Dado que todo el tráfico pasa a través del servidor remoto a través del proxy SOCKS, es importante verificar la seguridad y confiabilidad de ese servidor. El uso de un proxy a través de un servidor no confiable conlleva el riesgo de que los datos sean interceptados o manipulados.