Articulo de referencia

SSH basado en web

El acceso SSH basado en web permite acceder al protocolo Secure Shell (SSH) a través de un navegador web . SSH es un protocolo de red seguro que se utiliza habitualmente para co...

El acceso SSH basado en web permite acceder al protocolo Secure Shell (SSH) a través de un navegador web . SSH es un protocolo de red seguro que se utiliza habitualmente para controlar de forma remota servidores, dispositivos de red y otros dispositivos. Con el acceso SSH basado en web, los usuarios pueden acceder y gestionar estos dispositivos mediante un navegador web estándar, sin necesidad de instalar ningún software adicional.

Los clientes SSH basados ​​en web suelen implementarse con JavaScript y Ajax o WebSockets . Estos clientes se comunican con el servidor SSH a través de un proxy , lo que les permite sortear cortafuegos y otras medidas de seguridad de red que podrían bloquear el tráfico SSH. Esto convierte al SSH basado en web en una forma práctica y segura de acceder a servidores y dispositivos remotos desde cualquier lugar con conexión a internet.

El acceso SSH basado en web es útil para diversos fines, como la administración de sistemas, la gestión de redes y el desarrollo remoto. Lo utilizan con frecuencia profesionales de TI y desarrolladores para acceder y administrar servidores de forma remota, así como particulares que necesitan acceder a sus ordenadores domésticos o de oficina desde una ubicación remota.

Tecnología

Los clientes SSH basados ​​en web son aplicaciones que permiten a los usuarios acceder a servidores Secure Shell (SSH) a través de un navegador web . Constan de dos partes principales: un componente del lado del cliente, que normalmente se implementa utilizando JavaScript y HTML dinámico , y un componente del lado del servidor o aplicación web, que normalmente se implementa en un servidor de aplicaciones .

El componente del lado del cliente captura las pulsaciones de teclas, transmite mensajes desde y hacia el servidor y muestra los resultados en el navegador web del usuario. El componente del lado del servidor procesa las solicitudes entrantes y reenvía los eventos de teclado a un cliente SSH que se comunica con el servidor SSH conectado. La salida de la terminal se envía al cliente, donde se convierte a HTML mediante JavaScript, o bien el servidor la traduce a HTML antes de transmitirla al cliente.

Emulación de terminal

Los servidores SSH basados ​​en web pueden utilizar emulación de terminal tanto del lado del cliente como del lado del servidor.

Emulación de terminal del lado del cliente

La emulación de terminal del lado del cliente transmite la salida sin procesar del servidor SSH directamente al cliente, lo que tiene la ventaja de descargar al cliente el proceso de convertir dicha salida a HTML. Sin embargo, puede verse limitada por las capacidades de JavaScript y puede consumir una cantidad significativa de CPU y memoria del cliente.

Un ejemplo de emulador de terminal del lado del cliente es vt100.js. [ 1 ]

Emulación de terminal del lado del servidor

La emulación de terminal del lado del servidor mantiene en memoria la pantalla y el estado del terminal, y los convierte a HTML cuando se produce una actualización de pantalla o cuando el cliente solicita una actualización. Este método tiene la ventaja de conservar el estado del terminal incluso si el usuario se conecta a su sesión existente desde un navegador web diferente, pero puede consumir más CPU y memoria en el servidor.

Un ejemplo de emulador de terminal del lado del servidor es terminal.py. [ 2 ]

Ventajas

