Tengo algunas preguntas al intentar ejecutar una aplicación GUI de forma remota desde SSH. Mis conocimientos de Linux son limitados y tengo algunos problemas al intentar lograrlo mediante el siguiente escenario:
Tengo un host con CentOS 8 y GNOME GUI conectado a un televisor, sin mouse ni teclado conectados (ese es el host remoto, lo llamaré SERVIDOR). También tengo el host local con un cliente SSH (el SSH).
Lo que estoy tratando de hacer:
Usando SSH, quiero desbloquear la pantalla de bienvenida que se muestra en el televisor conectado al SERVIDOR, luego quiero iniciar Retroarch (para cargarlo en el televisor conectado al SERVIDOR). ¿Cómo inicio sesión en el SERVIDOR para salir de la pantalla de bienvenida de GNOME? Usando el comando:
loginctl unlock-sessions
solo funciona si enciendo el SERVIDOR, conecto un teclado, inicio sesión y espero hasta que la pantalla se bloquee debido a la inactividad. Además, al iniciar RETROARCH a través de SSH, encontré 2 formas de hacerlo "tipo de trabajo", usando DISPLAY=:0 y nohup, pero ambas bloquean el proceso en la sesión SSH (además del hecho de que bloquea el terminal o el proceso a la sesión SSH, solo funciona si ya inicié sesión en el SERVIDOR y pasé la pantalla de Bienvenida). ¿Hay alguna forma de iniciarlo como si estuviera ejecutando la aplicación directamente desde el SERVIDOR?
Respuesta1
Para interactuar con un administrador de ventanas como Gnome de forma remota, debe considerar ejecutar una sesión VNC porque, hasta donde yo sé, los administradores de ventanas no están diseñados para controlarse a través de SSH + CLI.
Si está ejecutando Gnome sobre X11, entonces debería considerar usar X11-vnc, que le expondrá la sesión actual de X11 de forma remota; es decir, verá la misma imagen a través de VNC que en el televisor conectado al SERVIDOR.
Si está ejecutando Wayland, deberá hacer su propia investigación en Internet sobre cuál es el reemplazo de X11-vnc Wayland.
Para el primer caso estos son los pasos:
Servidor:
apt install x11-vnc -y
x11-vnc
Cliente :
apt install tigervnc-viewer -y
ssh -L 5901:localhost:5901 <SERVER-IP>
vncviewer localhost:5901
Es una buena práctica envolver el protocolo VNC en un túnel ssh, por lo tanto, muchos servidores VNC escuchan de forma predeterminada solo en localhost. El número de puerto de VNC puede cambiar, pero está establecido para comenzar desde 5900.