J'utilise PuTTY sur une machine Windows pour SSH sur un autre serveur. Une fois là-bas, j'essaie d'utiliser le transfert X11 pour faire apparaître des fenêtres sur mon ordinateur. Le système distant n’est pas en cause, car c’est un grand système utilisé avec succès par de nombreux autres utilisateurs de la même manière.
Je me connecte au système via PuTTY sans problème, puis exécute startxwin
dans cygwin. Cependant, lors de l'exécution de xterm
dans PuTTY, l'erreur xterm Xt error: Can't open display: localhost:##.0
apparaît, où les signes dièse sont deux entiers dont la valeur change à chaque fois que je me connecte.
localhost:0
startx
au lieu de startxwin
setenv DISPLAY localhost:0
et setenv DISPLAY my.ip.address
Malheureusement, le problème persiste. J'ai épuisé toutes mes ressources sur Google à ce sujet et j'apprécierais donc énormément toute aide. Merci!
Les mises à jour récentes de Cygwin ont modifié son serveur X afin qu'il n'écoute pas les connexions TCP par défaut. Au lieu de cela, X de Cygwin utilise (l'implémentation de Cygwin) des sockets de domaine Unix, et PuTTY (en tant que programme Windows natif) ne sait pas comment les utiliser.
Les FAQ de Cygwin X et Cygwinmailinglistes ont plus de détails.
Ma solution consistait à prendre le raccourci Cygwin standard qui utilise startxwin pour lancer X:
C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin"
et remplacez-le par une invocation directe de xinit par les options souhaitées (ajoutez -listen tcp
et supprimez -auth
):
C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/xinit /etc/X11/xinit/startxwinrc -- /usr/bin/XWin :0 -multiwindow -listen tcp"
Ceci est moins sécurisé que les nouvelles valeurs par défaut de Cygwin; il ne doit être utilisé que sur un système mono-utilisateur. Il peut être judicieux de configurer votre pare-feu pour bloquer les connexions à XWin.
Comme alternative à ce que Josh Kelley a dit, vous pouvez également éditer le fichier startxwin et ajouter le "-listen tcp" aux arguments du serveur par défaut.
Ancien: defaultserverargs = "- multiwindow"
Nouveau: defaultserverargs = "- multiwindow -listen tcp"
Aussi, avec l'authentification activée, je devais pointer PuTTY vers le fichier d'authentification créé par le script startxwin. Le mien était situé ici: c:\cygwin64\home\USERNAME.Xauthority
Ce fichier étant recréé, vous devrez redémarrer les sessions PuTTY après avoir réinitialisé votre serveur x.
Pour des raisons de sécurité, vous pouvez également n'autoriser que les connexions de localhost, car c'est ici que PuTTY le transfère.
J'ai essayé de régler "l'emplacement d'affichage X" sur localhost: 0
Essayez de définir "Emplacement d'affichage X" sur ": 0.0" à la place!
export DISPLAY=:0.0
Josh Kelley a mentionné le FAQ de Cygwin X :
3.13. J'ai mis à niveau et maintenant les clients X ne peuvent plus se connecter
A1:
Depuis le serveur X 1.17, par défaut, le serveur n'écoute pas les connexions TCP/IP, il n'accepte que les connexions locales sur un socket de domaine unix.
Pour les clients locaux, utilisez DISPLAY =: 0.0 plutôt que DISPLAY = localhost: 0.0, DISPLAY = 127.0.0.1: 0.0, DISPLAY = :: 1: 0.0, etc.
C'est pour xming, mais peut-être que cette FAQ peut être utile? L'idée sous-jacente est la même, mais l'utilisation de xming au lieu de cygwin sur votre machine locale. https://wiki.utdallas.edu/wiki/display/FAQ/X11+Forwarding+using+Xming+and+PuTTY