Ejecute la aplicación en la máquina local y muestre la GUI en la pantalla remota

35

¿Es posible ejecutar una aplicación en mi escritorio local pero mostrar la GUI en mi computadora portátil (X remota)?

Me pregunto si es posible emular una configuración de monitor dual utilizando 2 máquinas distintas conectadas a LAN.

He instalado sinergia y puedo controlar fácilmente mi computadora portátil con el teclado / mouse de escritorio, pero también me gustaría ejecutar algo en el escritorio y mostrar la GUI en la pantalla de la computadora portátil.

Por mi experiencia limitada con X, sé que puedo ejecutar un programa en una máquina remota y usar la pantalla del primero para mostrar la salida, pero no al revés.

Cualquier puntero sería de gran ayuda. Gracias

PS ejecutando XFCE 4.10 en Ubuntu 12.10

Vlad Balmos
fuente

Respuestas:

39

Variante A - Disparar X Windows a otra PANTALLA:

  1. Asegúrese de que el Xserver de su computadora portátil comience a escuchar conexiones tcp. Lamentablemente, X11-Networking está deshabilitado de forma predeterminada en la mayoría de las distribuciones. Dado que su administrador de pantalla inicia el servidor X (gdm, lightdm), esto debe configurarse allí:

    Cualquiera que sea el administrador de pantalla que utilice, algunos archivos de configuración en / etc / probablemente contendrán el parámetro XServer responsable. Ejecute grep -r 'nolisten tcp' /etc/en su computadora portátil para averiguar qué archivo de configuración es responsable y elimine la parte donde dice -nolisten tcp(no toda la línea, solo este parámetro). Reinicie X en su computadora portátil.

    Su computadora portátil ahora debe tener una pantalla ejecutándose en el puerto tcp 6000 (intente ejecutar nmap -p6000 Laptopen su PC de escritorio, si el puerto se informa como "abierto", llegó hasta aquí).

  2. Haga que su pantalla X esté disponible para la computadora de escritorio. X11 utiliza un mecanismo de autenticación para otorgar acceso a una pantalla. Debe permitir que la PC de escritorio dispare Windows en la computadora portátil. Normalmente intercambiando una cookie de visualización.

    Para empezar, realice este paso con las manos en su computadora portátil. Una vez que haya obtenido el concepto con la DISPLAYvariable y todo, puede hacerlo a través de ssh.

    Rápido y sucio: puede ejecutarlo xhost +desktops.computers.ip.addressen su computadora portátil para otorgar acceso X a la computadora de escritorio. Tenga en cuenta que cada usuario en su computadora portátil puede usar su pantalla X de computadora portátil de esta manera. Tenga en cuenta que esto es suficiente, es decir, para instalar un keylogger en la pantalla de su computadora portátil. Use este método solo para pruebas.

    Correcto y seguro: ejecútelo xauth extract cookie-file :0en su computadora portátil para exportar su secreto de acceso de pantalla a "cookie-file". Transfiera la cookie a su máquina de escritorio. Ejecutar xauth merge cookie-file. O en un breve paso (desde su escritorio) ssh Laptop xauth extract - :0 |xauth merge -Nota: si su computadora portátil y de escritorio comparten un directorio de inicio, es decir, a través de nfs, no necesita intercambiar ninguna credencial. La base de datos de credenciales es el archivo .Xauthority en su directorio de inicio, y se puede compartir entre diferentes máquinas.

  3. Ejecute el programa: en una terminal de su PC de escritorio export DISPLAY=Your.Laptops.IP.Address:0, ejecute cualquier programa X en la misma terminal. Debería aparecer en la pantalla de los portátiles.

Variante B: uso de SSH con un giro.

SSH logra el reenvío X11 reenviando un zócalo X11 local (normalmente un zócalo de dominio Unix) a un zócalo TCP local en la máquina remota, luego negociando la cookie de visualización, luego configurando el DISPLAY-Environment en la máquina remota. De esta manera, todo el tráfico X11 se cifra en el túnel ssh. El caso de uso normal es reenviar la pantalla local a la máquina remota (lo que significa permitir que las aplicaciones remotas muestren x ventanas localmente).

