Pregunta Cómo reconectarse a una sesión ssh desconectada


¿Hay alguna manera de conectarse a una sesión ssh que fue desconectada? Estamos teniendo problemas con nuestra conexión de red a un sitio remoto en el que estamos trabajando por separado; sin embargo, mientras tanto, experimentamos una gran cantidad de desconexiones debido a paquetes perdidos mientras estamos conectados a servidores en la ubicación remota. Muchas veces, la sesión permanece activa por un tiempo, y otras veces ocurre que se encuentra en medio de alguna acción (edición de archivos, ejecución de algún proceso, etc.) a la que necesito volver en lugar de reiniciar, si es posible.


141
2018-06-04 13:04


origen


No puedo creer que nadie haya mencionado mosh.mit.edu - jwbensley
@javano: Nunca he oído hablar de eso. ¡Añade eso como respuesta! - kbyrd
@kbyrd han hecho;) - jwbensley
una pregunta similar se hizo en unix.stackexchange.com/questions/105001/… con algunos consejos sobre cómo solucionar las desconexiones en primer lugar ... - anarcat


Respuestas:


ACTUALIZACIÓN: para una respuesta real, consulte la respuesta de zero_r a continuación

Esto no es una respuesta, sino una solución. Utilizar pantalla.

Cuando inicie sesión por primera vez, ejecute la pantalla. Obtienes otro shell, ejecuta comandos en eso. Si está desconectado, el proceso de pantalla mantiene el terminal vivo para que no se caigan su shell y los procesos que está ejecutando. Cuando vuelva a conectarse, ejecute 'screen -r' para reanudar.

Hay mucho más para configurar y usar la pantalla, pero lo anterior debería solucionar su problema.


126
2018-06-04 13:08



O use tmux - una pantalla 'más fresca', he usado ambos y prefiero tmux porque puede dividir el término muy bien. - John Hunt
Estaba feliz de encontrar screen ya estaba instalado en mi Ubuntu 12.x, así que si no está seguro, simplemente intente este comando, se volvió a conectar y reanudó Do-release-upgrade proceso: pantalla sudo -D -r - bjm88
@ Bjm88, sudo debe usarse solo si la sesión de pantalla original se inició con sudo. De lo contrario, volverá como si no hubiera sesión de pantalla: There is no screen to be detached - Noam Manos


Intente establecer ClientAliveInterval (por ejemplo, 60) y TCPKeepAlive (sí o no) en los valores apropiados en el servidor sshd.conf.

Esto debería mantener su sesión con vida incluso si la conexión se pierde por unos minutos.


118
2018-06-04 13:08



Hasta el momento, parece ser el único que realmente responde la pregunta en lugar de sugerir una pantalla como solución alternativa. - kbyrd
Buena llamada. Hemos encontrado que este método es particularmente útil al atravesar los cortafuegos ASA / PIX de cisco, que de forma predeterminada nos encanta suspender las conexiones tcp. - Mike Pountney
Quizás este no sea el lugar adecuado para preguntar, pero ¿es posible que el póster cambie de respuesta? Deberíamos responder la 'pantalla' (la mía no es la mejor, me gusta la de Mike Pountney, pero tengo el representante) con esta información. - kbyrd
¿Funcionará cuando se conecte a través de una conexión VPN de Cisco y la conexión VPN se pierda y se restablezca? - Brent
Para mí, la pantalla funciona a la perfección, puedo reconectarme a la tarea seleccionada y continuar trabajando - integratorIT


Como se ha mencionado más arriba, Pantalla GNU es el camino a seguir Le permitirá tener una 'sesión de pantalla' en el cuadro remoto en la que puede ejecutar múltiples comandos, a través de múltiples 'ventanas de pantalla'. Esto simplemente se separará si su conexión SSH principal muere, manteniendo vivos y en buen estado a todos los subprocesos que se ejecutan en ella.

'man screen'es tu amigo como siempre, y el paquete del sistema operativo debería llamarse'screen'si no está instalado por defecto.

