L'installation de mosh-server sur Ubuntu, Debian et Alpine nécessite l'ajout du paquet officiel de la distribution, l'autorisation du trafic UDP entrant sur les ports 60000 à 61000 et la vérification d'une locale UTF-8 active. Le démon s'initialise via une session SSH initiale pour fournir des connexions shell distantes persistantes, résistantes aux pertes de paquets et au roaming d'adresses IP.

Prérequis réseau et ports UDP pour mosh-server

Mosh initialise le binaire distant mosh-server via une connexion OpenSSH préliminaire qui écoute par défaut sur le port TCP 22. Après une authentification réussie par clé publique ou mot de passe, le serveur lance le processus sur un port UDP négocié compris entre 60000 et 61000, puis ferme le canal SSH interactif pour fonctionner via des datagrammes chiffrés.

Le pare-feu du serveur doit autoriser les paquets entrants sur cette plage de ports afin de permettre aux clients mobiles et de bureau de communiquer. Contrairement à OpenSSH standard, Mosh n'implémente pas la redirection de port TCP ni le transfert X11, concentrant strictement son protocole sur la prédiction de saisie, la faible latence et la récupération de connexion sur des interfaces instables.

Propriété techniqueOpenSSH standardMosh avec mosh-server
Protocole de transportTCP persistant avec contrôle de fluxUDP chiffré via State Synchronization Protocol
Ports de pare-feuPort TCP 22 par défautPlage UDP 60000-61000 plus TCP 22 pour l'initialisation
Itinérance IP clientInterruption immédiate de la session au changement d'IPSession persistante en toute transparence entre les réseaux
Redirection de port et X11Prise en charge native via des drapeaux de commandeNon implémenté par conception architecturale

Lorsque les machines se trouvent derrière un CGNAT strict sans adresse IPv4 publique accessible, les administrateurs peuvent déployer des réseaux maillés privés superposés tels que le réseau maillé sécurisé Prialo ou Tailscale pour établir des liaisons directes sans ouvrir de ports de pare-feu publics arbitraires.

Installer mosh-server sur Ubuntu et Debian avec apt

Le gestionnaire de paquets apt fournit mosh-server directement depuis les dépôts de base d'Ubuntu et Debian, sans nécessiter d'archives de paquets personnelles tierces. L'installation du paquet unifié fournit à la fois les composants clients et les binaires serveur nécessaires aux connexions entrantes.

sudo apt update
sudo apt install -y mosh

Pour autoriser les paquets UDP à travers la configuration par défaut du pare-feu Ubuntu, configurez Uncomplicated Firewall (UFW) afin d'accepter la plage de ports allouée :

sudo ufw allow 60000:61000/udp
sudo ufw status verbose

Si le service OpenSSH écoute sur un autre port, fournissez la chaîne de connexion sur le client via --ssh="ssh -p PORT". Quel que soit le port d'initialisation, mosh-server doit résider dans le $PATH du système utilisateur cible, généralement installé sous /usr/bin/mosh-server.

Configurer les locales UTF-8 pour éviter les erreurs de démarrage

Mosh impose un encodage de caractères UTF-8 valide sur les environnements client et serveur. Si les variables d'environnement du système basculent vers des définitions POSIX ou C dépourvues de support UTF-8, le processus distant mosh-server se ferme immédiatement avec une erreur de diagnostic fatale au démarrage.

Les images serveur minimales sous Debian et Ubuntu manquent souvent de locales non-ASCII pré-générées. Exécutez les commandes suivantes pour générer et définir la configuration des locales au niveau du système :

sudo apt install -y locales
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8

Vérifiez l'environnement en contrôlant la sortie de la commande locale dans une session SSH active ; les variables LANG et LC_CTYPE doivent mentionner explicitement UTF-8 avant de lancer Mosh.

Installer mosh-server sur Alpine Linux avec apk

Alpine Linux inclut Mosh dans son dépôt de paquets principal géré via apk. Comme Alpine utilise la bibliothèque C légère musl au lieu de glibc, la compatibilité UTF-8 est gérée nativement sans recourir à des binaires dédiés de génération de locales.

apk update
apk add mosh

Si Alpine s'appuie sur iptables ou nftables pour restreindre l'accès périmétrique, ajoutez une règle acceptant les datagrammes dans la plage d'allocation UDP prévue :

iptables -A INPUT -p udp --dport 60000:61000 -j ACCEPT
rc-service iptables save

Assurez-vous que le démon serveur OpenSSH (sshd) s'exécute sur l'hôte Alpine, car Mosh ne maintient pas de service d'écoute persistant en arrière-plan ; il lance mosh-server dynamiquement dès réception d'une invocation SSH authentifiée.

Connexions mobiles et fiabilité des sessions avec termi1

L'utilisation de termi1 pour les sessions de terminal mobile associe Mosh à des gestionnaires de processus pour préserver les tâches en cours contre les déconnexions accidentelles. Lors des transitions entre points d'accès Wi-Fi et antennes cellulaires sur téléphone, Mosh maintient le terminal réactif sans réinitialiser son état distant.

Attacher des commandes à tmux sur la machine distante garantit que les tâches actives se poursuivent sans interruption si l'application cliente s'arrête. Dans termi1, l'interface clavier spécialisée offre un accès direct aux touches de contrôle essentielles absentes des claviers virtuels standards, notamment Esc, Ctrl, Tab et une rangée de fonctions auxiliaires contenant F1 à F12.

Les clés SSH cryptographiques générées directement sur le téléphone restent stockées dans des enclaves de sécurité matérielles sans jamais quitter l'appareil. De plus, les outils d'assistance aux commandes de termi1 utilisent des modes de protection pour vérifier les commandes avant soumission, protégeant les systèmes distants contre toute action destructive involontaire sur des liaisons instables.

Questions fréquentes

Pourquoi mosh-server nécessite-t-il une connexion SSH initiale ?

Mosh s'appuie sur OpenSSH sur le port TCP 22 pour authentifier l'utilisateur et échanger de manière sécurisée une clé de session éphémère de 128 bits. Après avoir établi cette confiance mutuelle, mosh-server ouvre un socket UDP désigné, ce qui permet au client de basculer le trafic du terminal hors de TCP.

Comment définir un port UDP spécifique pour mosh-server ?

Le client Mosh prend en charge le drapeau -p pour désigner un port UDP unique au lieu d'autoriser une sélection dynamique sur la plage 60000-61000 par défaut. Définir ce port explicite simplifie la configuration des règles de pare-feu entrant sur les infrastructures soumises à des règles de sécurité strictes.

Pourquoi mosh-server s'arrête-t-il immédiatement avec des erreurs de locale ?

mosh-server s'arrête immédiatement si l'environnement du client ou du serveur signale un jeu de caractères différent d'UTF-8. Le protocole de synchronisation exige une compatibilité UTF-8 complète sur les deux extrémités afin d'afficher et de répliquer fidèlement l'état de l'écran du terminal sans altération visuelle.

mosh-server prend-il en charge la redirection de port SSH standard ?

mosh-server ne prend pas en charge le tunneling de ports TCP, les proxys SOCKS ou le transfert X11 proposés par OpenSSH standard. Son architecture se concentre exclusivement sur la synchronisation d'état du terminal via des connexions UDP à faible bande passante ou forte latence, sans multiplexage générique de flux.