Navegar por Internet a través de un túnel SSH en MacOS


Las VPN son herramientas poderosas y pueden ayudarlo a mantener seguro el tráfico de su red. Si tiene un VPS o un servidor dedicado, incluso podría ejecutar un servicio VPN desde su servidor. El problema es que instalar y configurar una VPN puede llevar mucho tiempo y ser complicado. Para algunos usos, puede haber una forma más fácil de enrutar de forma segura su tráfico a través de un servidor remoto (como su VPS o servidor dedicado).

Un túnel SSH es otro método para redirigir parte o todo el tráfico desde una ubicación (como su computadora local) a través de otra (su servidor remoto). Todo este tráfico redirigido se cifra de forma segura mientras viaja entre su máquina local y el servidor remoto gracias a SSH. Con un túnel activo y el tráfico a través del túnel, parecerá que ese tráfico proviene de su servidor remoto en lugar de su máquina local. Esto puede ser útil para eludir problemas de red remota o cortafuegos restrictivos.

Este artículo explicará cómo puede configurar un túnel SSH desde su máquina local MacOS (née OS X).

Si está buscando un artículo que explique cómo configurar un túnel SSH en su máquina con Windows, consulte nuestro artículo aquí.

MacOS ya viene con todas las herramientas necesarias para configurar un túnel SSH, pero también necesitará un servidor remoto para SSH a través de su conexión. Aquí está la lista completa de requisitos:

  1. Un servidor remoto que ejecuta SSH y la capacidad de realizar otras conexiones salientes a Internet.
  2. Una cuenta de usuario en el servidor remoto que puede iniciar sesión a través de SSH.
  3. Acceda a la aplicación Terminal en  /Applications/Utilities/Terminal(.app) (/Aplicaciones/Utilidades/Terminal(.app)) en su Mac.
  4. Acceda a la sección Network (Red) en System Preferences (Preferencias del sistema) para que pueda configurar el proxy de todo el sistema.
  5. Alternativamente, acceda a Firefox u otro navegador que pueda aceptar conexiones proxy configuradas localmente.

Para configurar el túnel, debe ejecutar un comando en la aplicación Terminal de Mac.

  1. Abra la carpeta Applications (Aplicaciones) en su Mac (si no sabe dónde está, abra su disco duro y la carpeta se encontrará allí).
  2. Desplácese hacia abajo hasta la carpeta Utilities (Utilidades) y ábrala también.
  3. Localice el archivo Terminal o Terminal.app en la carpeta Utilities (Utilidades) y haga doble clic en el icono de la terminal.
  4. Esto abrirá una nueva ventana donde podrá escribir algún texto.
  5. Escriba lo siguiente en la ventana de terminal:

    Escriba esto en la ventana de Terminal:
    ssh -f -N -M -S /tmp/sshtunnel -D 1080 USER@server.domain.com -p22

    Reemplace USER arriba con el nombre de usuario del usuario en el servidor remoto con el que está iniciando sesión, esto podría ser "root", pero generalmente es más seguro usar un usuario sin privilegios en su lugar.
    Reemplace server.domain.com con el nombre de host o la dirección IP de su servidor remoto.
    Reemplace 22 al final de la línea anterior con cualquier puerto en el que su servidor remoto acepte conexiones SSH (22 es el valor predeterminado).

    Si desea comprender lo que hace este comando, siga leyendo; de lo contrario, vaya al paso 6.

    -f:  Esto bifurca el proceso en segundo plano para que no tenga que mantener abierta la ventana de la terminal para mantener el túnel SSH.
    -N: Esto le dice al proceso SSH que no ejecute ningún comando en el servidor remoto (solo estamos reenviando tráfico a través del servidor remoto).
    -M: Ponga el cliente SSH en modo maestro. Estamos haciendo esto para que podamos ingresar fácilmente un comando más tarde para finalizar correctamente el túnel SSH sin tener que interrumpir la conexión.
    -S: Esto se usa junto con el comando -M. Esto configura un tipo especial de archivo (llamado socket) que nos permitirá ingresar un comando más tarde para finalizar correctamente el túnel SSH sin tener que interrumpir la conexión. /tmp/sshtunnel es la ruta completa al archivo de socket que está creando este comando.
    -D: Esto configura un servicio de reenvío de nivel de aplicación dinámico y 1080 es el puerto en el que escuchará. Este comando crea el proxy SOCKS que usaremos más adelante.
    -p: Especifique el puerto en el que el servidor remoto escucha las conexiones SSH.

  6. Se le pedirá que inicie sesión en su servidor SSH remoto.

    Si tiene que ingresar una contraseña, la terminal no le mostrará viñetas para sus pulsaciones de teclas. No verás nada en absoluto. Simplemente escriba su contraseña y presione Enter en su teclado.

  7. Una vez que esté conectado a su servidor remoto, puede salir de la aplicación Terminal.

Ahora necesita configurar el proxy SOCKS para que su Mac enrute el tráfico a través de su servidor remoto.

Hasta que complete este paso, su tráfico no es seguro.

Para desconectarse del túnel SSH, siga estos pasos:

  1. Deshabilite el uso del proxy SOCKS desmarcando el proxy SOCKS en la sección Advanced... (Avanzado...) del panel de Preferencias de Red o cambiando a System Proxy or No Proxy (Proxy del sistema o Sin proxy) en las Preferencias de Firefox, según el conjunto de instrucciones que haya seguido.
  2. Desconecte el túnel SSH y cierre la conexión a su servidor remoto.

    1. Inicie la aplicación Terminal desde su carpeta Utilities (Utilidades) en la carpeta Applications (Aplicaciones).
    2. En la ventana de terminal, ingrese el siguiente comando (edítelo según sea necesario):

      ssh -S /tmp/sshtunnel -O exit server.domain.com -p22

      Reemplace server.domain.com con la dirección IP o el nombre de host del servidor de su servidor remoto.
      Reemplace 22 con el número de puerto en el que su servidor remoto acepta conexiones SSH. 22 es el predeterminado.

      Si por alguna razón tiene problemas para desconectarse de su servidor remoto de esta manera, siempre puede reiniciar su Mac y eso eliminará automáticamente la conexión

    3. Salga de la aplicación Terminal.
  3. Pruebe su conexión a https://hostdime.com/ip y asegúrese de que la IP que se informa ya no sea la dirección IP de su servidor remoto.