Los fundamentos son:

  • Inicie una sesión de pantalla (en su host remoto):

    $ screen
    
  • Desconecta de tu sesión de pantalla: CTRL-A, re

  • Vuelva a conectarse a su sesión de pantalla después de volver a iniciar sesión:

    $ screen -d -r
    
  • Abre otra pantalla 'ventana': CTRL-A, do

  • Ciclo a través de usted abrir ventanas de pantalla: CTRL-A, espacio

Ahi esta un montón De cosas geniales que puedes hacer con la pantalla. Lo he estado usando durante más de 10 años y todavía estoy descubriendo nuevas características. Es mi utilidad favorita de Unix.


59
2018-06-04 13:19



Sí, esta es una respuesta mucho mejor que la mía. - kbyrd
¿Puedo seguir conectándome a la sesión ssh desconectada, si reinicio mi PC donde se está ejecutando la pantalla? - BarathVutukuri


No puedo creer que nadie haya mencionado MOSH;

Mosh es un protocolo independiente que puede conectarse al proceso de inicio de sesión de SSH, mantiene su sesión activa después de días de desconexión, cambio de IP, alta latencia, etc. Se explica en la página de inicio mejor de lo que puedo explicarlo, así que he copiado la descripción a continuación. Mis experiencias y consejos son que lo uso en mi móvil con Android, es un salvavidas cuando viajo y SSH'ing. Lo mismo ocurre en mi computadora portátil cuando, por ejemplo, atado con el teléfono móvil en el tren. Recomiendo compilar desde la fuente para obtener la última versión, la versión de repo para mí dentro de Ubuntu tiene algunas molestias que se corrigen en la versión más reciente (en el momento de escribir esto).

Mosh (carcasa móvil)

Aplicación de terminal remota que permite roaming, soporta intermitentes.   conectividad, y proporciona eco local inteligente y edición de línea de   pulsaciones de usuario.

Mosh es un reemplazo para SSH. Es más robusto y sensible,   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.

Características de la página web:

  • Cambiar IP. Mantente conectado: Mosh vaga automáticamente a medida que te mueves entre conexiones de internet. Utilizar Wi-Fi en el tren, Ethernet en un hotel y LTE en una playa: permanecerá conectado. La mayoría de la red Los programas pierden sus conexiones después del roaming, incluyendo SSH y Web aplicaciones como Gmail. Mosh es diferente.

  • Para dulces sueños: Con Mosh, puede poner su portátil en reposo y despertarlo más tarde, manteniendo su conexión intacta. Si su conexión a Internet se cae, Mosh le avisará, pero el la conexión se reanuda cuando el servicio de red vuelve.

  • Deshazte del retraso de la red: SSH espera la respuesta del servidor antes de mostrarle su propia escritura. Eso puede hacer para un interfaz de usuario pésimo. Mosh es diferente: da una respuesta instantánea a la escritura, eliminación, y edición de línea. Lo hace de forma adaptativa y funciona incluso en pantalla completa. Programas como emacs y vim. En una mala conexión, las predicciones pendientes están subrayadas para que no te dejes engañar

  • Sin código privilegiado. No daemon: No necesita ser el superusuario para instalar o ejecutar Mosh. El cliente y el servidor son ejecutables ejecutados por un usuario ordinario y duran solo durante la vida de la conexión.

  • Mismo método de inicio de sesión: Mosh no escucha en los puertos de red ni autentica a los usuarios. El cliente mosh inicia sesión en el servidor a través de SSH y los usuarios presentan las mismas credenciales (por ejemplo, contraseña, clave pública) como antes. Entonces Mosh ejecuta el servidor mosh de forma remota y se conecta a él a través de UDP.

  • Se ejecuta dentro de su terminal, pero mejor: Mosh es un programa de línea de comandos, como ssh. Puedes usarlo dentro de xterm, gnome-terminal, urxvt, Terminal.app, iTerm, emacs, screen o tmux. Pero Mosh fue diseñado desde cero y soporta solo un juego de caracteres: UTF-8. Corrige errores de Unicode en otros terminales y en SSH.

  • Control-C funciona muy bien: A diferencia de SSH, el protocolo basado en UDP de mosh maneja la pérdida de paquetes con gracia y establece el marco Tarifa basada en las condiciones de la red. Mosh no llena los buffers de la red, así que Control-C
    Siempre se trabaja para detener un proceso fuera de control.


