ssh X11 forwarding

Le
Jeannot Lelapin
Bonjour,

le serveur : FreeBSD 7.0 (machine sans écran) sur lequel j'ai installé :
/usr/ports/x11/xauth
/usr/ports/x11-fonts/xorg-fonts
/usr/ports/x11/xhost
/usr/ports/x11/xdm

Pour le fichier de configuration du server ssh /etc/ssh/sshd_config
AllowTcpForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
Pour le fichier de configuration du client ssh /etc/ssh_config ( dépend
de la machine cliente )
Host *
ForwardX11 yes


Pour la machine cliente :
soit un WinXP avec Cygwin+Package X ( les application X fonctionnent
très bien ).
soit un powerbook sous MacOS X 10.4.11 ( les applications X fonctionnent
très bien avec le serveur XDarwin ).

depuis l'une des machines clientes, je me connecte
ssh XX.XX.XX.XX -l user -X
export DISPLAY=localhost:10.0
xeyes &
X connection to localhost:10.0 broken (explicit kill or server shutdown).

alors :
xauth list
xauth: creating new authority file /home/user/.Xauthority
Il n'y a pas de fichier /home/user/.Xauthority
xauth generate localhost:10.0 .
xauth: creating new authority file /home/user/.Xauthority
X connection to localhost:10.0 broken (explicit kill or server shutdown).
et j'ai 2 fichiers
.Xauthority-c vide
.Xauthority-l vide

alors j'essaie une autre méthode
xhost +localhost
X connection to localhost:10.0 broken (explicit kill or server shutdown).
su
xhost +localhost
X connection to localhost:10.0 broken (explicit kill or server shutdown).

J'essaie de regarder les fichiers de log, j'ai chercher sur le net, je
ne trouve pas mon erreur.

Quelqu'un a un idée ?

Merci d'avance,

Jeannot
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Paul Gaborit
Le #18830281
À (at) Thu, 05 Mar 2009 16:08:40 +0100,
Jeannot Lelapin
Pour la machine cliente :
soit un WinXP avec Cygwin+Package X ( les application X fonctionnent
très bien ).
soit un powerbook sous MacOS X 10.4.11 ( les applications X
fonctionnent très bien avec le serveur XDarwin ).

depuis l'une des machines clientes, je me connecte
ssh XX.XX.XX.XX -l user -X
export DISPLAY=localhost:10.0
xeyes &
X connection to localhost:10.0 broken (explicit kill or server shutdown).



Si vous utilisez l'option -X (voire même -Y) de ssh, il ne *faut* pas
définir DISPLAY. C'est fait automagiquement par ssh (si tout se passe
bien). Si ça ne marche pas, essayez un 'ssh' en mode verbeux (de un à
trois '-v') pour essayer de comprendre quelle étape échoue.

alors j'essaie une autre méthode
xhost +localhost



Si vous êtes sur un réseau complètement sécurisé, vous pouvez
évidemment utiliser 'xhost' mais dans ce cas, inutile de s'embêter
avec 'shh' puisque les échanges entre client et serveur X ne seront
pas chiffrés. Si votre réseau n'est pas complètement sécurisé, 'xhost'
est à proscrire.

--
Paul Gaborit -
Jeannot Lelapin
Le #18831331
Bonjour Paul,

merci pour ta réponse et tes lumières.

si j'utilise seulement l'option -X pour la connection ssh : ssh
69.55.234.25 -l user -X
et que je lance xeyes & : voici le résultat :
==> Error: Can't open display:

si j'utilise seulement l'option -Y pour la connection ssh : ssh
69.55.234.25 -l user -Y
et que je lance xeyes & : voici le résultat :
==> Error: Can't open display:

