SSH wird nach dem Beenden nicht beendet, wenn ein X Forward-Programm vorhanden ist

9

Nach dem Ausführen von X-Programmen über SSH wird SSH nach dem Beenden der Shell nicht beendet (muss zB verwendet werden CtrlC, um es zu beenden ).

Ich vermute, obwohl das X-Programm bereits beendet ist, gibt es noch eine "Verbindung" (nicht freigegeben). Die Ausnahmen, die ich jetzt gefunden habe, sind gtk-demound acroread.

Kennt jemand den Grund? Ist dies ein Problem mit der Konfiguration von ssh {, d}?

Yuyichao
quelle
1
Sie können dies selbst testen. Führen Sie ssh mit -v aus, und es werden geöffnete und geschlossene X11-Verbindungen gemeldet.
Kyle Jones
@KyleJones THX, scheint das Problem zu sein (zwei "Verbindungen", die nach dem C-cDrücken freigegeben wurden ).
Yuyichao
Ich habe das gleiche Problem auf SLES11 mit jedem X11-Fenster. Wie sind Sie auf dbus zurückgegangen?
Nils
Sie können einfach den laufenden Prozess überprüfen (wenn keine anderen aktiven Sitzungen vorhanden sind). Ich benutze systemd und habe es in sshd (pam-Einstellung) aktiviert, so dass sich der gesamte Prozess in der ssh-Sitzung in derselben cgroup befindet, was die Überprüfung sehr einfach macht. ~~
yuyichao

Antworten:

5

Durch das Starten des X-Programms wird wahrscheinlich ein Hintergrundprozess gestartet, der beim Schließen des Programms nicht beendet wird (oder das Programm selbst wird nicht ordnungsgemäß beendet). Sehen Sie hier für eine Erklärung , was passiert.

Um dies zu beheben, können Sie versuchen, herauszufinden, welche Prozesse noch ausgeführt werden, und entweder verhindern, dass sie beim Anmelden über SSH gestartet werden, oder sie einfach beenden, bevor Sie sich abmelden. Sie können die SSH-Verbindung aber auch einfach beenden, wenn Sie sich abgemeldet haben.

Lars Kotthoff
quelle
K, das Problem ist, dass der dbus (gconf) -Prozess noch läuft. (danke an systemd-cgls~~) (Ich habe versucht, killall -KILLdas Programm selbst zu verwenden, weil ich dachte, es könnte vorher einen Hintergrundprozess auslösen, aber das scheint nicht der Fall zu sein.) Gibt es also eine Möglichkeit, Dinge gut zu machen? (zB dbus (gconf) automatisch töten) THX
yuyichao
1
Sie könnten killall dbusoder so etwas in Ihr setzen .logout, aber das würde wahrscheinlich andere Dinge durcheinander bringen (dh wenn Sie lokal angemeldet sind).
Lars Kotthoff
Hmm, anscheinend muss ich das manuell machen (dh keine direkte Option dafür). Zumindest benutze ich bereits kill-session=1und hoffentlich kann systemd mir sagen, welcher Prozess der richtige ist, um zu töten (dh Prozesse in anderen Sitzungen nicht zu töten). ~~~ THX
yuyichao