# export display



## michaelkael (17 Février 2006)

bijour
j'ai un petit problème pour récupérer l'affichage d'une station de travail unix sur mon mac.
je prends soin de faire un xhost + sur mon x11, je me connecte par telnet sur la station, ensuite je lui demande de modifier l'affichage par un set DISPLAY=IP:0, et j'obtiens toujours en réponse si je fais un nedit un "can't open display"...


----------



## intra (17 Février 2006)

michaelkael a dit:
			
		

> bijour
> j'ai un petit problème pour récupérer l'affichage d'une station de travail unix sur mon mac.
> je prends soin de faire un xhost + sur mon x11, je me connecte par telnet sur la station, ensuite je lui demande de modifier l'affichage par un set DISPLAY=IP:0, et j'obtiens toujours en réponse si je fais un nedit un "can't open display"...



Salut.

Si tu est connecté en ssh a ta postation unix in ne faut pas que tu oublie de mettre l'option -X dans ton ssh autrement ca marche pas.
En gros la ligne de command dans le terminal doit etre:

ssh -X [toi]@[ton server unix]

NB: le "X" doit etr majuscule

Voila. J'espere que ca va resoudre ton probleme. Le logiciels devrai maintenant s'afficher dans un fenetre X11 de ton mac. Tu ne peux pas "exporter" tout le desktop de cette facon mais seulement les fenetres de logiciel. Pour avoir un apercu sur tout ton desktop tu peux essayer VNC mais il faut que t'aii installé VNC-server sur ta machine unix et VNC-client sur ton mac. Comme ca ca devrait marcher (j'ai jamais essayé un connection de c type entre mac et unix) mais je pense que le ssh -X soit la solution plus simple.

Plus


----------



## michaelkael (17 Février 2006)

le problème c'est la station unix n'a pas de serveur ssh. Donc je suis obligé de faire un telnet pour me loguer dessus, mais peut être que telnet a le même genre d'option,non?


----------



## intra (17 Février 2006)

Une station Unix sans ssh? Ca existe ca?
elle doit avoir une ip au moins au quel tu peux te connecter. Je m'explique si elle est connecté au un reseau elle doir avoir un ip fixe. Je crois (mais la tu me fais venir des doutes) que toute le machine unix ont par default le protocol ssh d'installé. Peut etre le serveur n'est pas defini mais je pense que si tu connais l'ip de la machine  tu peus faire par  example  pour un ssh simple

ssh [ton login]@[ip de la machine]

ca devrait marcher comme ca aussi mais je repete j'ai jamais vu une machine unix sans ssh.


----------



## michaelkael (17 Février 2006)

non non le ssh ne passe, la connection est refused...


----------



## intra (17 Février 2006)

Ca c peut etre du a un parefeu su la machine UNIX. Autrement il t'aurait dit que le server n'exite pas. Le parefeu n'est peut etre pas configuré pour te laisser te loger. Verifie avec le responsable du reseau au quel la machine est reliée.


----------



## bompi (18 Février 2006)

@Intra :
Des systèmes Unix sans SSH, ça existe et ce n'est pas son problème ... 
Il est évident qu'il vaut mieux avoir un sshd qu'un telnetd mais bon ... certains archaïsmes ont du mal à disparaître.

@Michaelkael :
Quel est le shell de ta connexion distante : sh (ou bash) ou csh (ou tcsh) ou ksh (ou zsh) ? Si c'est bash, il te faut faire :

```
export DISPLAY=aaa.bbb.ccc.ddd:0.0
```
 sans cela la variable n'est pas forcément connue (avec aaa.bbb.ccc.ddd valant l'adresse IP de ton poste tel qu'il est vu de la station Unix : ce n'est pas forcément l'adresse IP de ta machine telle que tu peux la voir).

Maintenant, il est aussi possible que tu passes par suffisamment de routeurs et FWs avec NAT et tout le toutim et que donc il n'y ait aucune chance de pouvoir connecter les ports idoines. Où l'on revient au fait que, dans ce cas, seul SSH pourrait te simplifier la vie ...


----------



## bompi (18 Février 2006)

Pour connaître ton adresse IP telle que vue par la station distante, la commande 'who' devrait t'aider.
Par exemple, sur un Mac, 
	
	



```
who -m
```
 donne l'information pour le shell où elle est entrée. Si c'est dans un Terminal, il n'y aura rien de special mais si c'est une connexion distante, le nom (ou l'IP) de la machine apparaîtra. Par exemple : 
	
	



```
toto@Iquique:toto [509]$ who -m
toto    ttyp3    Feb 18 01:04 ([b]bogota.local[/b])
```
Là c'est le user toto qui vient de la machine 'bogota.local' (j'ai mis en gras).


----------



## Deelight (18 Février 2006)

Il faut aussi vérifier que le serveur X sur le Mac accepte les connexions X11. Il faut à la fois l'activer dans sa config (vérifier que le serveur n'est pas lancé avec l'option "-nolisten tcp"), et s'assurer que le port correspondant est ouvert (à priori le 6000).

