¿Conectarse al puerto a través del túnel ssh en funcionamiento desde IntelliJ?

¿Conectarse al puerto a través del túnel ssh en funcionamiento desde IntelliJ?

Estoy trabajando en una aplicación de servidor que reside en un servidor Ubuntu 14.x remoto. Esa aplicación está escuchando en el puerto 8000 de la caja remota. Tengo una sesión SSH adecuada, por lo que estoy conectado a la caja y también tengo capacidad de sudo.

Tengo IntelliJ en mi sistema Linux local en mi oficina y también ejecuta ubuntu 14.x. Necesito que se conecte al puerto 8000 en la caja remota para una sesión de depuración remota de IntelliJ. El puerto 8080 en la caja remota no está disponible públicamente.

¿Existe alguna utilidad, o truco de tablas de IP (en la caja remota), o truco de SSH, etc. que pueda proporcionar un puerto local en mi sistema para que IntelliJ se conecte, y luego enviará/reenviará el tráfico hacia y desde ese puerto? ¿El túnel SSH al puerto 8000 en el sistema remoto? En otras palabras, ¿hará que IntelliJ en mi caja local piense que está hablando directamente con la aplicación del servidor en la caja remota, cuando en realidad la conexión entre ellos pasa a través del túnel SSH activo?

Recuerdo haber hecho algo como esto hace mucho tiempo, pero lo olvidé por completo, y en aquel entonces el cliente remoto era una caja de Windows, por lo que la solución era para sistemas Windows. Esta vez tanto el sistema local como el remoto son servidores Ubuntu 14.x.

Respuesta1

Configure un túnel directo en la máquina local

autossh -f -N -L 0.0.0.0:8000:localhost:8000 username@remotebox

0.0.0.0:8000es a lo que se conectará IntelliJ, pensará que la aplicación web se está ejecutando en la máquina local, vinculada a cada interfaz local y ejecutándose en el puerto 8000.

localhost:8000es donde se conectará el túnel, en el contexto de la caja remota. localhostYa no es en lo que localhostestás trabajando, sino en la localhostinterfaz dentro de la máquina Remotebox. Allí se conectará al puerto 8000, que efectivamente es su aplicación web, desde el contexto del usuario username.

autosshes un contenedor sshque se encarga de reconectarse automáticamente en caso de que se caiga la conexión.

Si está utilizando un puerto no estándar para ssh en el control remoto, use el -P <PORT>parámetro para conectarse a él.

Vale la pena mirar esta respuesta si lo anterior no hace lo que desea:https://unix.stackexchange.com/a/118650/61956 A partir de ahí te acabo de explicar el primer diagrama. Le puse el prefijo interfaz al puerto local 0.0.0.0, creo que el valor predeterminado es localhostcuando lo omites, lo cual puedes hacer si lo deseas. Podría ser más seguro eliminar la 0.0.0.0:pieza, porque si localhostes la opción predeterminada, nadie en su red podrá usar su máquina para usar ese túnel ssh. De lo contrario, para ellos 192.168.10.10:8000sería un punto de entrada a la aplicación web remota si 192.168.10.10es la IP de la máquina en la que está trabajando.

información relacionada