je viens de lancer ssh 69.55.234.25 -l user -Y -vvv
c'est assez verbeux, tout se passe bien, je ne vois pas d'erreur ( je
n'ai pas non plus toutes les compétences ), ni sur un forward ni sur
quoi que ce soit.
Une fois connecté sur le serveur, si je lance les mêmes commandes, je
n'ai aucun message de debug de la part de sshd. C'est moche.

Je continue à fouiller sur le net.

Encore merci,

Jeannot

Paul Gaborit wrote:
À (at) Thu, 05 Mar 2009 16:08:40 +0100,
Jeannot Lelapin
Pour la machine cliente :
soit un WinXP avec Cygwin+Package X ( les application X fonctionnent
très bien ).
soit un powerbook sous MacOS X 10.4.11 ( les applications X
fonctionnent très bien avec le serveur XDarwin ).

depuis l'une des machines clientes, je me connecte
ssh XX.XX.XX.XX -l user -X
export DISPLAY=localhost:10.0
xeyes &
X connection to localhost:10.0 broken (explicit kill or server shutdown).



Si vous utilisez l'option -X (voire même -Y) de ssh, il ne *faut* pas
définir DISPLAY. C'est fait automagiquement par ssh (si tout se passe
bien). Si ça ne marche pas, essayez un 'ssh' en mode verbeux (de un à
trois '-v') pour essayer de comprendre quelle étape échoue.

alors j'essaie une autre méthode
xhost +localhost



Si vous êtes sur un réseau complètement sécurisé, vous pouvez
évidemment utiliser 'xhost' mais dans ce cas, inutile de s'embêter
avec 'shh' puisque les échanges entre client et serveur X ne seront
pas chiffrés. Si votre réseau n'est pas complètement sécurisé, 'xhost'
est à proscrire.



Paul Gaborit
Le #18832431
À (at) Thu, 05 Mar 2009 18:41:10 +0100,
Jeannot Lelapin
si j'utilise seulement l'option -X pour la connection ssh : ssh
69.55.234.25 -l user -X
et que je lance xeyes & : voici le résultat :
==> Error: Can't open display:



Donc le X11 forwarding ne fonctionne pas. Inutile de tester avec '-Y'
qui ne change que le niveau de confiance que le serveur X11 accorde
aux clients.

je viens de lancer ssh 69.55.234.25 -l user -Y -vvv c'est assez
verbeux, tout se passe bien, je ne vois pas d'erreur ( je n'ai pas
non plus toutes les compétences ), ni sur un forward ni sur quoi que
ce soit.



Le niveau 2 de debug (avec -vv) devrait suffire. À un moment, il doit
y avoir un ou plusieurs messages concernant X11. Sur une connexion ssh
avec un X11 forwarding qui se passe bien, voici une sortie typique ;

debug2: x11_get_proto: /usr/bin/X11/xauth list :0.0 2>/dev/null
debug1: Requesting X11 forwarding with authentication spoofing.
debug2: channel 0: request x11-req confirm 0

C'est à ce niveau qu'on doit pouvoir détecter une différence...

Une fois connecté sur le serveur, si je lance les mêmes commandes, je
n'ai aucun message de debug de la part de sshd. C'est moche.



Je ne comprends pas ce que vous voulez dire par "sur le serveur, si je
lance les mêmes commandes".

P.S. : ne suivez certainement pas la recommandation qui vous a été
donnée sur le newsgroup BSD anglophone consistant à activer l'écoute
de serveur X11 sur tcp. Comme l'utilisation de 'xhost', ça ne sert à
rien et c'est un trou de sécurité potentiel.

P.S. 2 : évitez de poster plusieurs fois le même message sur
différents newsgroups (le multiposting). Préférez le crossposting avec
un follow-up adapté...

--
Paul Gaborit -
Jeannot Lelapin
Le #18833061
Bonjour Paul,


Paul Gaborit wrote:
À (at) Thu, 05 Mar 2009 18:41:10 +0100,
Jeannot Lelapin
si j'utilise seulement l'option -X pour la connection ssh : ssh
69.55.234.25 -l user -X
et que je lance xeyes & : voici le résultat :
==> Error: Can't open display:



Donc le X11 forwarding ne fonctionne pas. Inutile de tester avec '-Y'
qui ne change que le niveau de confiance que le serveur X11 accorde
aux clients.



recu.


je viens de lancer ssh 69.55.234.25 -l user -Y -vvv c'est assez
verbeux, tout se passe bien, je ne vois pas d'erreur ( je n'ai pas
non plus toutes les compétences ), ni sur un forward ni sur quoi que
ce soit.



