¿Puedo conectarme o ver sesiones ssh abandonadas?

14

Tengo una instancia virtual de redhat ejecutándose que puedo sshdesde cualquier host en la red corporativa. Mi sshsesión se interrumpió mientras ejecutaba algunos scripts que pueden o no haberme desconectado. El whocomando localmente todavía enumera la conexión caída. Reconectarse con sshcomienza una sesión completamente nueva. ¿Hay alguna manera de conectarse a la sesión original? Si no, ¿puedo matarlo? Tengo acceso root y físico. No estaba usando la pantalla en la sesión original.

jms
fuente

Respuestas:

11

Desea usar la pantalla en el control remoto y luego, cuando vuelva a conectarse, vuelva a conectarse a esa instancia de pantalla.

pero no, no puede volver a conectarse a una sesión ssh en sí misma, debe usar la pantalla (o algo más para facilitar eso).

Mire esta pregunta para al menos otra opción y algunas diferencias entre ella (tmux) y la pantalla. después de leer la respuesta a esa pregunta ... en realidad diría que tmux es mejor

Ah, sí, podría hacer killel proceso (incluida la bifurcación bifurcada) para detenerlo, podría intentar skillmatar al usuario por su nombre, pero sospecho que si ese usuario es root ... podría intentar matar cosas que no puede.

la respuesta ha sido actualizada varias veces

xenoterracida
fuente
4

Por defecto, no puede volver a conectarse a una sesión ssh abandonada. Sin embargo, puede configurar procesos dentro de una sesión ssh, a los que puede volver a conectarse después de restablecer una nueva sesión ssh.

Lo que desea usar es la pantalla o, mejor aún, una envoltura alrededor de la pantalla fácil de usar llamada byobu.

Screen le permite ejecutar múltiples sesiones de terminal virtual en la misma sesión ssh. Un tutorial y páginas de ayuda están disponibles.

byobu es un contenedor que permite abrir fácilmente nuevas pantallas con una simple tecla de función en lugar de la combinación de teclas de ctrl-a. También muestra una línea de estado con todos los terminales virtuales abiertos que se pueden nombrar.

Otra característica interesante es el hecho de que toda su pantalla puede permanecer activa mientras su conexión ssh está desconectada. Simplemente se conecta de nuevo a través de ssh y llama a byobu y todo es como antes.

Por fin algunas capturas de pantalla de byobu.

txwikinger
fuente
3

Como se mencionó, la pantalla es probablemente su mejor apuesta. Si / cuando su sesión se cae, seguirá ejecutándose. Escriba 'screen -list' para ver las sesiones disponibles y 'screen -r' con la sesión que desee. Un pequeño consejo, puede completar con pestañas la cadena de sesión en lugar de copiar / pegar todo.

Sin embargo, la pantalla puede ser molesta. En mi cliente, no puede desplazarse fácilmente hacia arriba para ver el historial en la consola. Actúa un poco diferente de lo que cabría esperar. Si todo lo que quiere hacer es asegurarse de que sus procesos de larga ejecución no se maten, use 'nohup'. Evitará que se cierre su proceso cuando pierda su conexión. Sin embargo, asegúrese de enviar su salida de proceso a un archivo si desea monitorearlo. Además, si tiene un script bash, creo que necesita llamar explícitamente 'bash' frente a nohup. Un ejemplo...

nohup bash ./myscript.sh> output.log 2> & 1 &

Eso significa nohup, para evitar matar el proceso, bash para llamar explícitamente a bash si tiene cosas específicas de bash en su script, su script llamado 'myscript.sh' en el directorio actual, output.log como el archivo para enviar tanto std como error a, y el '&' al final para ejecutar el proceso en segundo plano.

kāgii
fuente