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
- Le client ouvre un canal SSH pour s'authentifier et déployer
mosh-server. mosh-clientreprend 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 sessionCtrl-Zpour 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