Mosh (programa)

Mosh

Mosh, en la línea superior se subraya la información sobre una interrupción en la conexión, en el terminal, los caracteres predichos y mostrados localmente.
Tipo de Acceso remoto
Autor keith winstein
Desarrollador keith winstein
Escrito en C++
Sistema operativo Sistemas tipo Unix
Primera edición 12 de marzo de 2012  ( 2012-03-12 )
ultima versión 1.3.2 (22 de julio de 2017 [1] ) ( 2017-07-22 )
Licencia GNU GPLv3 [2] con excepciones de OpenSSL e iOS
Sitio web mosh.org

Mosh (del inglés  mobile shell ) es un programa para la conexión remota desde un ordenador cliente a un servidor a través de Internet. Proporciona acceso a un terminal de texto [3] . Mosh es similar [4] a la aplicación SSH , pero tiene funciones adicionales diseñadas para mejorar la experiencia del usuario móvil. Las funciones principales son:

Las principales desventajas de mosh son los requisitos adicionales del servidor y la falta de algunas funciones SSH (como el reenvío de conexiones).

Implementación

Mosh funciona en un nivel diferente al de SSH. Los sistemas clásicos de acceso remoto a terminales simplemente envían un flujo de bytes en cada dirección (servidor a cliente y cliente a servidor) utilizando el protocolo TCP (en el caso de SSH), mientras que mosh ejecuta un emulador de terminal en el servidor para obtener información sobre el texto. que se muestra en la pantalla. El servidor mosh luego transmite este texto al lado del cliente de la aplicación utilizando el protocolo UDP, mientras que la frecuencia de las actualizaciones de pantalla y las transferencias varía según la velocidad de la red [9] . Esto le permite a Mosh reducir la cantidad de datos que envía cuando usa conexiones a Internet lentas o inestables.

Plataformas soportadas

Mosh está disponible para la mayoría de las distribuciones de Linux , macOS , FreeBSD , NetBSD , OpenBSD , Android , Solaris , Cygwin y como una aplicación de Chrome . Termius para iOS (dispositivos móviles Apple) incluye una implementación independiente del protocolo Mosh [10] .

Rendimiento

Itinerancia

Mosh se basa en un esquema de protocolo de sincronización de estado (SSP) [11] que admite itinerancia de un solo paquete [12] . Después de cambiar la dirección IP del cliente, debe enviar un paquete al servidor. La entrega de un solo paquete es suficiente para que el servidor continúe trabajando con este cliente. Además, el cliente no necesita saber sobre el cambio de su dirección.

Pérdida de paquetes

En un artículo de un desarrollador de mosh, SSP sobre la línea se evaluó con una tasa de pérdida de paquetes del 29 %. En comparación con SSH y el protocolo TCP , obtuvieron una reducción de 50 veces en el tiempo de respuesta promedio (0,33 segundos con mosh, en lugar de 16,8 segundos). Otro estudio realizado por estudiantes de la Universidad de Stanford mostró que SSP redujo el tiempo de respuesta promedio en un factor de 30 (de 5,9 segundos a 0,19 segundos) [13] .

Eco local

Según los desarrolladores de mosh, su aplicación es capaz de predecir correctamente el contexto el 70 % de las veces y mostrar inmediatamente los caracteres ingresados ​​por el usuario, lo que reduce el tiempo promedio de respuesta de las pulsaciones de teclas a menos de 5 ms (enmascarando los retrasos de la red ). Otro estudio mostró que mosh podía mostrar rápidamente alrededor del 55 % de las pulsaciones de teclas del usuario [14] .

Desventajas

En comparación con el SSH más popular , mosh tiene las siguientes desventajas:

Requisito del servidor

La principal desventaja de mosh es la necesidad de usar su propio servidor. mosh requiere una conexión udp directa al servidor [15] . Los servidores protegidos por un firewall con puerto restringido no pueden usar mosh (por ejemplo, si el firewall solo permite una conexión TCP SSH entrante al servidor). También son problemáticos los servidores que tienen una conexión indirecta a la red. SSH en algunos casos le permite trabajar con ellos usando la opción 'ProxyCommand', pero esta opción no es compatible con mosh [16] .

Un puerto por conexión

De forma predeterminada, el servidor intenta asignar el primer puerto UDP libre en el rango 60001-60999, un puerto por conexión. Esta asignación dinámica de puertos es una sobrecarga adicional para la gestión de cortafuegos [17] [18] .

No hay soporte para roaming IPv6

Mosh 1.2.5 solo admite conexiones IPv6 fijas, no roaming IPv6 [19] . Esto requiere el uso de la opción de línea de comando "-6". Existe una versión experimental de mosh con soporte para IPv6 de rutas múltiples y conmutación dinámica entre IPv4 e IPv6 [20] [21] .

