Masilla-> Error de reenvío de Cygwin X11 "No se puede abrir la pantalla"

11

Estoy usando Putty en una máquina con Windows para ssh en otro servidor. Una vez allí, estoy tratando de usar el reenvío X11 para abrir ventanas en mi computadora. El sistema remoto no es el problema, ya que es un sistema grande que muchos otros usuarios utilizan con éxito de esta misma manera.

Entro en el sistema a través de Putty sin problemas y luego ejecuto startxwinen cygwin. Sin embargo, al ejecutar xtermPutty, aparece el error xterm Xt error: Can't open display: localhost:##.0en el que los signos de libra son dos enteros cuyo valor cambia cada vez que inicio sesión.

  • Tengo el reenvío X11 habilitado en la configuración de Masilla
  • Traté de configurar la "ubicación de visualización X" en localhost:0
  • Me aseguré de descargar el paquete X11 para cygwin
  • He intentado usar solo en startxlugar destartxwin
  • He intentado setenv DISPLAY localhost:0ysetenv DISPLAY my.ip.address

Lamentablemente, el problema persiste. He agotado mis recursos de Google en este tema, por lo que agradecería cualquier ayuda. ¡Gracias!

Tyler
fuente
localhost:##.0¿Qué números reales estás viendo aquí? ¿Qué tipo de software X está ejecutando en la computadora con Windows?
Kenster

Respuestas:

11

Las actualizaciones recientes de Cygwin han cambiado su servidor X para no escuchar las conexiones TCP de forma predeterminada. En cambio, X de Cygwin usa (la implementación de Cygwin de) sockets de dominio Unix, y PuTTY (como un programa nativo de Windows) no sabe cómo usarlos.

Las preguntas frecuentes de Cygwin X y las listas de correo de Cygwin tienen más detalles.

Mi solución fue tomar el acceso directo estándar de Cygwin que usa startxwin para lanzar X:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin"

y reemplácelo con una invocación directa de xinit con mis opciones deseadas (agregar -listen tcpy eliminar -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"

Esto es menos seguro que los nuevos valores predeterminados de Cygwin; solo debe usarse en un sistema de usuario único, y configurar su firewall para bloquear conexiones a XWin puede ser conveniente.

Josh Kelley
fuente
donde ejecutar esto ?? en terminal cygwin / PS / CMD
yellowandred
1
@yellowandred Comienza con `C:`, por lo que es una ruta de estilo Windows, no un terminal Cygwin. Acabo de ponerlo en la sección Destino de mi acceso directo de Windows. CMD debería funcionar. PowerShell debería funcionar, pero es posible que deba actualizar la cita.
Josh Kelley el
6

Como alternativa a lo que dijo Josh Kelley, también puede editar el archivo startxwin y agregar "-listen tcp" a los argumentos predeterminados del servidor.

Antiguo: defaultserverargs = "- multiwindow"

Nuevo: defaultserverargs = "- multiwindow -listen tcp"

También con la autenticación habilitada, tuve que señalar masilla al archivo de autenticación creado por el script startxwin. La mía se encuentra aquí: c: \ cygwin64 \ home \ USERNAME.Xauthority

Dado que este archivo se vuelve a crear, deberá reiniciar las sesiones de masilla después de restablecer su xserver.

Por seguridad, también puede permitir conexiones desde localhost, ya que aquí es donde la masilla lo reenvía.

Sir Launcelot
fuente
4

Intenté configurar la "ubicación de visualización X" en localhost: 0

¡Intente establecer la "ubicación de visualización X" en ': 0.0' en su lugar!

export DISPLAY=:0.0

Josh Kelley mencionó las preguntas frecuentes de Cygwin X :

3.13. Actualicé y ahora los clientes X no pueden conectarse

A1:

Desde el servidor X 1.17, de forma predeterminada, el servidor no escucha las conexiones TCP / IP, solo acepta conexiones locales en un socket de dominio Unix.

Para clientes locales, use DISPLAY =: 0.0, en lugar de DISPLAY = localhost: 0.0, DISPLAY = 127.0.0.1: 0.0, DISPLAY = :: 1: 0.0, etc.

usuario3248784
fuente
0

Como otros han dicho, el truco es agregar -listen tcpargumentos al servidor. Sin embargo, recomiendo hacer esto llamando startxwin -- -listen tcppara dejar startxwinconstruir el resto del xinitcomando.

En un acceso directo del menú Inicio:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin -- -listen tcp"
Dominic Lemire
fuente