Le niveau 2 de debug (avec -vv) devrait suffire. À un moment, il doit
y avoir un ou plusieurs messages concernant X11. Sur une connexion ssh
avec un X11 forwarding qui se passe bien, voici une sortie typique ;

debug2: x11_get_proto: /usr/bin/X11/xauth list :0.0 2>/dev/null
debug1: Requesting X11 forwarding with authentication spoofing.
debug2: channel 0: request x11-req confirm 0

C'est à ce niveau qu'on doit pouvoir détecter une différence...



Il n'a aucune ligne correspondant à X11. Rien, nada.
Le programme /usr/bin/X11/xauth est exécutée sur la machine distante (
tourant sous FreeBSD ) ou sur ma machine locale ( PowerBook sous MacOS )?



Une fois connecté sur le serveur, si je lance les mêmes commandes, je
n'ai aucun message de debug de la part de sshd. C'est moche.



Je ne comprends pas ce que vous voulez dire par "sur le serveur, si je
lance les mêmes commandes".




Désolé, pour moi le serveur est la machine distante ( sous FreeBSD ),
alors que c'est sur ma machine locale ( Powerbook sous MacOs ) que
tourne le fameux server X XDarwin.

P.S. : ne suivez certainement pas la recommandation qui vous a été
donnée sur le newsgroup BSD anglophone consistant à activer l'écoute
de serveur X11 sur tcp. Comme l'utilisation de 'xhost', ça ne sert à
rien et c'est un trou de sécurité potentiel.



J'ai compris qu'il ne fallait pas enlever l'option -nolisten tcp ( de
toute façon, je ne l'ai jamais trouvé dans les fichiers de configuration
du XDarwin ).
Et xhost, je ne m'en servirai plus mais en désespoir de cause depuis une
semaine, je commençais à essayer tout et n'importe quoi.


P.S. 2 : évitez de poster plusieurs fois le même message sur
différents newsgroups (le multiposting). Préférez le crossposting avec
un follow-up adapté...



Est-ce réglo de faire un message à destination de plusieurs newsgroup ?
Il y a longtemps, on m'avait reproché un message à destination de
plusieurs newsgroup, alors je n'avais plus recommencer. Mais mon sujet
touche à peu à tout, c'est pour cette raison que j'ai demandé un peu
partout.
Je suivrais vos recommendations.

Je vous remercie encore de l'attention portée à mon souci.

Cordiaelement,

Jean-Stéphane Lebrun
Paul Gaborit
Le #18833651
À (at) Thu, 05 Mar 2009 22:39:08 +0100,
Jeannot Lelapin
Il n'a aucune ligne correspondant à X11. Rien, nada.
Le programme /usr/bin/X11/xauth est exécutée sur la machine distante (
tourant sous FreeBSD ) ou sur ma machine locale ( PowerBook sous MacOS
)?



La commande 'xauth' est exécutée du côté du serveur X11 pour récupérer
le MAGIC-COOKIE permettant de s'identifier.

Il faut tester sur votre serveur X11 si la commande suivante retourne
quelque chose :

% xauth list $DISPLAY

Si ce n'est pas le cas ou, pire, si la commande n'existe pas, c'est
une raison de l'échec du X11 forwarding.

Je pense aussi à un autre problème potentiel encore plus
basique. Votre variable DISPLAY est-elle définie dans le terminal
depuis lequel vous essayez de lancer le 'ssh -X' ?

Désolé, pour moi le serveur est la machine distante ( sous FreeBSD ),
alors que c'est sur ma machine locale ( Powerbook sous MacOs ) que
tourne le fameux server X XDarwin.



C'est une confusion commune. La machine qui affiche est bien le
serveur (d'affichage) même si c'est souvent une peite machine qu'on a
sur son bureau. Et les applications distantes sont les clients (du
serveur d'affichage) même si elles tournent sur un gros serveur de
calcul.

J'ai compris qu'il ne fallait pas enlever l'option -nolisten tcp ( de
toute façon, je ne l'ai jamais trouvé dans les fichiers de
configuration du XDarwin ).
Et xhost, je ne m'en servirai plus mais en désespoir de cause depuis
une semaine, je commençais à essayer tout et n'importe quoi.



Parfait et parfait. ;-)

