Qu'est-ce que le Mosh Shell et comment l'utilisez-vous?
Mosh, ou «Mobile Shell», est conçu pour remplacer SSH, en particulier pour les appareils mobiles ou les ordinateurs portables sur des connexions lentes. Mosh fonctionne sur UDP et maintiendra votre connexion en vie, même si vous changez de réseau WiFi ou si le signal cellulaire fluctue.
Sommaire
Qu'est-ce que Mosh?
Le système de transfert basé sur UDP de Mosh le rend plus stable que le SSH traditionnel, car il gère la perte de paquets beaucoup plus efficacement. Si votre connexion s'arrête un peu, Mosh vous reconnectera dès qu'elle reviendra, laissant vos commandes en place pendant que vous tapiez.
Il réduit également considérablement la latence; si vous avez déjà essayé de SSH sur un serveur lent, vous remarquerez que même vos frappes deviennent lentes et ne répondent plus. En effet, le client SSH attend une réponse TCP du serveur avant d'afficher votre saisie, au cas où le serveur l'intercepterait pour une raison quelconque. Mosh est plus intelligent et affichera votre saisie en temps réel. Il donne même des prédictions de frappe soulignées, ce qui est également pratique.
Si la persistance à long terme est tout ce que vous recherchez, vous pouvez plutôt utiliser tmux
sur votre serveur via SSH. Tmux divise votre terminal en plusieurs volets, chacun avec plusieurs onglets, qui persistent tous sur le serveur à travers les sessions SSH. L'avantage ici est que si votre session SSH est déconnectée, cela n'affecte pas ce qui se passe sur le serveur, de la même manière que Mosh.
Mais Mosh et tmux
jouer aussi bien ensemble, car Mosh vous reconnectera automatiquement à votre session tmux si votre connexion est interrompue, sans avoir à exécuter ssh
et tmux -a t (name)
encore une fois.
Dans quelle mesure Mosh est-il sécurisé?
Mosh établit la connexion initiale via SSH, donc l'authentification est à peu près aussi sécurisée que SSH. Il utilise le cryptage AES-128 pour le trafic envoyé via UDP, afin que votre trafic ne puisse pas être reniflé.
Le principal problème avec Mosh est qu'il nécessite l'ouverture de nombreux ports. Mosh peut utiliser n'importe quel port entre 60000 et 61000, selon l'adresse IP de la connexion. Et bien que vous utilisiez généralement le même port pendant la durée de la connexion, ce n'est pas garanti. Ce n'est pas un problème majeur, mais ouvrir 1000 ports n'est pas vraiment une bonne pratique de sécurité.
Si vous exécutez un pare-feu comme iptables, vous devrez ouvrir ces ports manuellement:
sudo iptables -I INPUT 1 -p udp --dport 60000:61000 -j ACCEPT
Et si vous exécutez un serveur sur un service comme AWS, vous devrez également ouvrir les ports via leur pare-feu. Si vous voulez qu'il soit plus sécurisé, vous pouvez utiliser le port knocking pour fermer ces adresses et les ouvrir uniquement lorsque Mosh frappe, mais ce n'est pas idéal non plus si le port change pendant votre session.
En fin de compte, si vous utilisez Mosh et que vous vous inquiétez de la sécurité, vous devriez probablement le faire écouter sur votre réseau privé et utiliser un VPN.
Installer le serveur Mosh et obtenir un client Mosh
Pour que Mosh fonctionne, le serveur doit avoir installé les binaires Mosh. Cela n’exécute pas un démon comme sshd
; il s'agit plutôt de la première commande exécutée par votre client Mosh lors de la connexion via SSH. Lorsque la connexion se ferme, le serveur met fin au serveur Mosh en cours d'exécution.
L'installation est assez simple, car elle est disponible sur la plupart des gestionnaires de packages. Pour les systèmes basés sur Debian comme Ubuntu, ce serait:
sudo apt-get install mosh
Cela installe le client et le serveur, vous installerez donc le même package sur les deux. Les installations orientées serveur nécessiteront simplement que vous remplaciez apt-get
pour le gestionnaire de paquets de votre distribution.
Pour Windows, vous devrez installer le client pour Chrome. Il n'y a pas encore de binaire pour Windows.
Pour macOS, vous pouvez installer le package directement ou l'installer à l'aide de Homebrew:
brew install mosh
Pour iOS, vous pouvez utiliser une application comme Termius ou Blink Shell.
Et pour Android, vous pouvez utiliser une application comme Termux ou JuiceSSH.
Dans tous les cas, vous vous connecterez comme vous le feriez avec SSH:
mosh user@server
Cela se connecte avec un nom d'utilisateur et un mot de passe. Si cela ne vous convient pas, vous pouvez également spécifier manuellement de nouvelles options SSH avec le --ssh
paramètre:
mosh --ssh="~/bin/ssh -i ~/ssh/id_rsa" user@port
Cette commande utilisera votre clé privée plutôt qu'un mot de passe. Notez que le serveur devra être configuré pour accepter cette clé privée, surtout s'il s'agit d'une nouvelle provenant d'un téléphone ou d'un autre appareil.