Ceci dit je suis aussi d'avis qu'avec ssh c'est beaucoup plus simple (pas besoin de "xhosts", de "set DISPLAY", de parametrage de X...). C'est juste un argument en plus au moment de la connexion ssh.


----------



## michaelkael (20 Février 2006)

le shell est bien tcsh. Et je suis bien d'accord pour les connections avec ssh, c'est beaucoup plus simple...
par contre comment vérifie-t-on que le serveur X sur le mac accepte les connections X11?


----------



## bompi (20 Février 2006)

Tu peux déjà vérifier que les tuyaux sont ouverts en tapant, dans la connexion distante :
	
	



```
telnet aaa.bbb.ccc.ddd 6000
```
Où aaa.bbb.ccc.ddd est l'adresse IP de ta machine telle que vue par la machine distante.
Cela te dira déjà si le port 6000 de ta machine est accessible.
Par ailleurs, comme tu as déjà fait "xhost +" après avoir lancé ton serveur X11, cela devrait être bon.


----------



## Deelight (20 Février 2006)

- Méthode rapide : voir si "telnet localhost 6000" arrive à établir une connexion.
- Methode propre : utiliser "netstat" pour vérifier les ports ouverts avec "netstat|grep LISTEN" (ou peut être "netstat -l" si c'est comme sous linux).


----------



## bompi (20 Février 2006)

Un telnet sur le localhost ne vérifie que X11 en local.
Dans son cas,  il s'agit d'une connexion distante et  il faut  donc bien vérifier qu'en partant de la machine distante on parvient à se connecter. C'est pour cela que je précise bien 'adresse IP telle que vue par la machine distante'. S'il y a des pare-feu ou de la translation d'adresse au milieu, il n'arrivera peut-être pas à atteindre son poste en retour. Et c'est bien là l'avantage de SSH qui te garantit une possibilité de connexion en retour.


----------



## Deelight (20 Février 2006)

En effet, je me contentais de répondre à sa question, à savoir vérifier si X11 ouvre bien le port TCP permettant le forwarding. Après, il faut en effet vérifier ensuite qu'il n'y ait pas d'autre obstacles.


----------



## michaelkael (20 Février 2006)

non effectivement je n'arrive pas à me connecter de la machine distante vers ma machine. Mais question bête, ne faut-il pas que ma machine soit considérée comme un serveur telnet pour que je puisse me connecter de la machine distante? bref je patauge...


----------



## Deelight (20 Février 2006)

Et ça marche en local sur ta machine (telnet localhost 6000) ?
Sinon pour répondre à ta question, inutile d'installer un serveur telnet sur ta machine (on propose juste des tests avec telnet pour vérifier si le port 6000 est ouvert/accessible).


----------



## michaelkael (20 Février 2006)

non ça ne marche pas en local sur ma machine, la connection est refusée.


----------



## Deelight (20 Février 2006)

*A mon avis, ton serveur X est lancé avec l'option "-nolisten tcp". Il va falloir aller traquer cette option dans les fichiers de config de X.

Cf La section 2.1.2 de cette doc : http://people.via.ecp.fr/~alexis/formation-linux/export-display.html
*


----------



## michaelkael (21 Février 2006)

a priori, pas de trace d'un xserverrc. Par contre, dans un fichier  etc/X11/xdmXaccess
# To control which addresses xdm listens for requests on:
#
#	LISTEN		address [list of multicast groups ... ]
#
# The fifth form tells xdm which addresses to listen for incoming connections
# on.  If present, xdm will only listen for connections on the specified 
# interfaces and/or multicast groups.

Il y a pas mal de choses dans ce fichier, et j'avoue que je ne sais pas trop quoi faire...


----------



## Deelight (21 Février 2006)

Tu peux essayer de trouver l'option en charchant dans tout le répertoire X11 :

cd /etc/X11
grep -r nolisten *


----------



## ppierre (22 Février 2006)

Bonjour,

Un détail qui a toute son importance manque: utilises-tu le système 10.3 ou 10.4?

En 10.3: dans X11, préférences, le dernier panneau il faut vérifier que tu acceptes les connexions externes, et d'autres détails (je n'ai pas de mac sous la main là).

En 10.4, je n'ai pas encore réussi à tout faire marcher, apple a enlevé le dernier panneau de réglage des préférences de X11 (ce que je trouve ridicule et assez pénalisant):

de toutes façon, entre dans un terminal
$defaults read com.apple.x11
et copie le résultat dans un message ici


----------



## michaelkael (23 Février 2006)

oui effectivement je suis en 10.4
mik% defaults read com.apple.x11
{
    "apps_menu" = ((Terminal, Eterm, n), (xman, xman, ""), (xlogo, xlogo, "")); 
    depth = -1; 
    "done_xinit_check" = 1; 
    "enable_fake_buttons" = 1; 
    "enable_key_equivalents" = 1; 
    "enable_system_beep" = 1; 
    "no_auth" = 1; 
    "nolisten_tcp" = 1; 
    "sync_keymap" = 1; 
}
maintenant je sais pas trop quoi faire avec...


