Comment est-ce que je ssh sur les connexions lentes / feuilletées?

20

J'ai affaire à une connexion shell très lente. C'est dans le cloud et je suis très loin du serveur. Ma connexion se brise aussi parfois car elle est sur Internet et je peux également utiliser le Wifi partagé ou la 3G. Existe-t-il un moyen de voir ce que je tape instantanément? Essayer de taper des commandes et attendre chaque caractère est atroce.

Des morts-vivants
la source
4
Utilisez "écran" pour maintenir votre session en vie, afin que vous puissiez vous reconnecter lorsque vous vous déconnectez.
Konerak

Réponses:

24

Essayez Mosh .

Mosh (shell mobile)
Application de terminal distant qui permet l'itinérance, prend en charge la connectivité intermittente et fournit un écho local intelligent et une modification de ligne des frappes de l'utilisateur.

Mosh est un remplacement pour SSH. Il est plus robuste et réactif, en particulier sur les liaisons Wi-Fi, cellulaires et longue distance.

Mosh est un logiciel gratuit, disponible pour GNU / Linux, FreeBSD, Solaris, Mac OS X et Android.

dmourati
la source
3
Avertissements à mosh: (1) il est beaucoup plus intensif en CPU que ssh. (2) Si votre session Mosh ne se termine pas normalement, vous aurez une fuite de connexion qui ne pourra jamais être rétablie. (Je dois nettoyer ma boîte shell sinon il y aura des dizaines de processus en cours d'exécution).
user606723
Un autre problème est qu'il est presque impossible d'installer sur une distribution Linux comme Suse (SLES). J'ai passé des heures à essayer de l'installer sous forme de package openSuse ou de le compiler à partir des sources.
Zombies
$ sudo zypper in mosh (selon les documents)
dmourati
Oui, cela fonctionnera bien sur openSuse, mais une distribution d'entreprise / fermée, il est très difficile d'installer de nouveaux projets open source.
Zombies
10

une alternative (et aussi en plus) à la réponse dmourati: utiliser screenou tmuxou autre chose, pour maintenir les sessions en vie lorsque vous êtes déconnecté. (Vous vous reconnectez simplement à la session après vous être reconnecté et voyez le terminal tel que vous l'avez laissé, même avec des programmes plein écran [vi, etc.]). Il présente également de nombreux autres avantages (partage de sessions avec des collègues, etc.) (comme dans la propre FAQ de Mosh, il indique:

Q: Pourquoi le tampon de défilement de mon terminal est-il incomplet?

Mosh 1.2 synchronise uniquement l'état visible du terminal. Mosh 1.3 aura un support de défilement complet; voir ce problème et les autres qui sont liés à partir de là. Pour l'instant, la solution consiste à utiliser screen ou tmux du côté distant.

Et vous devez également utiliser rsyncpour copier des fichiers, sans avoir à renvoyer des pièces déjà envoyées sur le réseau lorsque la connexion s'éteint.

Olivier Dulac
la source
2

Vous devriez voir où se trouvent les latences / goulots d'étranglement. Vous devriez essayer d'obtenir un meilleur accès à l'infrastructure ... soit localement, soit du côté du fournisseur. Vous encapsulez vos sessions importantes ou critiques dans tmuxou screenmultiplexeurs ...

Veuillez nous donner des chiffres. Il faut une connexion particulièrement mauvaise pour que les sessions SSH simples aient des problèmes ... J'ai dû accéder à des systèmes à l'autre bout du monde depuis un avion via un VPN et je n'ai toujours pas eu trop de problèmes. Est-ce un problème persistant? Qu'est-ce que ça traceroutevous dit?

ewwhite
la source
Le problème se produit souvent sur le wifi de l'hôtel, où il y a trop peu de routeurs et trop d'appareils / ordinateurs portables partageant un accès Internet. De plus, le wifi de l'hôtel partagé est intrinsèquement assez minable avec des temps de ping car passer à travers un ou plusieurs murs ajoute vraiment beaucoup de retard. C'est également un autre goulot d'étranglement majeur. Une situation similaire se produit sur la 3G, où cette grande distance de la tour de téléphonie cellulaire ajoute MS. Lorsque j'utilise des shells SSH, je dois attendre chaque personnage. Un MS de 200-400 peut être assez ennuyeux, mais avec des pointes allant jusqu'à 1 seconde ... aïe.
Zombies
1

Pour les futurs lecteurs de ce fil, le conseil de @lowellheddings dans son blog , ainsi que l'utilisation de l' écran , pourraient aider à surmonter ce problème:

Vous pouvez configurer le client ssh pour envoyer automatiquement un code de code no-op de protocole toutes les secondes afin que le serveur ne vous déconnecte pas. Ce paramètre est parfois appelé Keep-Alive ou Stop-Disconnecting-So-Much dans d'autres clients.
Ajoutez la ligne suivante au fichier / etc / ssh / ssh_config:
ServerAliveInterval 60
...

Snidhi Sofpro
la source