Compartir aplicaciones gráficas (x11) via red cómo ejecutar aplicaciones remotas en Local
Si nuestro sistema operativo u ordenador, por alguna razón, no nos permite instalar ciertas aplicaciones podemos solventar el problema siempre que tengamos "a mano" otro ordenador con GNU/Linux instalado. Aquí veremos cómo podemos aprovecharnos de ese otro ordenador para complementar el nuestro.
Este proceso es relativamente sencillo, primero vayamos con los ingredientes.
Ingredientes
Necesitaremos, dos ordenadores que funcionen con Linux, el nuestro, que llamaremos cliente y otro, al que llamaremos servidor, porque es el que nos dará el servicio. Prácticamente todo el proceso se puede realizar con nuestro usuario convencional, no es necesario permisos de root salvo para las instalaciones del software necesario o para modificar los archivos de configuración, donde ya hemos indicado que se ha de añadir el sudo para indicar que es necesario tener permisos de root.
Instalación de Aplicaciones
En el servidor instalaremos el paquete: openssh-server - Aplicación que crea el servidor SSH para que se conecten de forma segura ordenadores remotos.
Y en el cliente instalaremos el paquete: openssh-client - para conectarse de manera segura a servidores remotos utilizando el protocolo SSH.
Configuración del servidor
Para la configuración del servidor editamos el archivo de configuración del sshd :
sudo vim /etc/ssh/sshd_config
Donde buscamos esta línea y la dejamos de este modo:
X11Forwarding yes
Una vez editado ese archivo, cerramos y guardamos los cambios.
Variables de entorno
En la consola podemos comprobar cual es el valor de la variable de entorno DISPLAY. Ésta almacena la dirección para los clientes X a los que conectarse, es decir, almacena las direcciones donde se visualizarán las aplicaciones gráficas que se ejecuten el sistema, su valor se comprueba así:
debian@servidor:~$ echo $DISPLAY
:0.0
:0.0 es el contenido normal para esta variable y que usualmente dirige al propio ordenador.
Para cambiar su valor usamos el comando export:
debian@servidor:~$ export DISPLAY=hostname:displaynumber.screennumber
donde los parámetros del comando indican lo siguiente:
hostname: Dirección o nombre del cliente que recibirá las aplicaciones gráficas.
displaynumber y screennumber: Aquí aparecen los números que indican el servidor X en el cual arrancarán las aplicaciones, ya que es posible tener más de un servidor X en funcionamiento a la vez. Por ejemplo, puede aparecer hostname:0.1 ó hostname:1.0 según el caso.
También se puede hacer el cambio con el comando declare:
debian@servidor:~$ declare -x DISPLAY="IPcliente:0.0"
xhost, control de acceso
Una vez modificada la variable DISPLAY, es conveniente darle acceso al cliente a las aplicaciones gráficas de forma remota, esto se hace con la ejecución en la shell de xhost con el cual controlamos los clientes (direcciones IP o usuarios) que tienen acceso a las aplicaciones gráficas del servidor. Este es un comando que debe ejecutarse como usuario normal ya que al iniciar el sistema operativo y su entorno gráfico es el usuario normal quien se asigna el servidor X razón por la cual root no puede invocar aplicaciones gráficas ya que el usuario normal no comparte el servidor gráfico con nadie.
las opciones son:
- ninguna opción: Si ejecutamos xhost sin ningún parámetro, el comando nos devuelve un mensaje indicando si el control de acceso está habilitado actualmente, y una lista con los clientes que si tienen acceso al servidor gráfico. Es decir:
debian@servidor: $ xhost
access control enabled, only authorized clients can connect
INET:cliente.local
SI:localuser:debian
- [+] nombre del usuario o ip del servidor : Este usuario o ip tendrá acceso al servidor X. El signo + del inicio del comando es opcional. Por ejemplo, si queremos que el ordenador con ip: 195.168.1.105, haremos:
debian@servidor: $ xhost + 195.168.1.105
- -nombre : Es el comando contrario al anterior, con este el nombre que se añada al comando será borrado de la lista de los que tienen acceso al servidor X de forma remota. Si ahora queremos quitarle el permiso al ordenador con ip: 195.168.1.105, haremos:
debian@servidor: $ xhost - 195.168.1.105
- + Si se ejecuta xhost + sin ningún otro argumento se está garantizando el acceso de las X a todos, sin que haya ningún control de acceso puesto que desactivamos el control de acceso.
- - Al ejecutar xhost - restringimos el acceso a nuestro servidor gráfico a los que tengan permiso explícito a él. Con esto activamos el control de acceso.
Compartiendo Aplicaciones vía remota
Una vez configurado el servidor podremos acceder a él desde el cliente usando este comando:
debian@servidor:~$ ssh -X usuario@IPdeServidor
Si el servidor al que queremos acceder está operativo y tiene el puerto 22 (ssh) abierto, podremos conectarnos y ejecutar aplicaciones siempre que conozcamos el comando de las aplicaciones que necesitamos, por ejemplo si queremos conectarnos al servidor lo haremos con un usuario válido en él, en este caso el usuario será: debian
Conexión:
laupri@cliente:~$ ssh -X debian@195.168.1.105
Una vez conectados ejecutamos los programas necesarios con su comando, el símbolo & lo adjuntaremos para liberar la consola y poder así seguir usándola:
debian@servidor:~$ xeyes &
[1] 3272
debian@servidor:~$ libreoffice$ &
Todos los cambios que realicemos quedarán guardados en el servidor remoto, por lo que este puede ser un buen método para trabajar de forma remota si la conexión lo permite de forma fluida. Cuando hayamos terminado, cerraremos las aplicaciones abiertas y cuando estén cerradas haremos lo mismo con la conexión, escribiendo en la shell: exit
debian@servidor:~$ exit
logout
[1]+ Hecho xeyes
Connection to 192.168.1.105 closed.
laupri@cliente:/home$