OVH Cloud OVH Cloud

Linux virtuel et timeout du relais X11 sous OpenSSH

10 réponses
Avatar
Arnaud Gomes-do-Vale
Bonjour tout le monde,

Soient un réseau local, une station S sur ce réseau, une machine P qui
est l'unique point d'entrée en ssh et une autre station C quelque part
sur internet, à l'extérieur du dit réseau local. La particularité,
c'est que P est un Linux virtuel (<http://www.linux-vserver.org/>).

Un utilisateur de C se connecte en ssh d'abord sur P, puis de là sur
S, en faisant ce qu'il faut pour que ssh transporte les connexions
X11. Dans un premier temps, pas de souci, tout fonctionne
correctement. Par contre, après un certain temps d'inactivité, ça se
gâte : quand l'utilisateur veut lancer un client X, disons un bête
xterm, il reçoit une erreur « Xt error: can't open display:
localhost:10.0 ».

La durée d'inactivité avant la manifestation du problème a l'air plus
ou moins aléatoire, disons plus de quelques minutes et généralement
moins d'une heure, mais ce n'est pas reproductible à 100% (dans au
moins un cas, les connexions s'établissaient toujours après plusieurs
heures). J'ai testé en remplaçant P par un Linux « normal » sans
vserver, je n'ai pas réussi à reproduire le problème, mais je ne sais
pas s'il a vraiment disparu ou si je suis tombé sur le cas où ça
fonctionnait un peu par hasard.

Est-ce que quelqu'un a déjà observé ce genre de symptômes ?

--
Arnaud

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.

10 réponses

Avatar
Guillaume Girard
Arnaud Gomes-do-Vale wrote:
Bonjour tout le monde,

Soient un réseau local, une station S sur ce réseau, une machine P qui
est l'unique point d'entrée en ssh et une autre station C quelque part
sur internet, à l'extérieur du dit réseau local. La particularité,
c'est que P est un Linux virtuel (<http://www.linux-vserver.org/>).

Un utilisateur de C se connecte en ssh d'abord sur P, puis de là sur
S, en faisant ce qu'il faut pour que ssh transporte les connexions
X11. Dans un premier temps, pas de souci, tout fonctionne
correctement. Par contre, après un certain temps d'inactivité, ça se
gâte : quand l'utilisateur veut lancer un client X, disons un bête
xterm, il reçoit une erreur « Xt error: can't open display:
localhost:10.0 ».

La durée d'inactivité avant la manifestation du problème a l'air plus
ou moins aléatoire, disons plus de quelques minutes et généralement
moins d'une heure, mais ce n'est pas reproductible à 100% (dans au
moins un cas, les connexions s'établissaient toujours après plusieurs
heures). J'ai testé en remplaçant P par un Linux « normal » sans
vserver, je n'ai pas réussi à reproduire le problème, mais je ne sais
pas s'il a vraiment disparu ou si je suis tombé sur le cas où ça
fonctionnait un peu par hasard.

Est-ce que quelqu'un a déjà observé ce genre de symptômes ?



Oui, avec Kerberos et rxtelnet (qui met en place plus ou moins le meme
truc pour X11 que ssh). Mais je n'ai jamais trouve le probleme exact,
donc toute solution m'interesse. Une supposition: l'effacement d'un
fichier temporaire necessaire a l'ouverture de connections X11, je ne me
souviens plus exactement du detail de la chose.

Guillaume.

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Arnaud Gomes-do-Vale
Guillaume Girard writes:

Une supposition: l'effacement d'un fichier temporaire necessaire a
l'ouverture de connections X11, je ne me souviens plus exactement du
detail de la chose.



J'ai pensé à ce genre de chose, quand j'ai regardé, le fichier
.Xauthority de l'utilisateur concerné n'avait pas changé depuis
l'établissement de la connexion ssh.

--
Arnaud

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Erwann ABALEA
On 23 Dec 2003, Arnaud Gomes-do-Vale wrote:

Guillaume Girard writes:

> Une supposition: l'effacement d'un fichier temporaire necessaire a
> l'ouverture de connections X11, je ne me souviens plus exactement du
> detail de la chose.

J'ai pensé à ce genre de chose, quand j'ai regardé, le fichier
.Xauthority de l'utilisateur concerné n'avait pas changé depuis
l'établissement de la connexion ssh.



J'aurais pensé à un simple timeout TCP sur un des éléments du réseau entre
tes machines. Par exemple un firewall qui garde une trace des connexions
TCP, s'il ne voit rien passer sur l'une d'entre elles pendant un certain
temps, il va considérer (la plupart du temps avec raison) qu'elle est
(mal) fermée, et libérer les ressources. C'est ce qui se passe sur un
noyau Linux, mais aussi sur un CheckPoint par exemple.

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
(Pour mesurer l'intelligence dans fufe) Facile: un test de Turing. Tu
prends une personne dans un groupe sensé, une personne dans fufe. Dès
que tu arrives à repérer le trolleur tu détruis le groupe.
-+- Ol in Guide du Neuneu Usenet : Maffacre à la fufonneuse -+-

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Arnaud Gomes-do-Vale
Erwann ABALEA writes:

J'aurais pensé à un simple timeout TCP sur un des éléments du réseau entre
tes machines.



J'y ai pensé aussi, mais si j'ai bien compris le fonctionnement de
ssh, ça couperait la liaison elle-même, et pas uniquement le relais
X11, non ?

--
Arnaud

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Erwann ABALEA
On 25 Dec 2003, Arnaud Gomes-do-Vale wrote:

Erwann ABALEA writes:

> J'aurais pensé à un simple timeout TCP sur un des éléments du réseau entre
> tes machines.

J'y ai pensé aussi, mais si j'ai bien compris le fonctionnement de
ssh, ça couperait la liaison elle-même, et pas uniquement le relais
X11, non ?



Ca dépend si tu te sers de ta session SSH ou pas. Essaye d'activer le
ProtocolKeepAlives, pour voir. (man ssh_config pour plus d'infos). Cette
option va régulièrement envoyer des paquets NULL (au sens SSH du terme)
entre les 2 acteurs SSH, et donc les éléments réseau situés entre les 2
vont voir que la connexion est toujours active.

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
j'ai découvert récemment les webcams, mais elles restent fixent.
Quels réglages faut'il réaliser pour les voir en dynamiques ?
-+-GT in : Guide du Neuneu d'Usenet - Silence, on tourne -+-

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Arnaud Gomes-do-Vale
Erwann ABALEA writes:

Ca dépend si tu te sers de ta session SSH ou pas.



Effectivement, à chaque fois que j'ai constaté le problème, je n'avais
pas touché à la session ssh pendant un moment.

Essaye d'activer le ProtocolKeepAlives, pour voir. (man ssh_config
pour plus d'infos).



Tu parles bien de l'option KeepAlive de openssh, ou j'ai raté autre
chose dans le manuel ? Elle est activée par défaut tant du côté
serveur que du côté client, et je n'ai rien changé de ce côté.

--
Arnaud

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Christophe GIAUME
On 26 Dec 2003 18:06:17 GMT, Erwann ABALEA wrote:
Ca dépend si tu te sers de ta session SSH ou pas. Essaye d'activer le
ProtocolKeepAlives, pour voir. (man ssh_config pour plus d'infos). Cette
option va régulièrement envoyer des paquets NULL (au sens SSH du terme)
entre les 2 acteurs SSH, et donc les éléments réseau situés entre les 2
vont voir que la connexion est toujours active.



Attention, `ProtocolKeepAlives' est un patch Debian sur OpenSSH.

En standard, dans OpenSSH il y a :
- ClientAliveInterval du côté serveur (sshd) depuis la version 2.9.0
- ServerAliveInterval du côté client (ssh) dans le cvs uniquement
pour l'instant, depuis une quinzaine de jours...

Cf. http://ftp.bit.nl/mirror/openssh/ChangeLog
- 2003/12/16 15:49:51
[clientloop.c clientloop.h readconf.c readconf.h scp.1 sftp.1 ssh.1]
[ssh.c ssh_config.5]
application layer keep alive (ServerAliveInterval ServerAliveCountMax)
for ssh(1), similar to the sshd(8) option; ok beck@; with help from
jmc and dtucker@

CG

--
"You, Kant, always get what you want." -- Hedwig

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Erwann ABALEA
On 29 Dec 2003, Arnaud Gomes-do-Vale wrote:

Erwann ABALEA writes:

> Ca dépend si tu te sers de ta session SSH ou pas.

Effectivement, à chaque fois que j'ai constaté le problème, je n'avais
pas touché à la session ssh pendant un moment.



C'est donc une bonne piste.

> Essaye d'activer le ProtocolKeepAlives, pour voir. (man ssh_config
> pour plus d'infos).

Tu parles bien de l'option KeepAlive de openssh, ou j'ai raté autre
chose dans le manuel ? Elle est activée par défaut tant du côté
serveur que du côté client, et je n'ai rien changé de ce côté.



Non. Il y a 2 options: KeepAlive, qui prend un booléen, et
ProtocolKeepAlives, qui prend un entier (nombre de secondes entre 2
messages IGNORE).

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
FC> Même pas pour le couper en quatre dans le sens de la longueur ?
il n'est pas question de découpage.
et puis ce sont trois nouveaux groupes qui seront proposés, pas quatre
-+- BC in Guide du Neuneu sur Usenet : Capillosection, halte ! -+-

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Erwann ABALEA
On 31 Dec 2003, Christophe GIAUME wrote:

On 26 Dec 2003 18:06:17 GMT, Erwann ABALEA wrote:
> Ca dépend si tu te sers de ta session SSH ou pas. Essaye d'activer le
> ProtocolKeepAlives, pour voir. (man ssh_config pour plus d'infos). Cette
> option va régulièrement envoyer des paquets NULL (au sens SSH du terme)
> entre les 2 acteurs SSH, et donc les éléments réseau situés entre les 2
> vont voir que la connexion est toujours active.

Attention, `ProtocolKeepAlives' est un patch Debian sur OpenSSH.



Ah? Au temps pour moi, je n'avais pas vérifié les sources officielles
d'OpenSSH. Je viens à l'instant de le faire, et tu as raison,
ProtocolKeepAlives n'existe pas dans la distribution officielle.

En standard, dans OpenSSH il y a :
- ClientAliveInterval du côté serveur (sshd) depuis la version 2.9.0
- ServerAliveInterval du côté client (ssh) dans le cvs uniquement
pour l'instant, depuis une quinzaine de jours...



Ca devrait faire l'affaire.

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
je m'étonne que des gens puissent perdre du temps à dire non. Le webest
un bon espace de création, et il y a toujours des trouduculs pour
vouloir freiner un nouvel essor.
-+- Zéro in: Guide du Neuneu d'Usenet - Bien voter dans le trou -+-

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Arnaud Gomes-do-Vale
Christophe GIAUME writes:

En standard, dans OpenSSH il y a :
- ClientAliveInterval du côté serveur (sshd) depuis la version 2.9.0
- ServerAliveInterval du côté client (ssh) dans le cvs uniquement
pour l'instant, depuis une quinzaine de jours...



J'avais déjà « ClientAliveInterval 30 » sur la passerelle ; j'ai
ajouté la même chose sur les stations, et ça semble avoir réglé le
problème. Merci beaucoup !

--
Arnaud

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.