La ventaja de usar ssh es que no necesita poner su X-Server en modo de escucha tcp (ya que se usa el socket unix). Y ssh maneja el intercambio de credenciales.

  1. SSH a su computadora portátil desde su computadora de escritorio (no necesita usar -X todavía).
  2. En el shell remoto ingrese export DISPLAY=:0esto hace que la pantalla que ya se está ejecutando en su computadora portátil esté disponible para el shell que obtuvo a través de ssh. Si ejecuta cualquier comando X ahora, ya aparecerá en la pantalla de su computadora portátil, pero aún se ejecutará en su computadora portátil (pruébelo para estar seguro).
  3. Desde este shell ssh de regreso a su computadora de escritorio, use -X esta vez. Ahora tiene un shell en la máquina en la que se originó la sesión ssh pero esta vez con X funcionando. Ejecute xeyes o xcalc para probarlo.
  4. echo $DISPLAYle muestra la designación, la pantalla X de su computadora portátil ahora está en su computadora de escritorio. Es decir: 10 o: 11.
  5. Puede minimizar el terminal ahora. Cada vez que ingrese export DISPLAY=:10(vea el número de pantalla que obtuvo) en su computadora de escritorio ahora, cada programa que ejecute luego en el mismo shell aparecerá en la pantalla de su computadora portátil.

    Esta variante es fácil pero lenta, ya que todo el tráfico X11 se reenvía a través de SSH.

Variante C - El concepto original de thinclient:

Puede usar su computadora portátil para abrir una sesión de escritorio que se ejecute completamente en su computadora de escritorio.

  1. Configure el administrador de pantalla en su escritorio para responder a las transmisiones XDMCP. Cómo hacerlo depende de su administrador de pantalla. Algunos administradores de pantallas no admiten esto en absoluto, es decir, delgado. XDM, KDM, WDM, GDM lo admiten.

  2. Inicie un X-Server en su computadora portátil, que solicita el administrador de pantalla desde su escritorio. Ya sea una X anidada, Xephyr :1 -query desktopo bien Xephyr :1 -broadcast apagando el servidor X de su computadora portátil e ingresando en una terminal del sistemasudo Xorg :0 -broadcast

    El administrador de visualización se encargará de que las credenciales se generen e intercambien y todo. Felicidades, ahora debería ver una ventana de inicio de sesión proporcionada por su computadora de escritorio.

Paul Hänsch
fuente
2
Por cierto. Toda esta maravillosa funcionalidad X11 dejará de funcionar una vez que Ubuntu cambie a Wayland. Las aplicaciones nativas de wayland ya ni siquiera se pueden reenviar a través de ssh.
Paul Hänsch
66
¿No es irónico que no haya una cadena de herramientas gráficas para controlar su X-Server? Si realmente desea trabajar con GUI, primero debe dominar la línea de comando.
Paul Hänsch
Sugerencia general: El primer programa que puede iniciar en su pantalla remota es un iniciador de aplicaciones. Es decir, lxpanel o algo así. Esta maravilla mucho trabajo de línea de comando.
Paul Hänsch
¿Esto todavía funciona para Ubuntu 17's + ... o se ha cumplido la predicción de Wayland?
Xen2050
19

Puede usar el reenvío ssh X para lograr su objetivo. Si está en la misma subred, salga rápido.

Instale el servidor ssh y el cliente en su computadora portátil y PC de escritorio

sudo apt-get install ssh

Para conectarse a la PC de escritorio, abra una terminal en la computadora portátil y escriba lo siguiente

ssh -X username@desktop_pc_ip

Y puede iniciar cualquier software utilizando el terminal, por ejemplo, iniciando Firefox, simplemente escriba firefoxel terminal.

OH LA LA
fuente
2
No olvide verificar que los archivos de configuración sshd (generalmente / etc / ssh / sshd_config) tienen X11Forwarding configurado en yes también.
Matrix Mole
Aquí está mi caso de uso: estoy en mi escritorio y abro Firefox, por ejemplo, pero quiero que la ventana del navegador se abra en la pantalla de mi computadora portátil y todavía se ejecute en mi escritorio. Estoy buscando una funcionalidad similar a los espacios de trabajo, pero en lugar de un espacio de trabajo local (4 pantallas en la misma PC) para usar un espacio de trabajo remoto (la computadora portátil)
Vlad Balmos
2
También puede probar el x2xpaquete, puede usar un teclado y un mouse en una máquina diferente. por ejemplo:ssh -X user@host x2x -west -to :0
ohlala
@iUngi ya estoy usando la sinergia para eso, gracias de todos modos
Vlad Balmos
Tenga en cuenta que al abrir el acceso al servidor X de su escritorio, le está dando un acceso bastante amplio a la máquina remota. Si su servidor se vio comprometido, esto también podría usarse para acceder a su escritorio. El reenvío X11 es útil, pero piense en lo que está haciendo y no lo active de manera predeterminada.
mc0e
7

Preparación

