[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: X sessions und nicht terminierte ssh clients



Also sprach Norbert Preining <preining@logic.at> (Fri, 27 Jan 2006
21:54:16 +0100):
> Hallo Richard!

'abend

> On Fre, 27 Jan 2006, Richard Mittendorfer wrote:
> > > Wir haben folgendes Problem: Seit dem upgrade von woody auf sarge
> > > werden ssh Prozesse, die während einer Xsession gestartet wurden,
> > > beim ausloggen nicht mehr terminiert.
> > 
> > Alle? Dann sshd mal DEBUG und ssh -v. 
> 
> Nein, nicht alle. Wenn ich auf Recher A sitze und auf Rechner a eine
                                                      A == a ? -^

> lokale X session laufe habe (man beachte dass jeder Rechner ein
> eigener vollwertiger Rechner ist!),

A != a

> und dann ssh user@andererechner -e exmh

andererrechner != A != a ??       Bbbitte!! :)

> mache. Dann beende ich exmh und logge mich aus, dann ist alles
> palletti.

Was tut das -e? "ssh <host> -e <app>" tut hier nichts, weil -e, der ssh
uebergeben, den escapce character bestimmt. "exhm" ist zweifellos kein
passender. 

> Nur wenn ich meinem twm sage, Exit, und der exmh auf andererrechner
> rennt noch, dann wird zwar das exmh terminiert, aber die unterliegende
> ssh Verbindung nicht.

Verwirrtsei.

[ ] der an andererrechner laufende "sshd user@pts" bleibt.
[x] der lokale "ssh <host> -e <command>" bleibt.
[ ] die inet Verbindung zw. beiden Hosts bleibt. 

So? :)

> > > Also: gdm managed das einloggen, user loggt sich ein, startet mit
> > > 	ssh user@host -e program
> > > ein program auf einem anderen Rechner (unserem server).
> > > 
> > > Dann logt sich user aus, ohne das Program ordentlich zu
> > > terminieren,
> > 
> > Am lokalen terminal beendet sich's ordnungsgemaess?
> 
> Was? Der subprozess der von der ssh auf dem anderen Rechner gestartet
> wird, terminiert immer, nur die unterliegende Transport-ssh nicht.
> 
> > > und die ssh rennt und rennt und rennt und rennt. Damit bleiben
> > > auch am
> > 
> > Die Netzwerkverbindung bleibt bestehen AKA Gegenstelle glaubt man
> > waere noch eingeloggt und die App rennt remote weiter? Zeigt
> > iptstate -f die Verbindung? jobs nohup oder backgrounded?
> 
> Nein, die app rennt nicht weiter, nur die ssh rennt noch!
>
> > > server natürlich die ganzen Prozesse auf ewig hängen, solange
> > > nicht der Ursprungsrechner rebootet wird. Wenn das nun ein paar
> > > User auf ein paar Rechnern mit mehreren Programmen machen, hat man
> > > bald einmal ziemliche Anzahl von nutzlosen ssh Prozessen.
> > 
> > Hilft TCPKeepalive? man sshd_config. 
> 
> Irrelevant, weil ja der Rechner rennt, und wir wollen ihn ja nicht
> dauernd runterfahren müssen, nur um die ssh Programme zu töten.
> Aber nein, es hilft nicht, ich habe es schon gesetzt.

Das haette die Verbindung (wenn den moeglich) nach dem timeout 
zurueckgesetzt. netfilters tcp_timeout runterzusetzen wear eine weitere
Idee. Ist hier aber, wenn ich dein Prob nun richtig verstehe, indeed
irrelevant. Haette es geklappt koennten weitere Schluesse gezogen werden
-- Aber die Verbindung besteht zu diesem Zeitpunkt ja nicht mehr.

Mal sehen.

Du wuergst also deine Xsession mit einer laufenden Anwendung ab. Soweit
ich verstanden hab, bliebt in diesem Fall keine ssh Verbindung (die du
mit "ssh user@host -e application" aus einem lokalen Terminal gestartet
hast) zwischen den Rechnern stehen, sondern der "ssh" am
Klienten(XServer). Beendest du zuerst die remote X-Anwendung stirbt auch
der ssh Prozess und deine Xsession wird sauber beendet.

> > > Nun die Frage: Woran kann das liegen. Ich habe die alten Xsession
> > > scripts durchsucht und nicht wirklich grobe Unterschiede gefunden,
> > > inklusive des Xsession.d scriptlets.
> > 
> > Tippe eher auf ssh(d), da ausloggen den Prozess beenden sollte. Sind
> > das X Applikationen ueber einen sshtunnel oder xdmcp oder an der
> > console?
> 
> Ausgeloggt wird ja auf einem ganz anderen Rechner, nicht dort wo das
> programm rennt. Ausgeloggt wird auf lokalem Rechner, und damit wird -
> weil plötzlich das X weg ist - der remote Prozess auch gekillt, aber
> nicht die ssh drunter.

Klar, also da sind (weiss nicht genau, wer da in Sarge alles am Werke
ist) ssh-agent, X und evtl. auch dbus im Spiel. Deine ssh Session wird
lokal nicht (rechtzeitig) weggeraeumt. Loesung weiss ich mal keine. 

Passiert das auch, wenn du X mit ctrl+alt+backspace statt twm-exit
beendest, denn dann koenntest du versuchen im gdm (k.A. ob das auch mit
[kx]dm funkt) allwaysrestartserver probieren. 

ps aux|grep ssh vorher und nachher.
 
> > > Hat wer dieses Phänomen schon erlebt, bzw noch besser behoben?
> > 
> > Sowas aehnliches: Manche Sessions werden nach ausloggen zwar
> > netzwerkmaessig beendet (Etch/Sid), der lokale Terminal haengt aber.
> > Manchmal hilft "~.".
>
> Also wenn man die applikation beendet, dann wird auch die ssh beendet,
> also daran liegt es nicht.
>
> Herzliche Grüße
> 
> Norbert

sl ritch



Reply to: