SSH no finaliza después de la salida cuando hay un programa X Forward

9

Después de ejecutar programas X sobre SSH, SSH no termina después de la salida del shell (tiene que usar, por ejemplo, CtrlCpara matarlo).

Supongo que aunque el programa X ya se cierra, todavía queda algo de "conexión" (no liberada). Las excepciones que he encontrado ahora son gtk-demoy acroread.

¿Alguien sabe el motivo? ¿Es este un problema con la configuración ssh {, d}?

yuyichao
fuente
1
Puedes probar esto por ti mismo. Ejecute ssh con -v e informará las conexiones X11 que se abren y cierran.
Kyle Jones
@KyleJones THX, parece que este es el problema (dos "conexiones" liberadas después de C-cpresionar).
yuyichao
Tengo el mismo problema en SLES11 con cualquier ventana X11. ¿Cómo trazaste a dbus?
Nils
Simplemente puede verificar el proceso que se ejecuta como usted (si no hay otras sesiones activas). Utilizo systemd y lo he habilitado en sshd (configuración de pam), por lo que todo el proceso en la sesión ssh está en el mismo cgroup, lo que hace que sea realmente fácil de verificar. ~~
yuyichao

Respuestas:

5

Al iniciar el programa X, probablemente se inicia un proceso en segundo plano que no finaliza cuando cierra el programa (o el programa en sí no finaliza correctamente). Vea aquí para una explicación de lo que sucede.

Para solucionar esto, puede intentar averiguar qué procesos aún se están ejecutando y evitar que se inicien cuando inicia sesión a través de SSH o simplemente eliminarlos antes de cerrar sesión. Sin embargo, también puede matar la conexión SSH una vez que haya cerrado la sesión.

Lars Kotthoff
fuente
K, el problema es que el proceso dbus (gconf) aún se está ejecutando. (gracias a systemd-cgls~~) (Intenté con killall -KILLel programa en sí mismo pensando que podría bifurcar algún proceso en segundo plano antes, pero ese no parece ser el caso). Entonces, ¿hay alguna manera de hacer las cosas bien? (por ejemplo, matar dbus (gconf) automáticamente) THX
yuyichao
1
Podrías poner killall dbuso algo así en tu .logout, pero eso probablemente arruinaría otras cosas (es decir, cuando estás conectado localmente).
Lars Kotthoff
Hmm, parece que necesito hacer esto manualmente (es decir, no hay una opción directa para eso). Al menos ya estoy usando kill-session=1y espero que systemd pueda decirme cuál es el proceso correcto para matar (es decir, no matar procesos en otras sesiones). ~~~ THX
yuyichao