P.S. 2 : évitez de poster plusieurs fois le même message sur
différents newsgroups (le multiposting). Préférez le crossposting avec
un follow-up adapté...



Est-ce réglo de faire un message à destination de plusieurs newsgroup
? Il y a longtemps, on m'avait reproché un message à destination de
plusieurs newsgroup, alors je n'avais plus recommencer. Mais mon sujet
touche à peu à tout, c'est pour cette raison que j'ai demandé un peu
partout.



Généralement, on accepte un message cross-posté sur un nombre
raisonnable de newsgroup s'ils sont bien ciblés (en rapport avec la
question posée) et si le message contient un follow-up (suivi) vers un
seul de ces newsgroup. L'intérêt du cross-posting, c'est qu'un lecteur
ne se retrouvera pas à lire votre message quatre ou cinq fois.

--
Paul Gaborit -
Paul Gaborit
Le #18833691
À (at) Fri, 06 Mar 2009 00:12:57 +0100,
Paul Gaborit
À (at) Thu, 05 Mar 2009 22:39:08 +0100,
Jeannot Lelapin
Il n'a aucune ligne correspondant à X11. Rien, nada.
Le programme /usr/bin/X11/xauth est exécutée sur la machine distante (
tourant sous FreeBSD ) ou sur ma machine locale ( PowerBook sous MacOS
)?



La commande 'xauth' est exécutée du côté du serveur X11 pour récupérer
le MAGIC-COOKIE permettant de s'identifier.

Il faut tester sur votre serveur X11 si la commande suivante retourne
quelque chose :

% xauth list $DISPLAY

Si ce n'est pas le cas ou, pire, si la commande n'existe pas, c'est
une raison de l'échec du X11 forwarding.



Et je raconte une grosse bétise ! Comme l'indique Erwan David sur un
autre newsgroup, c'est bien sur la machine distante que s'exécute
l'appel à 'xauth' lors d'un 'ssh -X' (ce qui n'empêche pas qu'elle
puisse aussi être utilisée sur le serveur lui-même).