----------



## michaelkael (23 Février 2006)

j'ai modifié l'option nolisten_tcp en la basculant sur 0. j'ai relancé x11, et essayé de lancer une appli graphique sur la machine distante, toujours rien...
cependant petite question, pourquoi le port 6000 est-il important? et comment l'activer si on ne peut pas se connecter dessus.
j'espère que je vais parvenir à faire la manip, parce que pour l'instant, j'utilise un cygwin sur un pc windows, et ma vue est en train de baisser à vue d'oeil;-)


----------



## bompi (23 Février 2006)

C'est le port sur lequel écoute le serveur X11, tout bonnement ...


----------



## ppierre (24 Février 2006)

Voilà, j'en suis au même point.

Mais j'espérais que mon cas soit isolé et que le nolisten_tcp=0 réglerait le problème.

Si ton firewall (est activé et accepte les connexions sur le 6000) ou (est désactivé) et que ça ne marche toujours pas, je ne sais plus quoi faire mais la solution m'intéresse.


----------



## michaelkael (27 Février 2006)

le fait de désactiver le firewall ou non ne modifie en rien le problème. Si je le coupe, le telnet de la machine distante sur ma machine ne se fait pas. je pense que c'est une mauvaise chose.


----------



## pupa (9 Mars 2006)

J'ai *"nolisten_tcp" = 1;* sur mon mac et tout fonctionne bien via un *ssh -XYC*
Un *telnet localhost 6000* sur ma machine (le mac) ne donne rien du tout non plus.
Par contre sur la machine cliente X11 (debian), il a fallu que je paramètre le fichier */etc/ssh/sshd_config*
avec l'option *X11Forwarding yes* pour pouvoir ouvrir un ssh avec le protocole X11 depuis mon mac.
Je pense qu'il faudrai s'assurer si telnet peu utiliser le protocole X11, avec quels arguments, et si oui, faut il paramètrer un fichier telnetd.conf ou un truc dans le genre ??

Et je voudrai pas raconter de conneries mais le protocole X11 fonctionne en client/server aussi en local, donc il a forcément son port ouvert, sinon il n'afficherai rien quand on ouvre un xterm par exemple !?

D'ailleurs juste une petite précision, tu es bien dans un xterm et non pas dans Terminal.app ?
mail il me semble avoir compris que oui

Je rejoin l'avis de tous le monde, installer ssh sur la machine unix serai le plus simple et peut-être le plus rapide aussi ;-)


----------



## michaelkael (10 Mars 2006)

merci pour tous les renseignements.
je vais sans doute pencher vers la solution du serveur ssh sur la machine unix...


----------



## sebf_98 (15 Mars 2006)

J'ai le meme probleme que Michael, je n'arrive pas a rediriger des applications X tournant en remote sur une machine Unix vers mon Mac et ce bien que j'ai fait un xhost+ sur le mac.
Quand je tape la commande "defaults read com.apple.x11" sur mon mac (Tiger 10.4), j'obtiens:

eugene:/etc/X11 sebf$ defaults read com.apple.x11
{
    depth = 24; 
    "done_xinit_check" = 1; 
    "enable_fake_buttons" = 1; 
    "enable_key_equivalents" = 1; 
    "enable_system_beep" = 1; 
    "no_auth" = 1; 
    "nolisten_tcp" = 1; <<<<<<<----------------
    rootless = 1; 
    "sync_keymap" = 1; 
    "wm_ffm" = true; 
}

Comment puis-je changer l'option 'nolisten_tcp' a zero ?


----------



## michaelkael (16 Mars 2006)

defaults write com.apple.x11 "nolisten_tcp" 1
plus d'info avec man defaults
ceci dit ça n'a pas résolu mon problème, mais ça ne coute rien d'essayer.
a+


----------



## sebf_98 (16 Mars 2006)

effectivement ca ne resoud nullement le probleme. 
Je continue a chercher car il est indispensable que cela fonctionne car je m'en sers dans le cadre de mon travail. En attendant j'ai reinstallé sur une 2eme partition le 10.3 avec lequel je ne rencontre aucun probleme.


----------



## pupa (18 Mars 2006)

Donnes nous un peu plus d'informations sur ton problème,
par quel protocole tu rediriges tes applis sous X
la syntaxe de ta commande
as tu un message d'erreur
la configue du client ...
@ +


----------



## michaelkael (22 Mars 2006)

en ajoutant la clé sur le serveur unix distant en faisant un xauth add display clé, ça ne marche pas non plus.
Ceci dit, il me rajoute lorsque j'ai génèré ma clé (xauth generate :0) un /unix du type : 
nommachine.domaine/unix:0 MIT-MAGIC-COOKIE-1  clé 
c'est normal le /unix?
j'ai remarqué qu'en plus du .Xautthority, il y a un .ICEauthority dans mon home. A quoi il sert?


----------

