En informática , Mosh (shell móvil) es una herramienta que se utiliza para conectarse desde una computadora cliente a un servidor a través de Internet, para ejecutar una terminal remota . [2] Mosh es similar [3] a SSH , con características adicionales destinadas a mejorar la usabilidad para los usuarios móviles . Las principales características son:
- Mosh mantiene su sesión incluso cuando " vagabundea " (cuando el punto final del cliente cambia a diferentes direcciones IP ), por ejemplo, moviéndose a una red Wi-Fi diferente o cuando cambia de Wi-Fi a 3G . [4]
- Mosh mantiene la sesión de terminal (no "conexión" en el sentido de TCP porque Mosh usa UDP ) incluso cuando un usuario pierde su conexión a Internet o pone a su cliente en " suspensión ". En comparación, SSH puede perder su conexión en tales casos porque TCP agota el tiempo de espera. [5]
- El cliente Mosh intenta responder a los eventos del teclado (escribir, borrar caracteres con la tecla [Eliminar], etc.) sin esperar el retraso de la red . Utiliza un sistema adaptativo que predice si la aplicación que se ejecuta en el servidor decidirá repetir las pulsaciones o eliminaciones de teclas del usuario. [6] [7]
Autor (es) original (es) | Keith Winstein |
---|---|
Versión inicial | 12 de marzo de 2012 |
Lanzamiento estable | 1.3.2 / 22 de julio de 2017 [1] |
Repositorio | |
Sistema operativo | Sistemas similares a Unix |
Tipo | Software de utilidad |
Licencia | GNU GPLv3 con excepciones de OpenSSL e iOS |
Sitio web | mosh |
Los principales inconvenientes de mosh son requisitos previos adicionales para el servidor, que carece de algunas características especiales de SSH (como el reenvío de conexiones) y la falta de un cliente nativo de Windows . [2]
Diseño
Mosh trabaja en una capa diferente a SSH. Mientras que SSH transmite un flujo de bytes en cada dirección (de servidor a cliente o de cliente a servidor) usando TCP , Mosh ejecuta un emulador de terminal en el servidor para averiguar qué debería estar en la pantalla. [2] El servidor luego transmite esta pantalla al cliente a una velocidad de fotogramas variable, dependiendo de la velocidad de la red. [8] Esto permite a Mosh ahorrar tráfico de red en conexiones lentas o intermitentes.
Plataformas compatibles
Mosh está disponible para la mayoría de las distribuciones de Linux , macOS , FreeBSD , NetBSD y OpenBSD , Android , Solaris , Cygwin y como una aplicación de Chrome . [2] El programa iOS Termius incluye una implementación independiente del protocolo Mosh. [9]
Actuación
Itinerancia
Mosh se basa en el protocolo de sincronización de estado (SSP), [10] que admite itinerancia de paquete único. [11] Después de que el cliente ha cambiado a una nueva dirección IP, un solo paquete que llega exitosamente al servidor es suficiente para "roaming" en la conexión. El cliente no necesita saber que se ha desplazado. (Es posible que el cliente esté usando NAT y que NAT se haya desplazado en su lugar). [8]
Paquete perdido
En el artículo de investigación de Mosh, [8] los creadores probaron SSP en un enlace con una pérdida de paquetes del 29% y encontraron que SSP redujo el tiempo de respuesta promedio en un factor de 50 (de 16.8 segundos a 0.33 segundos) en comparación con SSH, que usa TCP . Un estudio diferente, realizado por estudiantes de la Universidad de Stanford , encontró que SSP redujo el tiempo de respuesta promedio en un factor de 30 (de 5,9 segundos a 0,19 segundos). [12]
Eco local
Según los desarrolladores de Mosh, se descubrió que el programa era capaz de predecir y mostrar inmediatamente el 70% de las pulsaciones de teclas del usuario, [2] [8] reduciendo el tiempo medio de respuesta a una pulsación de tecla a menos de 5 milisegundos (enmascarando la latencia de la red). . Un estudio diferente, realizado por estudiantes de la Universidad de Stanford, encontró que Mosh fue capaz de repetir rápidamente el 55% de las pulsaciones de teclas de los usuarios. [13]
Inconvenientes
En comparación con el SSH más popular , mosh tiene los siguientes inconvenientes:
Requisitos previos en el servidor
El mayor inconveniente de mosh es que requiere que el servidor cumpla con requisitos previos adicionales que no son necesarios para ssh. Debido a su diseño, mosh necesita que el servidor permita conexiones directas a través de UDP. [14] Mosh no puede utilizar servidores que no cumplan con estos requisitos previos. Ejemplos de tales sistemas incluyen servidores detrás de cortafuegos que restringen las conexiones al puerto ssh a través de TCP. También son problemáticos los servidores a los que solo se puede acceder indirectamente. Este último suele ser acomodado por ssh a través de la opción 'ProxyCommand', pero esto no es compatible con mosh. [15]
Un puerto por conexión
De forma predeterminada, el servidor intenta asignar el primer puerto UDP libre en el rango 60001–61000, por conexión. Esta asignación dinámica de puertos se considera una carga y un riesgo adicionales para el mantenimiento del firewall. [16] Una parte importante del filtrado del cortafuegos ocurre a través del seguimiento de la conexión, llamado filtrado con estado , esto se basa en las banderas SYN / ACK en los segmentos TCP , los paquetes UDP no tienen tales banderas. [17]
Mitigación:
- El puerto UDP en el servidor se puede configurar por conexión mosh, por lo que solo es necesario abrir un número limitado de puertos [18]
- Cortafuegos de inspección profunda de paquetes y cortafuegos de aplicación puede manejar esto mejor examinado el contenido del paquete y asociarlo a la conexión inicial.
Caídas de salida y falta de retroceso del terminal
Scrollback no es compatible con la versión actual de mosh, y cuando se usa en un emulador de terminal con barras de desplazamiento, desaparecen, pero está previsto para la versión 1.3. [19] Esta funcionalidad se compensa con la limpieza de basura, ya que la salida binaria se borra [ aclaración necesaria ] . Una forma de mitigar esto actualmente es usando mosh en combinación con un multiplexor de terminal como screen o tmux . [20]
Falta de reenvío del agente ssh
Actualmente, no se admite el reenvío de agentes SSH. [21]
Falta de reenvío X11
El reenvío X11 aún no es compatible. [22]
Ver también
- Terminal orientado a bloques
- tmux
- Cubierta segura
- Interfaz de línea de comandos
Referencias
- ^ Winstein, Keith (22 de julio de 2017). "Mosh 1.3.2 lanzado" . mosh-users (lista de correo) . Consultado el 31 de julio de 2017 .
- ^ a b c d e "Mosh: el caparazón móvil" . Consultado el 28 de marzo de 2013.
- ^ Brockmeier, Joe. "Into the Mosh Pit: A Mobile Shell Replacement for SSH" Archivado el 20 de marzo de 2014 en Wayback Machine , linux.com , 10 de abril de 2012. Recuperado el 28 de marzo de 2013.
- ^ Delony, David. "Mosh: Secure Shell Without the Pain" , Technopedia , 19 de octubre de 2012. Consultado el 28 de marzo de 2013.
- ^ Cox, John. "Los investigadores del MIT trazan un nuevo enfoque para los protocolos de Internet móvil". Archivado el18 de octubre de 2012en Wayback Machine , Network World , el 6 de julio de 2012. Recuperado el 28 de marzo de 2013.
- ^ Beckert, Axel. "Mosh y AutoSSH: herramientas de shell remotas que le facilitan la vida en una red lenta o en constante transformación" , Linux Magazine , noviembre de 2012.
- ^ Leyden, John. "Mosh, que lee la mente del MIT, se enfrenta a los demonios SSH" , The Register , 13 de abril de 2012. Consultado el 28 de marzo de 2013.
- ^ a b c d Winstein, Keith. "Mosh: An Interactive Remote Shell for Mobile Clients" , Conferencia técnica anual de USENIX 2012, Boston, Mass., 14 de junio de 2012.
- ^ "Características de Termius" , Crystalnix.
- ^ "MIT presenta un nuevo protocolo de Internet para clientes móviles"
- ^ Winstein, Keith y Balakrishnan, Hari. "Mosh: un shell remoto interactivo para clientes móviles (borrador más detallado)" . Consultado el 28 de marzo de 2013.
- ^ Nagaraj, Kanthi y McMilin, Emily. "Mosh" , Reproducing Network Research , 14 de marzo de 2013. Consultado el 28 de marzo de 2013.
- ^ Aljunied, Ahmed. "Evaluation of Mosh 'Mobile Shell' Performance Results" , Reproducing Network Research , 13 de marzo de 2013. Consultado el 28 de marzo de 2013.
- ^ "'Mosh iniciará la sesión del usuario a través de SSH, luego iniciará una conexión en un puerto UDP entre 60000 y 61000.'" , Consultado el 19 de junio de 2014.
- ^ "Mosh bug report # 285: Can't use a ProxyCommand-based SSH connection" , obtenido el 18 de junio de 2014
- ^ "¿Peligros de abrir una amplia gama de puertos? (Mosh)" , Seguridad de TI (Stack Exchange) , 13 de abril de 2012. Consultado el 28 de marzo de 2013.
- ^ Multiplexación de más sesiones en el mismo puerto UDP
- ^ "use -p para definir el puerto UDP remoto"
- ^ https://github.com/keithw/mosh/issues/2 "La compatibilidad con Scrollback está prevista para la versión 1.3"
- ^ "Desplazarse hacia atrás y pantalla alternativa (antes: Usar pantalla alternativa en smcup / rmcup)"
- ^ "Reenvío de agentes SSH"
- ^ "Soporte X reenvío"