41
2017-11-24 13:01



Mosh no es un envoltorio ssh, es un protocolo diferente, casi sin relación alguna con ssh (solo usa ssh para iniciar sesión). - jch
+1 Muy cierto, mi error. - jwbensley
¿Qué pasa con la seguridad, el hombre en el medio? cifrado? intercambio de llaves ? - Nasir Iqbal


autossh Mira tu conexión y si se cae, se vuelve a conectar. Es más confiable que keepalives. Si se conecta a una sesión de pantalla, continuará directamente desde donde se desconectó (consulte rscreen que viene con autossh)


19
2018-06-06 09:11



fuera de una vida útil configurable, no le permite volver a conectarse a una sesión (lo que el OP estaba buscando). pero autossh puede ser realmente útil para aplicaciones que requieren túneles ssh, mapeo de puertos, etc. - ives
Sí autossh + pantalla sería el punto dulce. autossh tiene rscreen para esto. - hayalci
Autossh es mejor que mosh. He usado ambos. - Sridhar-Sarnobat
Aquí hay una publicación del blog de Jesse Keating, sobre el uso de autossh con pantalla. - sampablokuper


Instalaría e iniciaría la pantalla para solucionar su problema. La pantalla le permitirá volver a conectarse a una sesión de pantalla anterior.

Aparte de eso, la pantalla también te permite hacer cosas geniales como dividir tu pantalla, ver la consola, etc. Puedes encontrar más información aquí y aquí.

Para empezar, si te desconectas, puedes usar

screen -ls

para ver tus sesiones y

screen -r ${session} 

para reconectarse a uno desconectado.


9
2018-06-04 13:06





tmux

Esto es un clásico. Úselo siempre que corra el riesgo de perder la conexión a un terminal.

$ tmux
$ sh do_something_that_takes_forever

!! Connection fails so you reconnect once you notice

$ tmux ls
0: 1 windows (created Tue Aug 23 12:39:52 2011) [103x30]

$ tmux attach -t 0

Así, estás de vuelta en acción.


9
2018-04-06 01:24



¡Gracias una tonelada! Estaba buscando cómo hacer esto con tmux, ya que eso parece ser lo que la mayoría de la gente considera como la mejor opción. - CoolOppo


Como han señalado otros, la pantalla es generalmente la mejor solución para esto y también agrega una serie de otras características útiles.

Puede configurar su perfil en la máquina remota para que se inicie automáticamente y / o vuelva a conectarse a la pantalla al iniciar sesión, lo que le ahorra olvidarse de iniciar la pantalla la única vez que la necesita porque sufre una caída en la conexión.

Ver http://tlug.dnho.net/?q=node/239 (o busque en Google para ver muchos otros ejemplos de formas ligeramente diferentes).


3
2018-06-04 13:47



Buen script en ese enlace, gracias! - palehorse


una alternativa más moderna a la pantalla, por desgracia, no está disponible para algunos tipos de "virtualización" (por ejemplo, en cygwin puede tener "pantalla", pero no "tmux" debido a la forma en que está diseñado), pero siempre que tenga la opción de instalar tmux , Recomiendo encarecidamente ir para ese instinto de pantalla.


2
2018-03-23 11:44





Aquí hay otra solución que no es de pantalla.

La bandeja de masilla le permite hacer precisamente eso, tiene una opción de reconexión en la desconexión que no está en regular o en masilla

https://puttytray.goeswhere.com/

es una bifurcación de la masilla con otras opciones, vaya a la configuración de la conexión y hay 2 opciones, una para 'intentar reconectar en caso de fallo de conexión', y 'intentar reconectar en el inicio'.


2
2018-01-20 10:08



Ehh ¿Viene con un keylogger y una utilidad automática de exfiltración de ppk, por casualidad? - Deer Hunter
Supongo que está preguntando si de alguna manera, roba sus datos, es de código completamente abierto, el código fuente está disponible en github si desea ver su github.com/FauxFaux/PuTTYTray Hay bastantes contribuyentes :) - munkiepus
buenos saludos :) - munkiepus