Mosh, le shell mobile

De Wiki info-lab.fr
Aller à : Navigation, rechercher

Sommaire

Description

MoSh pour Mobile Shell (Site du projet MoSh) est un logiciel client-serveur basé sur le protocole State Synchronization Protocol permettant de se connecter à un shell distant de manière sécurisée, tel SSh mais encapsulé dans UDP.
MoSh a été conçu essentiellement pour contrer les phénomènes auxquels sont soumis les terminaux mobiles utilisant SSh : Le transfert intercellulaire conséquence de l'itinérance provoquant souvent une modification de l'adresse IP à la volée, les interférences radio, zones d'ombre et zones non couvertes induisant latence et perte de paquets ne permettent pas d'utiliser SSh sur un terminal mobile en déplacement.
MoSh est disponible pour de nombreuses distributions Linux, BSD, MasOS X et Androïd. Côtés client et serveur, MoSh n'accepte qu'un seul codage de caractères : UTF-8.

Fonctionnement de MoSh

  • SSP (State Synchronization Protocol) demande au client et au serveur de garder une image de l'état de la connexion et mettent à jour cet état quand la connexion est possible. Dans le cas contraire l'état est figé jusqu'au retour de la connexion. Pour cela les segments SSP incluent un numéro de séquence incrémental et le maintien de connexion par messages réguliers toutes les 3 secondes (heartbeat). Quand la connexion est interrompue, tout nouveau segment SSP authentifié ayant un numéro de séquence supérieur au dernier incrément sera considéré comme appartenant à cette connexion ; si les nouveaux segments envoyé par le client ont une nouvelle adresse IP source, conséquence de l'itinérance, celle-ci sera deviendra à la volée la nouvelle adresse IP de destination des segments envoyés par le serveur.
  • SSP permet non seulement de contrer les problèmes d'itinérance mais aussi la mise en veille involontaire provoquée par les fonctionnalités d'économies d'énergie des appareils mobiles (qui coupent donc les liaisons réseaux) voire les mises en veille volontaires : Il est possible de verrouiller une session ou de mettre en veille son ordinateur (mobile ou pas) et de retrouver plus tard sa connexion là où on l'avait laissée.

Initialisation de la connexion

  • Etablissement d'une connexion SSh standard entre le client et le serveur (MoSh demande donc la présence d'un client SSh, d'un serveur SSh et de quelques secondes de connexion correcte permettant l'utilisation de SSh sur TCP).
  • Génération d'une clé secrète de session (cryptographie symétrique utilisant l'algorithme AES), partagée par le client et le serveur, au sein du canal sécurisé par SSH.
  • MoSh prend le relais et utilise la clé secrète générée par SSh pour ses opérations d'authentification et de chiffrement.

Connexion MoSh

  • Initialisation de la connexion par SSh (voir ci-dessus)
  • Le serveur MoSh ouvre un port UDP (négocié pendant la connexion SSh) par client, en général situé entre 60000 et 61000.
  • Etablissement d'un canal sécurisé client-serveur qui gère l'activation des touches du clavier client à envoyer vers le serveur.
  • Etablissement d'un autre canal sécurisé serveur-client qui gère ce qui sera affiché sur la sortie standard du client.
  • Le client n'attend pas que le serveur accuse réception du caractère envoyé avant de l'afficher sur sa sortie standard, le terminal restant actif même si la connexion est perdue (forte latence par exemple). Les touches saisies qui ne sont pas confirmées par le serveur apparaissent soulignées sur la sortie standard du client, jusqu'à leur confirmation.
  • Le serveur n'envoie que ce qui sera effectivement affiché sur la sortie standard du client. Lors de toute opération faisant défiler un nombre de données incalculables à l'écran, MoSh n'enverra que ce qui est effectivement affiché, limitant ainsi la charge réseau.
  • En cas de longue déconnexion , un bandeau bleu en indiquant la raison et la durée apparaît sur la première ligne du terminal.
  • Le client MoSh, au même titre que SSh, s'utilise à travers n'importe quel terminal, comme une commande quelconque avec argument et options pour lui-même ou pour les instructions préliminaires nécessaires à SSh.
  • La déconnexion s'obtient par les commandes exit, logout ou la combinaison de touches CTRL+D. Le client peut aussi se déconnecter sauvagement sans attendre de réponse du serveur par la combinaison de touches CTRL+^ ou CTRL+6 suivi de .
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Outils