Las principales ventajas de SSH basado en web se pueden resumir de la siguiente manera:

  • Accesibilidad : El protocolo SSH basado en web, tal como se describe en este artículo, no requiere la instalación local de ningún software cliente. Por lo tanto, es posible acceder a los servidores SSH a través de un navegador web desde cualquier lugar. Dado que la comunicación se basa en HTTP o HTTPS, también es posible acceder a los servidores SSH desde detrás de un cortafuegos o un proxy que restrinja el acceso a Internet únicamente a los puertos 80 ( HTTP ) o 443 ( HTTPS ).
  • Acceso anónimo : Dado que el acceso SSH se canaliza a través de un servidor de aplicaciones web intermediario , es este servidor el que se comunica directamente con el servidor SSH. Esto significa que el servidor SSH solo conocerá la dirección IP del servidor de aplicaciones web, manteniendo oculta la dirección IP del cliente.
  • Auditabilidad : Dado que toda la comunicación entre el cliente y el servidor SSH debe pasar por el servidor de la aplicación web, esta comunicación puede registrarse. Esto impide que un cliente malintencionado borre los registros de sus actividades. La situación es exactamente la misma que con un servidor SSH tradicional.
  • Reanudación de sesiones : Algunas implementaciones de SSH basadas en web permiten al usuario reanudar sus sesiones SSH después de una desconexión. Esto no es posible con un cliente SSH tradicional.
  • Integrables : Las implementaciones de SSH basadas en web se pueden integrar en cualquier página web, lo que permite su incorporación a otras aplicaciones web.
  • Características únicas : Muchas herramientas SSH basadas en web tienen características únicas, como la capacidad de compartir terminales con otros usuarios, mostrar imágenes dentro de las terminales y otras funcionalidades útiles.

Cuestiones importantes

Al utilizar un cliente SSH basado en web, se deben tener en cuenta los siguientes aspectos, que son importantes:

  • Seguridad : Es importante asegurarse de que se utilice HTTPS al comunicarse con el servidor de la aplicación web . De lo contrario, todos los datos enviados podrían ser leídos mediante simples analizadores de paquetes, lo que podría revelar información confidencial.
  • Confianza : Los datos que se envían al servidor de la aplicación web se descifran allí. Esto es necesario para reenviar los comandos emitidos al servidor SSH propiamente dicho . Aunque los operadores de soluciones SSH basadas en web no suelen registrar datos confidenciales, teóricamente tienen acceso a ellos sin cifrar. Es improbable que esto genere un problema de seguridad cuando el servidor de la aplicación web y el servidor SSH se ejecutan en el mismo servidor o están controlados por la misma entidad.
  • Túnelización : A diferencia de la mayoría de los clientes SSH tradicionales basados ​​en aplicaciones, los clientes SSH basados ​​en web no pueden tunelizar ("reenviar") tráfico TCP . Por ejemplo, no es posible ejecutar una sesión X sobre una sesión SSH basada en web. Sin embargo, esta limitación se debe a problemas de implementación y no es inherente a la aplicación. [ 3 ]

Ejemplos de código abierto y gratuito

  • La extensión Secure Shell de Google para Chrome y Chromium [ 4 ] combina el emulador de terminal hterm de JavaScript con el código cliente OpenSSH que se ejecuta en Native Client . [ 5 ] La extensión Secure Shell funciona con proxies HTTP a SSH que no son de Google a través de ganchos de proxy, y la aplicación de terceros nassh-relay [ 6 ] puede usar esos ganchos para permitir que la extensión Secure Shell establezca una conexión SSH a través del transporte XMLHttpRequest o WebSocket .
  • shellinabox [ 7 ] funciona como un servicio independiente o junto con nginx para proporcionar acceso HTTPS a un shell de inicio de sesión, y está empaquetado para distribuciones de Linux derivadas de Debian y RedHat .
  • webssh [ 8 ] es una solución similar escrita en Python.
  • Bastillion [ 9 ] es un servidor bastión autohospedado basado en web con capacidades de auditoría y administración de claves . Los usuarios se conectan a un servidor centralizado a través de HTTPS y las conexiones SSH se gestionan mediante un protocolo WebSocket seguro .
  • FireSSH es un complemento para navegadores que funciona en Firefox ESR y Waterfox.

Véase también

Referencias

  1. "Archivo de Google Code: almacenamiento a largo plazo para el alojamiento de proyectos de Google Code" .
  2. "Terminal.py - Un emulador de terminal en Python puro — Documentación de Gate One 1.2.0" .
  3. jcterm afirma poder gestionar el reenvío de puertos, como el reenvío de X11.
  4. "Aplicación Secure Shell" .
  5. Preguntas frecuentes sobre Chromium Secure Shell
  6. Repositorio de GitHub de nassh-relay
  7. "Shellinabox" . GitHub . 28 de octubre de 2021.
  8. "Webssh: Cliente SSH basado en web" .
  9. Bastillion - Acceso SSH y gestión de claves basados ​​en web