X11 reenvío con Xming sobre SSH?

11

Tengo acceso SSH y tengo Xming instalado, junto con las fuentes Xming. Configuré PuTTY para reenviar x11 y le dije que colocara el escritorio en localhost: 0, de acuerdo con las instrucciones aquí .

Sin embargo, después de iniciar sesión y startxobtengo ... nada. O más bien, ejecuta un montón de mensajes que parecen decir que todo está funcionando, pero aparece un cursor en la ventana de mi consola que actúa como si estuviera en estado de espera. Y eso es.

¿Qué me estoy perdiendo? ¿Necesito abrir algo para ver el escritorio?

Quiero reenviar mi escritorio a mi PC de trabajo, para poder jugar con RasPi durante el almuerzo sin enchufar físicamente el hardware. Por favor ayuda.

EDITAR:

Captura de pantalla de lo que sucede con Xming ejecutándose, y entro SSH y llamo startx:

SSH con respuesta Xming

EDITAR 2:

Esta respuesta dice que startxes innecesaria, porque inicia el servidor RasPi X, y estoy usando el servidor Xming en Windows. En ese caso, ¿cómo llego al escritorio / GUI en Xming desde Windows? Porque, incluso con Xming ejecutándose y SSH habilitado, no obtengo nada más que un aviso de consola normal. Quizás lo estoy haciendo mal. Lo que quiero es mi interfaz gráfica de usuario RasPi completa y normal que se ejecuta en una ventana en mi PC remota con Windows. No quiero usar VNC. Estoy reenviando por Internet. ¿Como llego hasta ahí?

zenbike
fuente
2
También quería ejecutar una sesión gráfica desde mi Raspberry a mi computadora con Windows. Y cuando vi su mensaje diciendo que startx significa iniciar el servidor X, entendí que necesitaba iniciar un programa X ... ¡Entonces comencemos con el ... x-session-manager! de esa manera, tienes la sesión gráfica en tu computadora distante. gracias, me diste el camino!

Respuestas:

15

Si inicia Xming en su computadora con Windows, entonces ya tiene un servidor X ejecutándose. No tiene que iniciar el servidor X de su Raspberry Pi con startx. Sus aplicaciones X se ejecutarán en Raspberry Pi, pero la aplicación se basará en el servidor Xming X de Windows.

La documentación que vinculó indica que debe iniciar el servidor X en Windows y no menciona que debe iniciar el servidor X en Linux. En la última oración de la documentación:

Ahora debería poder ejecutar aplicaciones X desde el host en su escritorio local

"Aplicaciones X" no se refiere al servidor X (que debe ser iniciado por startx) sino a aplicaciones como xclock, xeyes, etc.

Una aplicación X especial es lxsession, que iniciará el administrador de sesión estándar de LXDE (al menos en mi Raspbian). Al iniciar esta aplicación en la consola, obtendrá la "GUI completa" que está buscando:

lxsession

Personalmente no me parece útil comenzar lxsession, iniciar las aplicaciones X en la consola es mucho más fácil para mí.

asalamon74
fuente
1
Okay. Esto lo puedo entender, creo. Estás diciendo que startx es innecesario, porque inicia el servidor RasPi x, y estoy usando el servidor Xming en Windows. En ese caso, cómo llego al escritorio / GUI en Xming desde Windows. Porque, incluso con Xming ejecutándose y SSH habilitado, no obtengo nada más que un aviso de consola normal. Estás diciendo que solo ejecutaría la aplicación real en xming, no la GUI completa. Quizás lo estoy haciendo mal. Lo que quiero es mi GUI RasPi completa y normal ejecutándose en una ventana en mi PC con Windows remoto. No quiero usar VNC. Estoy reenviando por internet.
zenbike
Se actualizó la respuesta.
asalamon74
Funciona perfectamente, si (como se esperaba) un poco lento para responder. Gracias por tu ayuda.
zenbike
1
... Y esa es la razón por la cual su guía recomienda ejecutar aplicaciones individuales a través de ssh a la vez ...
Alexander - Restablecer Monica
1
@ asalamon74 ¡Gracias! ¡Guauu! Esto es sólo un idiota. No tengo que lidiar con el teclado y el mouse conectados al usb con un cable increíblemente corto. Solía ​​sentarme frente a la televisión con la configuración anterior. ¿AHORA? ¡Solo hago un ssh y ejecuto la interfaz gráfica como un jefe!
Dheeraj Bhaskar
1

Usando Cygwin / X

Si no está vinculado a Xming, puede utilizar Cygwin / X para ejecutar un servidor X en Windows.

Preparando la Raspberry Pi

Intente establecer una conexión SSH regular desde Windows a Raspberry Pi usando PowerShell:

Inicie sesión en Raspberry Pi en Windows con PowerShell y SSH

Teniendo en cuenta que Raspbian Buster incluye X11Forwarding yesen /etc/ssh/sshd_config, su Frambuesa Pi también debe ser capaz de reenviar la salida visual de aplicaciones X11 a un servidor X en Windows.

El siguiente paso muestra cómo instalar ese servidor X.

Instalar Cygwin / X en Windows