Il vous faut donc vérifier qu'elle est disponible sur votre FreeBSD
(qui est la machine distante dans votre cas si j'ai bien compris). Si
elle n'y est pas, installez le port 'xauth'.

Je pense aussi à un autre problème potentiel encore plus
basique. Votre variable DISPLAY est-elle définie dans le terminal
depuis lequel vous essayez de lancer le 'ssh -X' ?



Ça par contre, c'est toujours vrai... ;-)

--
Paul Gaborit -
Jeannot Lelapin
Le #18837141
Bonjour et encore merci,

Enorme boulette, le DISPLAY n'est pas défini dans le terminal Macos dans
lequel je lance le ssh
En lancant XDarwin depuis la machine cliente mais ou tourne le serveur
X, je trouve le DISPLAY : :0.0
Dans un terminal Macos,
export DISPLAY=:0.0
cd
ssh FreeBSD.IP -l user -X -vv
==>>
debug2: x11_get_proto: /usr/X11R6/bin/xauth -f
/tmp/ssh-nw91or4Uiv/xauthfile generate :0.0 MIT-MAGIC-COOKIE-1 untrusted
timeout 1200 2>/dev/null
debug2: x11_get_proto: /usr/X11R6/bin/xauth -f
/tmp/ssh-nw91or4Uiv/xauthfile list :0.0 2>/dev/null
debug1: Requesting X11 forwarding with authentication spoofing.
debug2: channel 0: request x11-req confirm 0

il n'y a pas de .Xauthority crée
je me déconnecte
cd
xauth generate $DISPLAY .
xauth list affiche correctement une ligne d'information

ssh FreeBSD.IP -l user -X -vv
==>>
debug2: x11_get_proto: /usr/X11R6/bin/xauth -f
/tmp/ssh-bTbDBMXOIH/xauthfile generate :0.0 MIT-MAGIC-COOKIE-1 untrusted
timeout 1200 2>/dev/null
debug2: x11_get_proto: /usr/X11R6/bin/xauth -f
/tmp/ssh-bTbDBMXOIH/xauthfile list :0.0 2>/dev/null
debug1: Requesting X11 forwarding with authentication spoofing.
debug2: channel 0: request x11-req confirm 0

une fois connecté sur FreeBSD.IP
echo $DISPLAY
localhost:10.0

Ouf, on avance !!

mais

xeyes &
==>>
debug1: client_input_channel_open: ctype x11 rchan 2 win 65536 max 16384
debug1: client_request_x11: request from FreeBSD.IP 58277
debug2: fd 7 setting O_NONBLOCK
debug1: channel 1: new [x11]
debug1: confirm x11
$ debug2: X11 connection uses different authentication protocol.
X11 connection rejected because of wrong authentication.
debug2: X11 rejected 1 i0/o0
debug2: channel 1: read failed
debug2: channel 1: close_read
debug2: channel 1: input open -> drain
debug2: channel 1: ibuf empty
debug2: channel 1: send eof
debug2: channel 1: input drain -> closed
debug2: channel 1: write failed
debug2: channel 1: close_write
debug2: channel 1: output open -> closed
debug2: X11 closed 1 i3/o3
debug2: channel 1: send close
debug2: channel 1: rcvd close
debug2: channel 1: is dead
debug2: channel 1: garbage collecting
debug1: channel 1: free: x11, nchannels 2
X connection to localhost:10.0 broken (explicit kill or server shutdown).

Ce serait une erreur de protocole ? mais lequel et qui sert à quoi ?

Encore merci,

Jeannot
Paul Gaborit
Le #18837421
À (at) Fri, 06 Mar 2009 14:10:41 +0100,
Jeannot Lelapin
Bonjour et encore merci,

Enorme boulette, le DISPLAY n'est pas défini dans le terminal Macos
dans lequel je lance le ssh



C'était effectivement un souci. ;-)

En fait, Mac OS X dans sa volonté de faire croire à ses utilisateurs
que tout est simple, lance automagiquement X11 lorsqu'un programme
veut s'y connecter mais évidemment ça ne marche pas toujours si bien
que ça (ce qui ne m'empêche pas d'apprécier Mac OS X ;-)).

[...]
une fois connecté sur FreeBSD.IP
echo $DISPLAY
localhost:10.0

Ouf, on avance !!



Ok.

mais

xeyes &
==>>
debug1: client_input_channel_open: ctype x11 rchan 2 win 65536 max 16384
debug1: client_request_x11: request from FreeBSD.IP 58277
debug2: fd 7 setting O_NONBLOCK
debug1: channel 1: new [x11]
debug1: confirm x11
$ debug2: X11 connection uses different authentication protocol.
X11 connection rejected because of wrong authentication.
debug2: X11 rejected 1 i0/o0


[...]
Ce serait une erreur de protocole ? mais lequel et qui sert à quoi ?



Si je me souviens bien, dans XDarwin, il faut aller dans les
préférences activer les 'authentification' (je me souviens plus
exactement des termes) puis relancer XDarwin...

--
Paul Gaborit -
Paul Gaborit
Le #18837411
À (at) Fri, 06 Mar 2009 14:29:49 +0100,
Paul Gaborit
Si je me souviens bien, dans XDarwin, il faut aller dans les
préférences activer les 'authentification' (je me souviens plus
exactement des termes) puis relancer XDarwin...



Et c'est une mauvaise piste (je viens d'essayer et ici, ça marche avec
ou sans l'authentication de XDarwin...

--
Paul Gaborit -
Jeannot Lelapin
Le #18838211
D'autant plus que j'ai les mêmes problèmes si je me connecte avec une
machine sous WinXP/Cygwin+XServer ( qui marche très bien en local ).

Paul Gaborit wrote:
À (at) Fri, 06 Mar 2009 14:29:49 +0100,
Paul Gaborit
Si je me souviens bien, dans XDarwin, il faut aller dans les
préférences activer les 'authentification' (je me souviens plus
exactement des termes) puis relancer XDarwin...



Et c'est une mauvaise piste (je viens d'essayer et ici, ça marche avec
ou sans l'authentication de XDarwin...



Publicité
Poster une réponse
Anonyme