Terminal de salto y desplazamiento

Mosh no admite el historial de desplazamiento en la terminal. El trabajo de implementación estaba programado para la versión 1.3 [22] . Una forma de combatir esto es usar mosh en combinación con la pantalla del multiplexor del terminal o tmux , que implementan la función de desplazamiento del historial del terminal [23] .

Véase también

Notas

  1. Winstein, Keith mosh 1.3.2 publicado . Lista de correo (22 de julio de 2017). Consultado: 31 de julio de 2017.
  2. Mosh 1.3 Release, SSH Alternatives Archivado el 25 de octubre de 2018 en Wayback Machine /Opennet, 06/04/2017
  3. "Mosh: the mobile shell" Archivado el 5 de agosto de 2016 en Wayback Machine . Recuperado el 28 de marzo de 2013.
  4. 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. Consultado el 28 de marzo de 2013.
  5. Delony, David. "Mosh: Secure Shell Without the Pain" Archivado el 5 de julio de 2018 en Wayback Machine , Technopedia , 19 de octubre de 2012. Consultado el 28 de marzo de 2013.
  6. Cox, John. "Los investigadores del MIT trazan un nuevo enfoque para los protocolos de Internet móvil" Archivado el 18 de octubre de 2012. , Network World , 6 de julio de 2012. Consultado el 28 de marzo de 2013.
  7. Becker, Axel. "Mosh y AutoSSH: herramientas de shell remotas que hacen su vida más fácil en una red lenta o en constante transformación" Archivado el 21 de octubre de 2020 en Wayback Machine , Linux Magazine , noviembre de 2012.
  8. Leyden, John. "Mosh, que lee la mente del MIT, se enfrenta a los demonios SSH". Archivado el 25 de octubre de 2018 en Wayback Machine , The Register , 13 de abril de 2012. Consultado el 28 de marzo de 2013.
  9. Winstein, Keith. "Mosh: un shell remoto interactivo para clientes móviles" , Conferencia técnica anual USENIX 2012, Boston, Massachusetts, 14 de junio de 2012.
  10. "Características de Termius" Archivado el 25 de octubre de 2018 en Wayback Machine , Crystalnix.
  11. ^ "MIT presenta un nuevo protocolo de Internet para clientes móviles" . Consultado el 25 de octubre de 2018. Archivado desde el original el 1 de febrero de 2016.
  12. Winstein, Keith y Balakrishnan, Hari. "Mosh: An Interactive Remote Shell for Mobile Clients (borrador más detallado)" Archivado el 14 de marzo de 2016 en Wayback Machine . Recuperado el 28 de marzo de 2013.
  13. Nagaraj, Kanthi y McMilin, Emily. "Mosh" Archivado el 25 de octubre de 2018 en Wayback Machine , Reproducing Network Research , 14 de marzo de 2013. Consultado el 28 de marzo de 2013.
  14. Aljunied, Ahmed. "Evaluación de los resultados de rendimiento de Mosh 'Mobile Shell'" Archivado el 26 de agosto de 2018 en Wayback Machine , Reproducing Network Research , 13 de marzo de 2013. Consultado el 28 de marzo de 2013.
  15. ↑ "'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 '". Archivado el 5 de agosto de 2016 en Wayback Machine , consultado el 19 de junio de 2014.
  16. "Mosh bug report #285: Can't use a ProxyCommand-based SSH connection" , Consultado el 18 de junio de 2014
  17. "¿Peligros de abrir una amplia gama de puertos? (mosh)" . Archivado el 2 de septiembre de 2018 en Wayback Machine , IT Security (Stack Exchange) , 13 de abril de 2012. Consultado el 28 de marzo de 2013.
  18. Multiplexación de más sesiones en el mismo puerto UDP
  19. [https://web.archive.org/web/20210701202930/http://mailman.mit.edu/pipermail/mosh-users/2015-July/000283.html Archivado el 1 de julio de 2021 en Wayback Machine [mosh -usuarios] mosh 1.2.5 lanzado]
  20. GitHub - boutier/mosh: Versión multirruta de Mobile Shell . Consultado el 25 de octubre de 2018. Archivado desde el original el 11 de junio de 2018.
  21. Matthieu Boutier & Juliusz Chroboczek (2015), UDP de rutas múltiples de espacio de usuario en Mosh 
  22. https://github.com/keithw/mosh/issues/2 "El soporte de desplazamiento hacia atrás está planificado para la versión 1.3"
  23. "Desplazamiento hacia atrás y pantalla alternativa (era: Usar pantalla alternativa en smcup/rmcup)"

Enlaces