¿Usar netcat para atravesar el firewall?

¿Usar netcat para atravesar el firewall?

Tengo una máquina detrás de un firewall. Es mi máquina, configuré ssh, pero está completamente protegida por firewall. Mi solución ha sido utilizar un shell inverso configurado en forma cron para volver a conectarme si falla al usar netcat. El comando es bash -i >& /dev/tcp/myhostname.duckdns.org/10000 0>&1y en mi computadora local nc -l 10000. Hasta ahora esto ha funcionado porque puedo decirle que se una a mi VPN privada con un comando. Por alguna razón, ese comando no funciona. Entonces, puedo "iniciar sesión" a través del shell bash generado, pero no puedo volver a mi computadora porque Pseudo-terminal will not be allocated because stdin is not a terminal.nunca he configurado claves ssh en ese sistema y no me permite iniciar sesión con una contraseña. .

Así que he estado intentando encontrar una solución usando netcat pero no he tenido éxito. Lo que estoy imaginando es algo como esto:

[servidor] ---netcat--> [mi-computadora:puerto1]

de modo que pueda aprovecharlo para iniciar sesión en el servidor sshd y arreglar lo que sea necesario. Pero no puedo entender los comandos netcat que lograrían eso. ¿Alguna ayuda?

Respuesta1

Descubrí una respuesta para el resto de Internet (y para mí). A continuación se explica cómo lograr el reenvío de puertos solo con netcat (se ha verificado que funciona en OS X El Capitan):

En el servidor detrás del firewall (entrante):

nc localhost 22 >& /dev/tcp/<your-hostname>/<open port on local computer, i.e. 9000> 0>&1

En la computadora local:

cd /tmp; mkfifo backpipe
nc -l 9000 0<backpipe | nc -l 9001 | tee backpipe

En la computadora local, terminal separada:

ssh localhost -p 9001

información relacionada