SSH n'est pas terminé après la sortie lorsqu'il existe un programme X Forward


9

Après avoir exécuté des programmes X sur SSH, SSH ne se termine pas après la sortie du shell (à utiliser par exemple CtrlCpour le tuer).

Je suppose que même si le programme X quitte déjà, il reste encore une certaine "connexion" (non libérée). Les exceptions que j'ai trouvées maintenant sont gtk-demoet acroread.

Est-ce que quelqu'un connaît la raison? Est-ce un problème avec la configuration de ssh {, d}?


1
Vous pouvez tester cela par vous-même. Exécutez ssh avec -v et il signalera les connexions X11 ouvertes et fermées.
Kyle Jones

@KyleJones THX, semble que ce soit le problème (deux "connexions" libérées après avoir C-cété pressées).
yuyichao

J'ai le même problème sur SLES11 avec n'importe quelle fenêtre X11. Comment avez-vous remonté jusqu'à dbus?
Nils

Vous pouvez simplement vérifier le processus en cours d'exécution (s'il n'y a pas d'autres sessions actives). J'utilise systemd et je l'ai activé dans sshd (paramètre pam), donc tout le processus dans la session ssh est dans le même groupe de contrôle, ce qui le rend vraiment facile à vérifier. ~~
yuyichao

Réponses:


5

Le démarrage du programme X démarre probablement un processus d'arrière-plan qui ne se termine pas lorsque vous fermez le programme (ou le programme lui-même ne se termine pas correctement). Voir ici pour une explication de ce qui se passe.

Pour résoudre ce problème, vous pouvez essayer de savoir quels processus sont toujours en cours d'exécution et empêcher leur démarrage lorsque vous vous connectez via SSH ou simplement les tuer avant de vous déconnecter. Vous pouvez certainement tuer la connexion SSH une fois que vous vous êtes également déconnecté.


K, le problème est que le processus dbus (gconf) est toujours en cours d'exécution. (merci à systemd-cgls~~) (J'ai essayé killall -KILLle programme lui-même en pensant qu'il pourrait déboucher sur un processus d'arrière-plan auparavant, mais cela ne semble pas être le cas.). Alors, y a-t-il un moyen de bien faire les choses? (par exemple, tuer automatiquement dbus (gconf)) THX
yuyichao

1
Vous pourriez mettre killall dbusou quelque chose comme ça dans votre .logout, mais cela gâcherait probablement d'autres choses (c'est-à-dire lorsque vous êtes connecté localement).
Lars Kotthoff

Hmm, il me semble que je dois le faire manuellement (c'est-à-dire aucune option directe pour cela). Au moins j'utilise déjà kill-session=1et j'espère que systemd peut me dire quel est le bon processus à tuer (c'est-à-dire ne pas tuer les processus dans d'autres sessions.) ~~~ THX
yuyichao
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.