¿Cómo hago ssh en conexiones lentas / escamosas?

20

Estoy tratando con una conexión de shell realmente lenta. Está en la nube y estoy muy lejos del servidor. Mi conexión también se rompe a veces, ya que es a través de Internet y también puedo estar usando Wifi compartido o 3G. ¿Hay alguna manera de ver lo que escribo al instante? Intentar escribir comandos y esperar a cada personaje es atroz.

Zombis
fuente
44
Use "pantalla" para mantener viva su sesión, de modo que pueda volver a conectarse cuando se desconecte.
Konerak

Respuestas:

24

Trate Mosh .


Aplicación de terminal remota Mosh (shell móvil) que permite itinerancia, admite conectividad intermitente y proporciona eco local inteligente y edición de línea de las pulsaciones de teclas del usuario.

Mosh es un reemplazo para SSH. Es más robusto y receptivo, especialmente a través de Wi-Fi, celulares y enlaces de larga distancia.

Mosh es un software gratuito, disponible para GNU / Linux, FreeBSD, Solaris, Mac OS X y Android.

dmourati
fuente
3
Advertencias a Mosh: (1) es mucho más intensivo en CPU que SSH. (2) Si su sesión de mosh no termina normalmente, tendrá una conexión filtrada que nunca podrá restablecerse. (Tengo que limpiar mi caja de shell de lo contrario, habrá docenas de procesos en ejecución).
user606723
Otro problema es que es casi imposible instalarlo en Linux distro como Suse (SLES). Pasé horas tratando de instalarlo como un paquete openSuse o compilándolo desde la fuente.
Zombis
$ sudo zypper en mosh (según los documentos)
dmourati
Sí, eso funcionará bien en openSuse, pero una distribución corporativa / cerrada es muy tarea de instalar nuevos proyectos de código abierto.
Zombies
10

una alternativa (y también en adición) a la respuesta dmourati: uso screeno tmuxu otras cosas, para mantener activas las sesiones cuando esté desconectado. (Simplemente se vuelve a conectar a la sesión después de reconectarse y ve el terminal tal como lo dejó, incluso con programas de pantalla completa [vi, etc.]). También tiene muchos otros beneficios (compartir sesiones con compañeros de trabajo, etc.) (como en las preguntas frecuentes de Mosh, dice:

P: ¿Por qué está incompleto el búfer de desplazamiento de mi terminal?

Mosh 1.2 sincroniza solo el estado visible de la terminal. Mosh 1.3 tendrá soporte completo de desplazamiento hacia atrás; vea este tema y los otros que están vinculados desde allí. Por ahora, la solución consiste en usar screen o tmux en el lado remoto.

Y también debe usarlo rsyncpara copiar archivos, sin tener que volver a enviar partes ya enviadas a través de la red cuando se corta la conexión.

Olivier Dulac
fuente
2

Debería ver dónde están la latencia / los cuellos de botella. Debe intentar obtener un mejor acceso a la infraestructura ... localmente o del lado del proveedor. Se envuelve sus sesiones importantes o críticos en tmuxo screenmultiplexores ...

Por favor dénos números. Se necesita una conexión particularmente mala para que las sesiones SSH simples tengan problemas ... He tenido que acceder a sistemas del otro lado del mundo desde un avión a través de una VPN y todavía no he tenido demasiados problemas. ¿Es este un problema persistente? Que traceroutete dice

ewwhite
fuente
El problema ocurre mucho en el wifi del hotel, donde hay muy pocos enrutadores y demasiados dispositivos / computadoras portátiles que comparten acceso a Internet. Además, el wifi compartido del hotel es intrínsecamente bastante malo con tiempos de ping ya que atravesar 1 o más paredes realmente agrega mucho retraso de ms. Ese es también otro gran cuello de botella. Una situación similar ocurre en 3G, donde esa gran distancia a la torre del teléfono celular agrega MS. Cuando uso shells SSH, tengo que esperar a cada personaje. Un MS de 200-400 puede ser bastante molesto, pero con picos de hasta 1 segundo ... ¡ay!
Zombies
1

Para los futuros lectores de este hilo, el consejo de @lowellheddings en su blog , junto con el uso de la pantalla , podría ayudar a superar este problema:

Puede configurar el cliente ssh para enviar automáticamente un código de código no operativo del protocolo cada número de segundos para que el servidor no lo desconecte. Esta configuración a veces se conoce como Keep-Alive o Stop-Disconnecting-So-Much en otros clientes.
Agregue la siguiente línea al archivo / etc / ssh / ssh_config:
ServerAliveInterval 60
...

Snidhi Sofpro
fuente