Usuario transparente SSH multihop

2

Lo que tengo es lo mismo que esta pregunta SSH túnel a través de dos servidores para acceder a un servicio web en el puerto 9091 (principalmente porque hice esa pregunta).

Pero la diferencia ahora es que estoy accediendo desde un Chromebook que no puedo usar ProxyCommand. Todo lo que tiene es el shell de NaCl base que se ejecuta en una pestaña de Chrome sandboxed.

Entonces, una revisión de mi pregunta anterior:

Tengo 3 máquinas:

  • remotePi (Raspberry PI, en algún lugar del mundo)
  • localPi (otro PI de frambuesa, en mi red local, tengo acceso completo a él, incluido root, sin monitor, sin kb, ejecutándose como servidor sin cabeza)
  • Chromebook(mi máquina local, que es una Chromebook en la misma red local que localPi, limitada pero tiene el SSH según los enlaces anteriores).

remotePitiene un túnel SSH constante a localPi, lo hace llamando al siguiente comando

ssh -N -R 16864:localhost:22 -p 2222 <user_on_lan>@<external_lan_ip>

Puedo acceder a la remotePiterminal haciendo

Chromebook> ssh <user_on_localPi>@<localPI_ip>
localPi> ssh -l <user_on_remotePi> -p 16846 localhost

Y remotePitengo un servicio de demonio (interfaz web) escuchando 9091.

un "dibujo" de todo:

                                   16864:tunnel:22   9091:service
Chromebook <--local_net--> localPi  <--internet-->  remotePi

Entonces, lo que necesito es:

Acceda a la interfaz web del servicio daemon en remotePi llamando a mi Chromebooknavegador127.0.0.1:9091/web/

En mi computadora anterior (que se muestra en la pregunta vinculada, computadora portátil ubuntu) lo estaba haciendo usando ProxyCommandmi configuración y llamando ssh -L9091:localhost:9091 user_on_remotePi@remotePi -N, pero ahora estoy en un Chromebook que no puede usarlo y creo que debe haber una manera de hacerlo de todos modos

Entonces me preguntaba sobre 2 posibles soluciones:

  1. algún comando SSH muy inteligente y largo que "reemplazará" lo que ProxyCommandestaba haciendo. Siempre veo esto en tutoriales como ese LINK, pero siempre depende del nombre del host, solo tengo el puerto 16864para conectarme.

  2. (preferido) agregue algo de magia a la localPiconfiguración SSH que lo hará escuchar en algún puerto no estándar (digamos 2222) y redirigirá automáticamente esa conexión user_on_remotePi:localhost:16864. Entonces, cuando llamo desde Chromebook ssh user_on_localPI -p 2222 localPi_ip, localPiredirigirá esto al usuario correcto directamente en remotePi.

Como puede observar, soy un novato en la red, mi principal experiencia en el desarrollo de aplicaciones, por lo que cualquier ayuda aquí le estaré extremadamente agradecida.

¿Algunas ideas?

Budius
fuente
1
Parece un poco complejo para mí y no estoy tan familiarizado con ProxyCommand, pero usted dice que tiene REMOTE, LAN, PC ... ¿Entonces Chromebook es la PC?
barlop
1
Podrías llamarlos Pi y CB en lugar de llamar a una LAN y una PC. Ambas son computadoras y cada una está detrás de la misma LAN.
barlop
1
Entonces, ¿Chromebook tiene ssh.exe? sshd.exe?
barlop
1
así que llámalo HeadlessPi, no lo llames LAN. No es una LAN, es una computadora en una LAN. Entonces tienes HeadlessPi, RemotePi, ChromeBook. Y HeadlessPi y ChromeBook están detrás de la misma LAN.
barlop
1
El enrutador NAT en su IP LAN externa presumiblemente reenvía a un servidor SSH en su raspberry pi sin cabeza en algún puerto que no sea el puerto 22, ¿qué puerto es ese? es decir, ¿en qué puerto se ejecuta el servidor ssh del pii sin cabeza?
barlop

Respuestas:

1

llegamos allí en el chat

LocalPi>ssh -L *:5678:127.0.0.1:9091  [email protected] -p 16864

luego en Chromebook, http://localpi_IP:5678

Entonces, el pi remoto había hecho un SSH -R creando el puerto 16864 en el localpi.

Ya fue capaz de obtener una terminal para su localpi>ssh [email protected] -p 16864 Raspberry Pi, agregando un -L para abrir el puerto 5678 en su localpi, para que luego pueda conectarse desde un dispositivo, por ejemplo, Chromebook, a su localpi, que va a su remotepi que reenvía a un servidor web en sí mismo / su pi remoto.

Entonces hay dos comandos ssh en total. El de su remoto pi a su localpi. Y uno de su localpi a su remotepi.

Acabamos de enmendar el segundo, el de su localpi a su remotepi. Para hacer un túnel a un servidor web en su pi remoto.

En realidad está haciendo un túnel a través de un túnel.

barlop
fuente
@Budius ¿Qué utilizas para mantener la conexión? Por ejemplo, supongamos que LocalPi se reinicia? ¿Y si se reinicia RemotePi? Algunos pueden usar una secuencia de comandos que ejecuta ssh en un bucle y, por lo tanto, lo intenta de nuevo cuando se corta la conexión. Usted mencionó -N, sin embargo, -N detendría la aparición del shell que no mantendría la conexión activa AFAIK.
barlop
mi configuración original era la siguiente: tunnelsup.com/… Es un pequeño script que verifica la conexión y se conecta si es necesario en un trabajo cron que se ejecuta cada 3 minutos. Entonces, si la conexión se cae o PI se reinicia, se volverá a conectar poco después.
Budius