¿Se puede "asumir" una sesión de usuario activa en Linux?

2

Fuera de usar algo como screen, ¿es posible "asumir" una sesión de usuario activa en Linux / UNIX?

Por ejemplo, ssh a mi servidor desde casa. Entonces ssh para que funcione. Quiero eliminar la sesión generada en casa y "asumir" todos los procesos que se estaban ejecutando.

warren@home> ssh warren@myserver
warren@myserver> top

...

warren@work> ssh warren@myserver
warren@myserver> <grab-other-session-of-mine>

Después de la <grab-other-session-of-mine> comando / herramienta, el warren@home ssh sesión debe estar cerrada.

es posible?

warren
fuente
1
Porque no puedes usar screen? Eso te permite hacer exactamente lo que quieres aquí.
Daenyth
@Daenyth - debido a que algunos sistemas no lo tienen instalado, y sin acceso root en esas máquinas, no puedo agregarlo :)
warren
Si el sistema tiene un compilador, compílelo en su directorio de inicio y ejecútelo allí. Si el sistema no tiene un compilador, compílelo en otro sistema con bibliotecas similares y luego copie el archivo y ejecútelo desde su casa. No creo que lo que pidas sea posible sin usar algún tipo de aplicación, y la pantalla es la mejor. También pida al administrador del sistema que lo instale, no conozco a ningún competente que no lo use.
Daenyth
@Daenyth - Conozco un montón de administradores de sistemas que usan la pantalla, pero no permiten que los usuarios normales lo toquen, ya que tiene el potencial de ser un gran agujero de seguridad
warren
Además, una variedad de sistemas se analizan de forma rutinaria en busca de herramientas / procesos 'no estándar', y se devuelven a un estado 'seguro'
warren

Respuestas:

3

Por lo que sé, esto no es posible. ¿Qué pasa con la pantalla o equivalentes?

Los procesos de su sesión están vinculados a su proceso actual de tty y padre, el cambio de estos podría llevar a una serie de problemas desagradables, por lo que requeriría una capa de abstracción que proporcione a sus procesos de trabajo un tty y padre persistentes. Esto es lo que hacen la pantalla y los amigos; no usarlos requeriría poner la función en el propio sshd.

Ver Usar la pantalla GNU como inicio de sesión "shell" para usar la pantalla como shell de inicio de sesión, lo que elimina la necesidad de pensar para ejecutarlo.

b0fh
fuente
gracias, b0fh - parece que esta pregunta requeriría un montón de los pasos mencionados aquí: superuser.com/questions/28568/screen-a-running-process .. excepto que no tan limpiamente. Oh bien :)
warren
1

Primero: si Puede hacer esto si y solo si ha grabado la sesión TCP (no está seguro de cuánto de esto es necesario, pero necesita tener acceso a la captura de paquetes), tener las herramientas y la experiencia adecuadas, tener el control total de los paquetes que se generan en una máquina entre el cliente y el servidor, y tener acceso a la clave privada del servidor. Posiblemente podría asumir la conexión TCP, hacerse pasar por el cliente de origen y comenzar a transmitir y recibir datos sobre la conexión existente.

Pero eso sería una tontería y mucho más difícil de lo que vale, por lo que prácticamente no, no se puede hacer sin usar una herramienta como la pantalla.

Slartibartfast
fuente