(haces esto solo una vez)

En su escritorio instale el servidor SSH

sudo apt-get install openssh-server


Desde tu laptop:

ssh -X nombre de usuario @ desktop_pc_ip

En la terminal, obtienes lo que ejecutas en tu escritorio, pero se muestra en tu computadora portátil. Si desea hacer lo mismo mientras está sentado en su escritorio (y enviar ventanas en su computadora portátil), continúe.

En tu terminal corres

echo $ DISPLAY

Esto te mostrará algo como:

localhost:10.0

Desde tu escritorio:

Abre una terminal y ejecuta

DISPLAY=:10.0 firefox

Esto debería enviar una firefoxventana en su computadora portátil pero ejecutándose en su escritorio. Asegúrese de que el número que ponga (por ejemplo 10.0) sea el mismo que en el echoresultado

Nick Andrik
fuente
3

Está buscando usar una combinación de SSH y pantalla para obtener la situación que desea.

En su escritorio, instale la pantalla:

pantalla de instalación de sudo apt-get

A partir de ahí, inicie una nueva sesión de pantalla:

pantalla

y abre firefox en él:

Firefox

Usa firefox todo lo que quieras en tu escritorio, luego ssh en tu computadora desde tu laptop:

ssh -X nombre de usuario @ nombre de host

Escriba el siguiente comando para ver qué sesiones de pantalla está ejecutando:

pantalla -ls

Inicie sesión en su sesión de pantalla (1234 sería el número que le dio la pantalla)

pantalla -x 1234

Luego puede usar firefox en su computadora portátil y cerrar la terminal en su escritorio.

usuario530873
fuente
Probé eso. abrí la pantalla desde la terminal, inicié firefox en el escritorio, luego pasé de la computadora portátil al escritorio, adjunté la sesión de pantalla, pero no obtengo ninguna ventana en la computadora portátil, solo la salida del programa en ejecución en la pantalla.
Vlad Balmos
Lo estabas mezclando. Espera ... al menos uno de ustedes lo hizo. Instale la pantalla en su computadora de escritorio, use su computadora portátil en ssh -Xsu escritorio, inicie la pantalla en la sesión ssh, sepárela y deje la sesión en funcionamiento. Luego vuelva a conectar la sesión de pantalla con las manos en su computadora de escritorio y ejecute algo. Esto es similar a mi respuesta "SSH con un giro". Usar la pantalla lo hace un poco más conveniente.
Paul Hänsch
3

Virtualgl creará un escritorio adicional (en segundo plano) (Estilo TightVNC) al que puede acceder a través de un cliente turbo VNC . Funcionará como un acuerdo de tipo de escritorio remoto -> Pero reproducirá video sin problemas a través de una red.

Si está buscando una manera de descargar la sobrecarga de la CPU para una conexión remota, para que pueda ejecutar aplicaciones desde su computadora en su computadora portátil, eso sería lo que haría.

http://www.virtualgl.org/

También puede exportar el entorno de escritorio a través de SSH como / dude mencionado anteriormente.

TardisGuy
fuente
Gracias. Parece prometedor. Echaré un vistazo y te mantendré informado.
Vlad Balmos
Sí, "TurboVNC" (más aún, su componente VirtualGL) ES el resultado de mi búsqueda de un programa de escritorio remoto que me permitiera jugar videojuegos y películas. Funcionaría fácilmente como un monitor adicional.
TardisGuy
1

Después de más excavaciones en línea, me encontré con DMX

Desde la página de inicio

Xdmx es un servidor proxy X que proporciona soporte de múltiples cabezales para múltiples pantallas conectadas a diferentes máquinas (cada una de las cuales ejecuta un servidor X típico). Cuando Xinerama se usa con Xdmx, las múltiples pantallas en múltiples máquinas se presentan al usuario como una única pantalla unificada.

Vlad Balmos
fuente
1
Esta sería una mejor respuesta si puede dar instrucciones sobre cómo instalar y cómo usar.
fossfreedom
XmetaX proporciona funcionalidades similares. ¿Hay alguna alternativa a Xdmx y XmetaX?
Mariusz
1

Sí, es posible. Estoy tomando ambas computadoras Linux con xclock instalado en la computadora local. Estoy tratando de ejecutar xclock localmente y mostrar el reloj en una computadora Linux remota.

reboot the remote machine
Disable firewall
Disable SELINUX
Check $DISPLAY variable value by command
echo $DISPLAY
Let say its value is :1
run command
xhost +

Now on local computer
xclock -display remote_machine_IP_address:1
Mian Asbat Ahmad
fuente