Servir flujo de imagen MJPG desde el túnel ssh inverso


1

Antecedentes

Estoy trabajando en un proyecto que involucra 2 servidores. El servidor A es un VPS que ejecuta Ubuntu 14.04 con una dirección IP pública. El servidor B ejecuta un servicio MJPG en el puerto 8080 y no tiene una dirección IP pública. He creado un túnel ssh inverso entre los dos servidores ejecutando el siguiente comando en el servidor B:

ssh <user>@serverA -N -R 8099:localhost:8080

El servidor A tiene apache ejecutándose, que sirve a un sitio con la siguiente configuración (el apache vhost predeterminado)

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

He modificado el archivo encontrado de la /var/www/html/index.htmlsiguiente manera:

<img width=640 height=480 src="http://localhost:8099/?action=stream"/>

El problema

La configuración anterior no funciona para mí. La secuencia no se carga. Puedo ejecutar el siguiente comando en el servidor A y obtener un flujo constante de datos:

curl localhost:8099/?action=stream

Pero por alguna razón, apache no servirá la imagen.

Si edito /etc/ssh/sshd_confy agrego la línea GatewayPorts yes, puedo hacer que la transmisión funcione al ajustar mi fuente de imagen para que http://<server_A_public_ip>:8099/?action=stream, sin embargo, esto exponga la transmisión al público.

También intenté cambiar las directivas Usery para que coincidan con el comando ssh anterior para que apache se inicie como ese usuario. Pero aún así no va.Group/etc/apache2/apache2.conf<user>

Me gustaría poder habilitar un túnel ssh entre el servidor A: 8099 <=> servidor B: 8080, pero tener el puerto 8099 solo será accesible por el servidor A mismo. Nadie debería poder acceder públicamente a la transmisión a través de la URLhttp://<server_A_public_ip>:8099

¿Hay algo obvio que me estoy perdiendo aquí? ¿Alguien tiene alguna otra idea que pueda ayudarme a descubrir cuál es mi problema?

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.