¿Cómo ejecuto una aplicación GUI a través de SSH?

Estoy acostumbrado a trabajar en Unix/Linux y recientemente me mudé a Mac. En solía ser capaz de hacer esto:

derick@linux1:~$ ssh -X linux2
derick@linux2's password:
derick@linux2:~$ xclock

Instalé X11 desde maxports y puedo hacer lo mismo desde mi mac. Si pruebo lo contrario ssh-ing en mi Mac desde Linux, solo puedo ejecutar ciertas aplicaciones:

  • /usr/X11/bin/xclockfunciona bien

  • Algo así como /Applications/Preview.app/Contents/MacOS/Previewabre la GUI en la mac.

    ¿Parece que esto no es posible en un Mac? Si no, ¿cómo ejecuto una aplicación de forma remota (en una Mac) con una pantalla local (Linux)? ¿Necesito alguna aplicación de terceros?

Actualización: para ser más precisos: tengo sinergia y uso Mac para codificar. En mi PC con Linux, me gustaría ver la pantalla de otra aplicación (GUI) de Mac. Por lo tanto, las aplicaciones de 'compartir pantalla en vivo' como VNC no funcionarán.

Por ejemplo, estoy trabajando en mi Mac en la aplicación A (por ejemplo, Word) y quiero ver el resultado de Excel (ejecutándose en Mac) en mi PC con Linux a mi lado. (Simulación de una pantalla dual a través de la red). Funcionó muy bien en Linux, esperando una solución para Mac.

Si no hay una solución a través de SSH, también estaría interesado en eso. El problema es que quiero ejecutar la pantalla de una aplicación local en una PC a través de la red junto a mí como solía hacer con Linux.
¿Puedo preguntar por qué quiere evitar VNC? ¿Problemas de retraso en la red?
Actualmente estoy trabajando en la Mac, por lo que la pantalla está "ocupada". Quiero ejecutar otra aplicación en la Mac con el resultado que se muestra en la PC a mi lado. Como hice con linux. Con la esperanza de ver una solución en mac.
Por cierto, no tienes que instalar X11 por macports... X11 viene con OS X.
Ah, ja, entonces su objeción a VNC no se debe a ningún problema de VNC, sino a las limitaciones de la pantalla.

Respuestas (5)

Entonces, si no me equivoco, el problema que tiene con VNC actualmente es que está compartiendo la pantalla del usuario actual de Mac con aplicaciones abiertas que no desea ver en su otra computadora. Lion presenta la capacidad de compartir la pantalla de los usuarios que han iniciado sesión en segundo plano . Citando el texto del enlace:

  • Habilite Compartir pantalla y establezca una contraseña de VNC.
  • Tome nota de la dirección IP de su computadora.
  • Inicie un cliente VNC en otra máquina.
  • Conéctese a la dirección IP de su computadora junto con la contraseña que estableció anteriormente.
  • Verá la pantalla de inicio de sesión de Mac OS X que aparece cuando inicia la computadora por primera vez. Si inicia sesión en el usuario actualmente activo, controlará la pantalla de la computadora. Si selecciona un usuario diferente, iniciará sesión en el escritorio de ese usuario en segundo plano. No afectará lo que se ve en la pantalla física de la computadora.

Es probable que solo necesite crear otro usuario para compartir.

Genial, esto parece ser lo que quiero! Ahora tengo otra motivación para actualizar a Lion . Probaré pronto y probablemente aceptaré esto como la respuesta. ¡Gracias!
Maldita sea, acabo de actualizar y obtengo la pantalla de inicio de sesión a través de VNC. Pero no quiere tomar mi teclado acariciado. Por lo tanto, no puedo iniciar sesión :(
Eso es muy extraño: ¿qué cliente VNC estás usando?

La aplicación nativa de Mac OS X no utiliza el protocolo X para la representación, sino el protocolo específico de Mac. Por lo tanto, no puede usar el reenvío del protocolo ssh X como podría hacerlo con una estación de trabajo Linux.

Como descubrió, lo contrario no es cierto, puede instalar un servidor X en Mac OS X y hacer que el programa Linux aparezca en su Mac.

Lo que puede hacer es usar la instalación de uso compartido de escritorio de Mac o instalar un servidor VNC. Luego, desde su caja de Linux, se conecta a su Mac a través de VNC en lugar de ssh.

Gracias por la información. Lo que quiero saber es si hay alguna funcionalidad similar que pueda usar en la Mac. Por ejemplo, ¿puedo usar la función de uso compartido de escritorio de linux1 mientras estoy trabajando/iniciando sesión en mi mac?
Sí, puede ejecutar un servidor VNC en Linux y conectarlo desde Mac con un cliente VNC (hay algunos clientes VNC gratuitos en Mac y servidores VNC gratuitos en Linux).
Hmm... VNC no funciona: estoy trabajando en mi Mac en la aplicación A (por ejemplo, Word) y quiero ver el resultado de Excel (que se ejecuta en Mac) en la PC con Linux a mi lado.
Como explicó Sylvain, esto no es posible en la Mac. La arquitectura subyacente del sistema operativo no permite este tipo de uso.
Vea mi respuesta, pero con Lion es posible si usa un usuario diferente en la Mac para la sesión de VNC.
@Derick: si entiendo su solicitud correctamente, puede usar fácilmente la aplicación X11.app de Apple para usar aplicaciones remotas de Linux en su Mac. No se instala de forma predeterminada, pero puede instalarlo opcionalmente desde su DVD de OS X.
Gracias Kiezpro. Hasta ahora, @cftarnas ofrece la solución mejor/más precisa.

Como mencionó Sylvian, no puede ejecutar sus aplicaciones de Mac y mostrarlas en Linux. Lo mejor que puedes hacer es VNC. Verás toda la pantalla, no solo una aplicación.

Habilite una contraseña de VNC en Preferencias para compartir pantalla:

Preferencias para compartir pantalla

Luego puede usar cualquier aplicación de cliente VNC en Linux.

No tiene suerte, pero ScreenRecycler lo acercará lo más posible. Se ejecuta sobre VNC pero convence a OS X de que la conexión VNC es en realidad un monitor separado, debería permitirle acercarse a lo que necesita. Lo he usado, es bastante bueno, hay una versión de prueba gratuita y luego es bastante barato. Dejé de usarlo simplemente porque estaba en una red deficiente y había demasiada latencia a menos que estuviera conectando directamente a los dos.

Se vuelve un poco creativo, pero también puede ejecutar una aplicación Java usando VNC que tiene un servidor http o, en mi caso, usa un bucle para buscar un archivo y crear ese archivo usando SSH.

Aquí está mi aplicación Java.