Forum général.général Kubuntu 5.04 : can't open display from an aix worstation

Posté par  .
Étiquettes : aucune
0
27
juil.
2005
Hi,

I log in an AIX worstation using ssh -X mode but, although I have xhost + and copy my .Xauthority on the remote server, xclock or other graphic command returns me a laconic "Error : can't open DISPLAY..."


The $DISPLAY is well set...
I have also set off the -nolisten tcp option ...

so I don't see any solution...

Could it be a problem with the firewall ?
  • # LinuxFR

    Posté par  . Évalué à 3.

    Hello,

    as the name of the site should suggest, you're on a french speaking only site...

    Because a lot of readers could understand english also, you may have answers to your questions, but I think that for most people on this site, this is just disturbing and of no interest.

    Could I suggest you to post your questions on one of the many linux related sites using Shakespeare's language as their default ?

    Regards,

    Christophe
  • # ssh -X

    Posté par  (site web personnel) . Évalué à 2.

    > I log in an AIX worstation using ssh -X mode but, although I have xhost +

    Avec 'ssh -X' il ne faut pas faire de "xhost +", ni de "export DISPLAY".
    C'est ssh qui crée comme un grand un tunnel pour le X11.

    >The $DISPLAY is well set...

    C'est à dire ? C'est toi qui l'as mis ou ssh ?
    • [^] # Re: ssh -X

      Posté par  . Évalué à 2.

      Il se peut aussi que $DISPLAY ait été initialisée avant l'ouverture du tunnel SSH, et que celui-ci, pour une raison ou une autre, omette d'y stocker une valeur.

      Auquel cas les applications graphiques tenteraient encore de s'ouvrir vers le mauvais canal. Tu peux également essayer d'attaquer le port X-Window local à ton serveur avec un telnet. C'est sauvage mais cela te permettra de vérifier s'il est bien ouvert.
  • # X sous SSH

    Posté par  . Évalué à 4.

    Salut,

    Avec l'option -X du client SSH tu ne devrais rien avoir à faire pour pouvoir affichier des applications distantes sur ton display.

    Quelques points cependant à vérifier :
    - il ne faut pas que tu fixes manuellement la variable DISPLAY dans ta session distante. ssh se débrouille comme un grand pour fixer le DISPLAY qui va bien (normalement DISPLAY est positionné à localhost:10.0 si ton DISPLAY local est :0.0). C'est également ssh qui va se charger de mettre les bonnes données dans .Xauthority.
    - dans la conf du serveur ssh (/etc/sh/sshd_config), il faut que la directive "X11Forwarding" soit positionnée à "yes", sinon ça ne peut pas marcher.
    - sur le serveur, il fut trouver le programme xauth dans /usr/bin/X11/xauth, sinon il est nécessaire de le préciser dans sshd_config avec la directive XAuthLocation (le chemin par défaut peut être différent).

    Pour faire un diagnostic plus précis : quand tu te connectes avec l'option -X, est-ce que la variable DISPLAY est bien positionnée ?
    Si ce n'est pas le cas, vérifie les fichiers de conf ("man sshd_config" peut bien t'aider).
    Tu peux également lancer ssh avec l'option -v (ou -vv ou -vvv) pour avoir une trace de parlante et essayer de comprendre ce qui ne marche pas.

    Bonne chance
    JJD
    • [^] # Re: X sous SSH

      Posté par  . Évalué à 3.

      Merci, mais :

      - "X11Forwarding" est bien positionné à yes
      - xauth est bien dans /usr/bin/X11/xauth

      Par contre le display est positionné à mon IP sur le serveur distant et non à localhost:10.0...
      Ceci dit, le changement via export DISPLAY=localhost:10.0 n'a rien donné...

      pas glop !
      • [^] # Re: X sous SSH

        Posté par  (site web personnel) . Évalué à 4.

        >Par contre le display est positionné à mon IP sur le serveur distant et non à localhost:10.0...

        Donc quelque chose (un script lancé à la connexion ?) change ta variable DISPLAY. Il faut que tu vires ça.

        >Ceci dit, le changement via export DISPLAY=localhost:10.0 n'a rien donné...

        Ce n'est pas forcément 10. Ca va (normalement) de 10 à 19.
        • [^] # Re: X sous SSH

          Posté par  . Évalué à 4.

          Je suis assez d'accord avec Ramón : il y a certainement un des scripts de connexion (.profile ou autre, en fonction du shell utilisé) qui fixe la valeur de la variable DISPLAY. Sinon, soit le tunneling du protocole X11 fonctionne et on devrait avoir DISPLAY=localhost:xx.0, soit ça ne marche pas, et il n'y a aucune raison que DISPLAY soit positionnée.

          [la valeut xx dépend de la directive X11DisplayOffset de sshd_config sur ton AIX, normalement positionnée à 10]

          Essaie donc de regarder dans les scripts exécutés au lancement (.profile et /etc/pofile en particulier si le shell est ksh).

          Si tu ne vois rien de particulier, tu peux toujours essayer de nous envoyer la sortie que tu obtiens lors d'une connexion avec l'option -vv (et -X évidemment).

          @+
          JJD
          • [^] # Re: X sous SSH

            Posté par  . Évalué à 3.

            eh oui j'ai 2 comptes...
            Bref, merci pour toutes ces réponses, je retesterais demain.

            Par contre, juste pour alimenter le débat :

            - Si je me loggue sur un autre serveur linux, no pb, l'affichage X me revient bien
            - un collègue (sous Mandrake) arrive à se logger sur le serveur AIX via ssh et reçoit la sortie X
            - un autre (sous Ubuntu comme moi) a le même pb...

            Et oui, il y a bien un .profile sur mon compte AIX appartenant à root et chargeant un profile.common qui fixe le DISPLAY à l'IP qu'il reçoit à la connection...
            Je vais demander aux administrateurs de me virer ça...

            En tout cas, merci pour vos réponses.
            Et sans rancune à LinuxFR :-)
            • [^] # Re: X sous SSH

              Posté par  . Évalué à 1.

              J'ai testé différentes possibilités avec un administrateur Unix ce matin sans succès...

              Voici la sortie -vv de mon ssh concernant la connection X. Si qqn a une idée...

              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
              debug2: client_session2_setup: id 0
              debug2: channel 0: request pty-req confirm 0
              debug1: Sending environment.
              debug1: Sending env LANG = fr_FR.UTF-8
              debug2: channel 0: request env confirm 0
              debug2: channel 0: request shell confirm 0
              debug2: fd 3 setting TCP_NODELAY
              debug2: callback done
              debug2: channel 0: open confirm rwindow 0 rmax 32768
              debug2: channel 0: rcvd adjust 131072
              • [^] # Re: X sous SSH

                Posté par  . Évalué à 2.

                Les logs ssh ne semblent pas mettre en évidence une erreur quelqconque.

                Est-ce que tu as pu modifier les scripts d'initialisation (.profile) pour ne pas forcer la variable DISPLAY?
                Si oui, que vaut cette variable ?

                La directive X11DisplayOffset apparaît-elle dans le fichier sshd_config du serveur ?

                Que te donne, sur le serveur, la commande "xauth list" ?
                Est-ce que tu as un fichier .Xauthority sur l'AIX ?
                Quels sont les droits sur ce fichier ?
                (question bête : tu as bien le droit d'écriture dans ton HOME sur le serveur ? : je demande ça à tout hazard, parce que tu as dit que ton .profile appartenait à root)

                Tu as dit qu'un de tes collègues pouvait se connecter au serveur AIX et lancer des applications graphiques : que vaut alors la variable DISPLAY et que donne "xauth list". Il est fort possible, vu ce que tu as déjà écrit, que la connexion X11 ne passe pas du tout pas un tunnel SSH mais par une simple connexion TCP. Si c'est le cas, tu peux essayer de faire la même chose en faisant :
                1) sur ta machine cliente, tu récupère le cookie d'autorisation avec :
                xauth list localhost:0
                tu devrais avoir une sortie avec nom_de_ta_machine MIT-MAGIC-COOKIE-1 <chaine de 32 caractères>.

                2) Ensuite, sur le serveur AIX tu tapes :

                export DISPLAY=<IP machine cliente>:0
                xauth add <IP machine cliente>:0 MIT-MAGIC-COOKIE-1 <chaine de 32 caractères>


                Et tu testes : comme tu as déjà viré l'option -nolisten tcp ça devrait marcher, mais ça n'a alors plus rien à voir avec du tunneling ssh (ça marcherait de la même façon avec une connexion telnet ou rlogin).
                Cela signifie que les paquets X11 passent en clair sur le réseau, mais sur un réseau local d'entreprise le risque est tout de même minime.

                JJD
                • [^] # Re: X sous SSH

                  Posté par  . Évalué à 1.

                  Merci pour cette analyse, voici qq éléments dans l'ordre :

                  - j'ai bien le droit d'écrire dans mon home (seul le .profile appartient à root, histoire d'homogénéiser les comptes...)
                  - une fois le .profile by-passer, $DISPLAY est mis à blanc via ssh...

                  -xauth list ne donne rien côté AIX, j'ai donc créé la liste avec mon IP mais sans plus de succès.

                  A signaler : une connection telnet sur le serveur AIX ne donne pas plus de résultat... les applications X ne passent tjs pas
                  • [^] # Re: X sous SSH

                    Posté par  . Évalué à 2.

                    Est-ce que du côte client (kubuntu), le serveur X accepte bien les conexions TCP ? Pour vérifier, la commande 'netstat -an' doit te retourner une ligne ressemblant à :
                    tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN

                    [le numéro de port doit être 6000 + numéro de display]

                    Si cette ligne n'apparaît pas ou si X écoute seulement sur l'interface locale (127.0.0.1 au lieu de 0.0.0.0) ça ne peut pas fonctionner avec une connexion telnet.

                    Que vaut DISPLAY et que donne "xauth list" sur l'AIX lorsque ton collègue sous Mandrake s'y connecte ? (pour savoir si le tunneling SSH du protocole X11 est utilisé et fonctionne).
                    • [^] # Re: X sous SSH

                      Posté par  . Évalué à 1.

                      Oui, effectivement, aucune ligne en 6000, le port n'est pas configuré...

                      j'ai fait un "netstat -an | grep 6000"

                      Que faut-il faire pour le configurer ?


                      Le DISPLAY chez mon collègue sous Mandrake vaut son IP lorsqu'il se loggue en ssh sur le serveur AIX...
                      Son xauth.list ne contient qu'une ligne sur une IP qui n'est pas la sienne ni celle du serveur AIX... je me demande si Xauthority est bien utilisé...
                      On a des fichiers .TTAuthority aussi, ça sert à quoi ?
                      Apparemment, on accède à une liste aussi via "ttauth" qui contient des cookies reliés à l'IP du serveur AIX...
                      • [^] # Re: X sous SSH

                        Posté par  . Évalué à 2.

                        D'après le nom, ttauth et le fichier .TTAuthority concerne un mécanisme équivalent à xauth et .XAuthorit mais pour l'accès aux terminaux textes (TTY). Je précise bien que ce n'est qu'une supposition (je n'ai pas eu le temps de chercher ...) et je ne vois pas bien dans quel cas cela peut servir. Mais je peux me tromper.

                        D'après ce que tu nous dit, il apparaît que la connexion X11 avec la machine Mandrake passe bien directement en TCP sans utiliser le tunneling SSH, ni même l'authentification xauth (je trouve tout de même ce dernier moint surprenant).

                        Comment est-ce que la sesion X est lancé su ton poste ? (gdm, xdm, kdm, startx, ...)
                        Avec quelles options X s'exécute ? (ps -ef |grep X)
                        Je pense qu'il va falloir fouiller un peu du côté de la configuration de kdm (sous kubuntu, je pense que c'est ce que tu utilises) ...

                        A+
                        JJD
                        • [^] # YES !!!

                          Posté par  . Évalué à 1.

                          Oui, en faisant un ps -eaf | grep X, j'ai remarqué que le serveur X était tjs lancé avec l'option -no listen tcp alors que je l'avais retiré de /etc/X11/init.d/xservrrc ...

                          Mais ce cochon de kdm avait son propre fichier de conf : kdmrc dans /etc/kde3/kdm où il mettait l'option

                          ServerArgsLocal=-nolisten tcp

                          Une fois cette option commentée, j'ai ENFIN pu obtenir mon affichage X, YES !

                          MERCI BEAUCOUP JJD !

                          @+
                          • [^] # Re: YES !!!

                            Posté par  . Évalué à 2.

                            Pas de quoi, ça me fait plaisir qu'on soit arrivé au bout.

                            Juste une dernière question : l'affichage fonctionne avec du tunneling SSH ou bien simplement avec une connexion TCP "classique" (DISPLAY fixée à l'adresse IP de la station cliente/Serveur X) ?

                            Bonne journée
                            JJD
                          • [^] # Re: YES !!!

                            Posté par  (site web personnel) . Évalué à 1.

                            > ServerArgsLocal=-nolisten tcp
                            > Une fois cette option commentée, j'ai ENFIN pu obtenir mon affichage X, YES !


                            Mais donc pas à travers ssh !
                            Tes applis X passent en clair sur le réseau !
                  • [^] # Re: X sous SSH

                    Posté par  (site web personnel) . Évalué à 1.

                    > xauth list ne donne rien côté AIX, j'ai donc créé la liste avec mon IP mais sans plus de succès.

                    Ca c'est pas normal.
                    Lorsque tu te loggues en ssh -X, le fichier ~/.Xauthority est créé sur ta machine AIX (et affichable ensuite avec xauth list).

                    > A signaler : une connection telnet sur le serveur AIX ne donne pas plus de résultat... les applications X ne passent tjs pas

                    Ca c'est normal, je crois que tu avais dit que côté client ton serveur X est lancé avec l'option -nolisten tcp donc il refuse les connexions distantes.
      • [^] # Re: X sous SSH

        Posté par  (site web personnel) . Évalué à 0.

        > Ceci dit, le changement via export DISPLAY=localhost:10.0 n'a rien donné...

        Tu ne nous as toujours pas dit ce que vaut ta variable DISPLAY...

        Sur le serveur, vire ton fichier .Xauthority, délogue toi, relogue toi avec "ssh -X".
        Que vaut "xauth list" ?
        Que vaut ton DISPLAY ?
        • [^] # Re: X sous SSH

          Posté par  . Évalué à 1.

          - La variable DISPLAY est par défaut affecté à mon IP
          - Si j'enlève le .profile, elle est mise à blanc
          - si je la force à localhost:10.0, cela ne fonctionne pas...

          le xauth list côté AIX est vide... c'est peut être la solution...
          • [^] # Re: X sous SSH

            Posté par  (site web personnel) . Évalué à 1.

            > - si je la force à localhost:10.0, cela ne fonctionne pas...

            Attention, les tunnels ssh X ne sont pas forcément ouvert sur :10.
            Ca va dépendre de la valeur de X11DisplayOffset fixée dans le fichier sshd_config du serveur ssh.
            Ensuite, les 10 prochains ports à partir de cette valeur sont utilisés, et pas uniquement le premier.
            Donc il se peut très bien qu'il faille rediriger vers localhost:12, voire vers localhost:38 !
    • [^] # Re: X sous SSH

      Posté par  . Évalué à 1.

      Bonjour,
      J'ai suivi le post et cela fonctionne très bien chez moi maintenant alors que j'avais un peu galéré avec l'export display. Merci !
      Sur ma machine pc1 je fais un ssh -X pc2
      et l'export du display est OK.
      Ma question :
      Une fois loggué en ssh sur pc2 je me loggue en root et l'export du display ne fonctionne plus. Une idée ?
      Pour ma part, l'intérêt c'est de lancer synaptic pour gérer mes paquets (j'ai du mal avec aptitude).
      NB : les deux machines sont sous Debian Sarge.
      Bon dimanche,
      Marc
      • [^] # Lancement appli graphique sous un autre utilisateur

        Posté par  . Évalué à 2.

        Salut,

        Le problème de lancement de synaptic sous root (ou de n'importe quelle appli graphique sous un utilisateur différent) est le même que tu sois en local ou connecté en SSH sur un serveur distant.
        Lorsque tu te logues en root (su -), tu ne récupéres pas la variable DISPLAY (ça c'est facile à régler) ni le cookie d'authentification de ta session X (dans le fichier ~/.Xauthority). Tu peux fixer la variable DISPLAY manuellement à la même valeur que celle de la session utilisateur ouverte avec SSH et récupérer le cookie qui va bien (voir un de mes posts précédents, ou alors tu récupères le fichier .Xauthority en le copiant ou en faisant un lien symbolique).

        Mais le plus simple est tout de même de faire exactement la même chose que le lanceur "synaptic" dans le menu : au lieu d'ouvrir une session sous root avec un "su -" puis de lancer synaptic, tu exécutes simplement
        gksu -u root /usr/sbin/synaptic.
        C'est alors gksu qui se charge de l'authentification (mot de passe root) et du paramétrage nécessaire pour X (DISPLAY + autorisation).

        J'espère avoir pu t'aider
        JJD
        • [^] # Re: Lancement appli graphique sous un autre utilisateur (Thx !)

          Posté par  . Évalué à 1.

          Salut,
          C'est exactement la solution que je cherchais : ne pas me logguer en root sur la machine distante, et une fois loggué comme un utilisateur lamda lancer en root des utilitaires comme synaptic.
          J'ai appris gksu que je ne connaissais pas. Fonctionne impec ;-)
          Merci x 1000 ! Je te souhaite une bonne semaine ;-)
          Marc

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.