SSH desde el cliente a Linux integrado a través del servidor

SSH desde el cliente a Linux integrado a través del servidor

Quiero poder conectarme directamente desde cualquier lugar a un Linux integrado (llamado C) que no tiene una dirección IP pública.

C puede configurar una conexión con el servidor (con SSH -R), y si ingreso por SSH al servidor, puedo ingresar por SSH al Linux integrado.

Sin embargo, me gustaría poder realizar SSH desde el cliente a C sin tener que realizar SSH primero en el servidor. (No puedo configurar una conexión con SSH -R desde C al cliente)

¿Es esto posible? Si es así, ¿cómo?

Respuesta1

Puedes hacer esto con bastante facilidad. Una forma es utilizar el reenvío de puerto remoto de SSH, mediante el cual C le dice al servidor que le reenvíe un puerto, algo como:

ssh -R 2222:localhost:22 server

Este comando, cuando se ejecuta desde C, le indicará al servidor que tome cualquier conexión al puerto 2222 y la reenvíe a C en el puerto 22.

Asimismo, puede configurar el reenvío de puertos en el servidor mediante reglas de firewall.

Respuesta2

Si desea poder conectarse al puerto reenviado, necesita cuatro cosas:

  • Especifique la IP pública/el nombre de host del servidor como primer argumento -R; de lo contrario, escuchará solo en localhost, al que obviamente no se puede acceder desde fuera del servidor.
  • Configure el servidor con GatewayPorts, lo que permitirá que los puertos reenviados sean accesibles desde el exterior.
  • Utilice el -ginterruptor para permitir básicamente lo mismo desde el lado del cliente.
  • Abra el puerto 2222en el firewall del servidor.

El comando puede verse así:

ssh -g -R server:2222:localhost:22 server

información relacionada