Mosh : un terminal distant résilient basé sur UDP

Vue d'ensemble

Mosh (Mobile Shell) est un client/serveur de terminal distant conçu pour les environnements à connectivité variable. Il repose sur UDP et maintient la session active en cas de changement d'adresse IP, de veille du poste ou de perte temporaire de paquets.

Différences clés avec SSH

  • Transport UDP au lieu de TCP
  • Connexion persistante lors du roaming entre réseaux
  • Affichage prédit localement pour réduire la latence perçue
  • Établissement de la session en deux temps : SSH pour l'authentification, puis UDP pour les données

Mécanismes fondamentaux

Résilience du lien

La session Mosh reste stable même si :

  • l'ordinateur passe en veille puis se réveille ;
  • le client bascule du Wi-Fi vers la 4G/5G ;
  • le réseau subit une courte coupure.

Prédiction de l'affichage local

Un modèle de prédiction affiche immédiatement les caractères saisis. Les touches courantes (lettres, Backspace, flèches) sont optimisées. Les caractères prédits apparaissent généralement soulignés jusqu'à confirmtaion par le serveur.

Connexion en deux phases

  1. Le client ouvre un canal SSH pour s'authentifier et déployer mosh-server.
  2. mosh-client reprend la session via un datagramme UDP sur un port éphémère.

Installation et premières commandes

Syntaxe

mosh [options] [--] [utilisateur@]hote [commande]

Exemples concrets

mosh alice@vm-lab.local
mosh --ssh="ssh -p 2222" root@10.0.0.5
mosh -p 60010 bob@serveur.example.com -- tmux attach

Paramètres avancés

Famille d'adresses

mosh --family=inet  hote    # IPv4 uniquement
mosh --family=inet6 hote    # IPv6 uniquement
mosh --family=auto   hote   # détection automatique
mosh --family=all    hote   # essayer toutes les adresses (≥ 1.2.5)

Modes de prédiction

mosh --predict=adaptive hote   # par défaut
mosh --predict=always   hote   # prédiction systématique
mosh --predict=never    hote   # désactivé

Gamme de ports UDP

mosh -p 60001         hote    # port fixe
mosh -p 60000:61000   hote    # plage
mosh -p 0             hote    # port choisi automatiquement

Séquence d'échappeemnt et liaison

Par défaut, la séquence d'échappement est Ctrl+^, suivie de :

  • . pour fermer la session
  • Ctrl-Z pour suspendre le client

On peut modifier la touche d'échappement :

export MOSH_ESCAPE_KEY='^Z'

Concernant l'interface d'écoute du serveur :

mosh --bind-server=ssh  hote     # IP d'origine du canal SSH (défaut)
mosh --bind-server=any  hote     # toutes les interfaces
mosh --bind-server=1.2.3.4 hote  # interface spécifique

Limites et prérequis

Fonctionnalités non prises en charge

  • Transfert X11
  • Redirection de ports ou autres usages non interactifs de SSH
  • Montage de fichiers distant via sshfs

Exigences réseau et système

  • Communication UDP ouverte entre le client et le serveur
  • Plage par défaut 60000–61000
  • Locale et encodage UTF-8 obligatoire

Variables d'environnement utiles

Variable Effet
MOSH_ESCAPE_KEY Définit la touche d'échappement
MOSH_PREDICTION_DISPLAY Active ou désactive la prédiction locale
MOSH_TITLE_NOPREFIX Supprime le préfixe [mosh] du titre de fenêtre

Cas d'usage recommandés

Le choix de Mosh se justifie particulièrement dans les contextes suivants :

  • Télétravail depuis des lieux publics avec un Wi-Fi instable
  • Déplacements avec basculement entre réseaux mobiles et fixes
  • Liaisons à forte latence où la réactivité du terminal est primordiale
  • Équipements passant fréquemment en veille

Étiquettes: mosh SSH UDP terminal-distant roaming

Publié le 15 juillet à 01h08