Cygwin / X proporciona un servidor X para Windows que muestra aplicaciones GUI que se ejecutan en Raspberry Pi.

  1. Descargue y ejecute setup-x86_64.exedesde el sitio web de Cygwin .

  2. Para el "Directorio de paquetes locales" de Cygwin puede usar C:\Users\me\AppData\Roaming\Cygwin.

  3. Elija un servidor cerca de usted para descargar paquetes.

  4. Establezca "Ver" en "Completo" y busque xinit.

  5. En la columna "Nuevo", use el menú desplegable para cambiar el valor de "Saltar" a xinitla última versión:

Instale el paquete xinit con Cygwin

  1. Instale el paquete de opensshla misma manera.

Conéctese a Raspberry Pi desde Windows

  1. Iniciar el servidor X utilizando el menú de inicio de Windows': Cygwin-X → XWin Server. Esto no abrirá ninguna ventana, pero debería ver dos iconos nuevos en la bandeja del sistema:

Iconos del servidor XWin en la bandeja del sistema

  1. Inicie la terminal Cygwin: Cygwin → Cygwin64 Terminal

  2. Establezca la DISPLAYvariable de entorno donde se ejecuta el servidor X en Windows:

    export DISPLAY=:0.0

  3. Conéctese a su Raspberry Pi con reenvío X11:

    ssh -Y pi@raspberrypi

Inicie sesión con Cygwin Terminal

Dentro de la sesión SSH, ahora puede iniciar una aplicación X en Raspberry Pi como Thonny :

Thonny reenviado a Windows

Alternativamente, como el usuario 1297 mencionó en los comentarios de la pregunta, puede ejecutar x-session-managerpara emular la experiencia que obtendría al conectarse a la Raspberry Pi a través de HDMI en un monitor externo:

Escritorio Rasbpian reenviado a Windows

Si desea iniciar una aplicación directamente sin escribir primero su nombre en el shell, use esto:

ssh -Y pi@raspberrypi x-session-manager

En macOS

XQuartz proporciona un servidor X para macOS.

Instale XQuartz, cierre sesión y vuelva a DISPLAYiniciarla (para que el nuevo valor sea efectivo), luego inicie aplicaciones con SSH desde Bash:

ssh -Y pi@raspberrypi thonny

Thonny dentro de macOS usando XQuartz

Matthias Braun
fuente
1

Si ya está ejecutando un servidor X en Windows (como lo está con Xming), entonces el lado de Windows está hecho en su mayor parte (pero vea a continuación algunos detalles importantes). El bit clave restante es decirle a las aplicaciones X11 en el pi que envíen sus datos X11 a su PC con Windows.

Esto se hace a través de la DISPLAYvariable de entorno. Normalmente, si el servidor X y la aplicación se ejecutan en la misma computadora, DISPLAY solo especificará el número de servidor (por ejemplo, :0si solo está ejecutando un servidor X) o tal vez un servidor y una pantalla (por ejemplo :0.0). Como no hay una dirección IP, esto le dice a la biblioteca X de las aplicaciones que el servidor es local y que las conexiones se realizarán en consecuencia (probablemente a través de algún tipo de transporte de memoria compartida).

Para indicarle a la aplicación que envíe datos X11 a un nodo remoto, incluya una dirección IP en la DISPLAYvariable. Por ejemplo, export DISPLAY=192.168.1.10:0. Esto le indicará a las aplicaciones X11 que necesitan abrir una conexión TCP al servidor X # 0 en el nodo 192.168.1.10. Los nombres de host DNS están bien aquí, si los tiene en su red.

Dos problemas potenciales

Como escribí en el primer párrafo, simplemente ejecutar Xming puede no ser suficiente. Puede haber una configuración adicional necesaria.

La primera es que su servidor X11 debe estar configurado para aceptar conexiones desde nodos remotos a través de TCP. Muchos servidores X distribuidos hoy (no sé sobre Xming) solo aceptan conexiones de aplicaciones que se ejecutan localmente a menos que las configure explícitamente de otra manera. Esta es una característica de seguridad, ya que cada socket abierto es un vector potencial de ataque.

El segundo es que su servidor X11 mantiene una base de datos de hosts / usuarios que pueden conectarse. Debe incluir en la lista blanca la dirección IP de su Raspberry Pi. Puede hacerlo ejecutando el xhostcomando desde Xming en Windows, por ejemplo, desde una consola que se ejecuta en un xterm. También puede escribir xhost +para deshabilitar esta comprobación de seguridad, pero eso es peligroso porque permitirá que cualquier aplicación de cualquier parte del mundo abra conexiones a su pantalla. Si está detrás de un firewall en una LAN en la que confía en todos (por ejemplo, en su propia casa), ese es el enfoque más fácil, pero tómese el tiempo para configurarlo adecuadamente xhostsi no lo está.

Alternativa: ssh -Y

Usando el enfoque anterior, todas sus aplicaciones X11 intentarán abrir conexiones TCP a su servidor X. Estas conexiones no son seguras. Alguien en sus paquetes de espionaje de LAN puede interceptarlos.

Para resolver este problema, en lugar de configurar la variable DISPLAY en la Raspberry pi, use el -Yparámetro cuando se conecte (p slogin -Y hostname. Ej .). El parámetro -Y (como -X) creará un túnel entre los nodos para transportar tráfico X11. Esto mantendrá el tráfico X11 encriptado y seguro. También asignará su propia variable de entorno DISPLAY para que las aplicaciones usen el túnel. También puede eliminar la necesidad de meterse xhostya que (en lo que respecta a su servidor X) las conexiones se originan localmente (desde el lado de origen del túnel SSH).

David C.
fuente