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 startx
obtengo ... 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
:
EDITAR 2:
Esta respuesta dice que startx
es 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í?
Respuestas:
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:
"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:
Personalmente no me parece útil comenzar
lxsession
, iniciar las aplicaciones X en la consola es mucho más fácil para mí.fuente
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:
Teniendo en cuenta que Raspbian Buster incluye
X11Forwarding yes
en/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.
Descargue y ejecute
setup-x86_64.exe
desde el sitio web de Cygwin .Para el "Directorio de paquetes locales" de Cygwin puede usar
C:\Users\me\AppData\Roaming\Cygwin
.Elija un servidor cerca de usted para descargar paquetes.
Establezca "Ver" en "Completo" y busque
xinit
.En la columna "Nuevo", use el menú desplegable para cambiar el valor de "Saltar" a
xinit
la última versión:openssh
la misma manera.Conéctese a Raspberry Pi desde Windows
Cygwin-X → XWin Server
. Esto no abrirá ninguna ventana, pero debería ver dos iconos nuevos en la bandeja del sistema:Inicie la terminal Cygwin:
Cygwin → Cygwin64 Terminal
Establezca la
DISPLAY
variable de entorno donde se ejecuta el servidor X en Windows:export DISPLAY=:0.0
Conéctese a su Raspberry Pi con reenvío X11:
ssh -Y pi@raspberrypi
Dentro de la sesión SSH, ahora puede iniciar una aplicación X en Raspberry Pi como Thonny :
Alternativamente, como el usuario 1297 mencionó en los comentarios de la pregunta, puede ejecutar
x-session-manager
para emular la experiencia que obtendría al conectarse a la Raspberry Pi a través de HDMI en un monitor externo:Si desea iniciar una aplicación directamente sin escribir primero su nombre en el shell, use esto:
En macOS
XQuartz proporciona un servidor X para macOS.
Instale XQuartz, cierre sesión y vuelva a
DISPLAY
iniciarla (para que el nuevo valor sea efectivo), luego inicie aplicaciones con SSH desde Bash:fuente
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
DISPLAY
variable 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,:0
si 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
DISPLAY
variable. 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
xhost
comando desde Xming en Windows, por ejemplo, desde una consola que se ejecuta en un xterm. También puede escribirxhost +
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 adecuadamentexhost
si 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
-Y
parámetro cuando se conecte (pslogin -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 metersexhost
ya que (en lo que respecta a su servidor X) las conexiones se originan localmente (desde el lado de origen del túnel SSH).fuente