Conexión SSH entre dos computadoras detrás de NAT a través de una tercera computadora con IP pública

Conexión SSH entre dos computadoras detrás de NAT a través de una tercera computadora con IP pública

Tengo una computadora en casa (servidor doméstico) que ejecuta irssi, rtorrent, etc. Mi ISP está bloqueando todo el tráfico externo (tonto, lo sé, pero es el único ISP que puedo tener).

Quiero poder iniciar sesión enservidor domésticoel caparazón de cualquiercomputadora remota(detrás de NAT).

Tengo una cuenta shell en alguna parte (sin acceso de root), eso puede ser de alguna utilidad.

Aquí hay un diagrama que describe la situación: ingrese la descripción de la imagen aquí

¿Es posible obtener acceso al shell en miservidor doméstico? Escuché algo sobre la creación de túneles ssh, pero no pude encontrar ningún tutorial que coincida con este caso.

Respuesta1

en el servidor doméstico (túnel de terceros al hogar):
ssh -R 20000:127.0.0.1:22 thirdparty.org

Esto conecta su home box al shell de terceros y luego comienza a reenviar cualquier conexión al puerto 20000 en el shell de terceros al puerto 22 de su home box (el puerto SSH).

En una computadora remota (túnel desde el control remoto a un tercero):
ssh -L 20000:127.0.0.1:20000 thirdparty.org

Esto conecta su caja remota al shell de terceros y luego comienza a reenviar el puerto 20000 en la caja remota al puerto 20000 en el shell de terceros.

y luego en una computadora remota (conéctese a través de túneles):
ssh 127.0.0.1:20000e ingrese las credenciales para su servidor doméstico

Esto intentará realizar ssh al puerto 20000 en la caja remota. Dado que configuramos un túnel hacia el tercero, el comando n.º 2 reenvía efectivamente este intento de conexión a 127.0.0.1:20000 en el shell del tercero. Luego, el primer comando reenvía la conexión nuevamente al puerto 22 de su caja de inicio, momento en el cual el servidor ssh retoma la conexión.

Respuesta2

Intenté explicar mejor la solución aceptada a continuación. Supongamos que la "máquina A" y la "máquina B" están detrás del firewall NAT. Si bien ambos tienen acceso ssh a una "máquina R" remota (digamos un VPS).

R->A

ssh -R 20000:127.0.0.1:22 user@RemoteHost
  1. Comando anterior ejecutado en la máquinaA.

  2. Crear un túnel desdeR(puerto 20000 de R) aA(puerto 22 de A) (túnel inverso)

B->R

ssh -L 8000:127.0.0.1:20000 user@RemoteHost
  1. Comando anterior ejecutado enB.

  2. Crea un túnel desdeB(puerto 8000 de B) aR(puerto 20000 de R)

B->A

ssh 127.0.0.1 -p 8000

Aunque la conexión real vaR, eso esB(puerto 8000)-> R(puerto 20000)-> Un(puerto 22)


Lo mismo usando PuTTY y Windows:

R->A

putty.exe -R 20000:127.0.0.1:22 -ssh RemoteHost -P port -l user -pw password

B->R

putty.exe -L 8000:127.0.0.1:20000  -ssh RemoteHost -P port -l user -pw password

B->A

putty.exe -ssh 127.0.0.1 -P 8000 -l user -pw password

Respuesta3

O también puedes configurar algunos túneles IPv6 con HE.net y simplemente conectarte directamente... (Muchas soluciones VPN también funcionarán).

Respuesta4

Gratuito, pero puede ayudar a algunas personas... agregando una foto para aumentar lo anterior.

ingrese la descripción de la imagen aquí

información relacionada