1 votos

Abrir el programa Java desde SSH en la pantalla VNC

Si tengo un sistema Ubuntu 12.04 que tiene instalado LXDE y TightVNCserver y ejecuto una sesión en el puerto :1 (no en túnel a través de SSH) y una conexión SSH activa, entonces ¿cómo puedo utilizar SSH para iniciar un programa que necesita una pantalla activa para utilizar la sesión tightVNC disponible?

Quería utilizar SSH para iniciar un archivo java que normalmente se inicia bien cuando se inicia dentro de la sesión vnc, pero me da un error:

xxx@yyy:~# java zzz
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at sun.awt.HeadlessToolkit.getScreenSize(HeadlessToolkit.java:282)
        at zzz.<clinit>(zzz.java:35)

Para decirlo de otra manera: Quiero iniciar un programa y dejar que use la ventana de la sesión VNC abierta sin usar la sesión del visor del cliente VNC para iniciarlo, ¿se puede hacer esto?

(Creo que cualquier programa que necesite una pantalla reaccionaría así, así que creo que no es tanto una cuestión de java sino de ssh/vnc)

2voto

Tobias Puntos 311

Necesitarás habilitar el reenvío de X11, esto lo reenviará a tu propio servidor X11 (por lo que necesitas un servidor X11 en funcionamiento en el cliente desde el que estás haciendo SSH).

Esto puede hacerse añadiendo -X a su comando SSH. Ejemplo: ssh -X user@server

A continuación, asegúrese de que la variable $DISPLAY está ajustada a la pantalla correcta. Compruebe esto con echo $DISPLAY

Si lo que intentas conseguir es acceder a una ventana abierta en tu servidor X11 a través de SSH, te sugiero que eches un vistazo a esto: http://www.wensley.org.uk/x

Explica cómo conseguir un comportamiento similar al de 'screen', pero con aplicaciones X11.

2voto

muru Puntos 43315

Prueba a poner el DISPLAY al servidor X de la sesión VNC:

DISPLAY=:1 java xxx

0voto

Johannes Gerer Puntos 5662

Hay un par de cosas que puedes hacer aquí supongo, una forma es usar ssh -X comando.

Sin embargo, me gusta el enfoque de la ejecución de un servidor VNC (como tightvnc) en el host que está tratando de conectarse a. Entonces usted puede ssh a ese host y utiliza un visor vnc para la visualización si lo necesitas. En su ssh terminal, conéctate a tu host vnc y reenvía su puerto 5901 (asumiendo que tu servidor tightvnc está escuchando en el puerto 5901) al puerto local 5901.

ssh -L 5901:127.0.0.1:5901 -C user@192.168.186.111

Y, en un terminal diferente conéctate al puerto reenviado para ver X11:

vncviewer localhost:5901

Ahora, cuando ejecutas un comando que te da error es porque tu variable DISPLAY no está establecida. Puedes establecerla escribiendo export DISPLAY=:N en su ssh terminal. Nota: El N suele ser 1, pero para comprobarlo puedes abrir un terminal en tu ventana x11-vnc y escribir echo $DISPLAY , N es el valor que se muestra aquí.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: