Acceso GUI remoto a un ordenador Linux usando Tightvnc con systemd
On enero 13, 2022 by adminEsta es una guía para instalar TightVNC en la Raspberry Pi. La última versión de Raspbian ahora incluye el RealVNC que es una herramienta alternativa de escritorio remoto. Si prefiere utilizar RealVNC entonces es fácilmente habilitado a través de la herramienta raspi-config, esta guía será útil para aquellos que quieren entender sobre la creación de otras aplicaciones para ejecutar en el arranque a través de systemd.
La línea de comandos es una gran manera de gestionar un ordenador Linux remoto si no te importa escribir los comandos, pero a veces necesitas ser capaz de ver una GUI. A falta de un cable muy largo, una de las mejores maneras de hacerlo es utilizando el protocolo VNC (Virtual Network Computing).
TightVNC vs Real VNC
El servidor TightVNC crea una ventana virtual diferente que se replica en una máquina diferente utilizando el cliente TightVNC. Esto difiere de RealVNC que normalmente se hace eco de la pantalla por defecto.
Cuando la mayoría de la gente piensa en una herramienta de escritorio remoto entonces suelen pensar en la forma en que RealVNC opera. En este caso, cuando se mueve el ratón o se lanza una aplicación, se muestra la misma salida en una pantalla conectada físicamente (normalmente HDMI) y en un cliente remoto a través de la red.
TightVNC es útil si se quiere ejecutar algo diferente a lo que está en la pantalla principal. Por ejemplo, usted podría utilizarlo para que usted pueda tener una pantalla de estado en la pantalla principal (a través de HDMI) con una pantalla diferente utilizada para la configuración que se muestra en un ordenador portátil.
Otra ventaja de TightVNC es que es un software libre de código abierto. Como tal no tiene restricciones de uso y se puede ver y modificar el código fuente. Real VNC es una versión comercial de VNC y necesita una licencia. Real VNC es gratuito para uso personal en la Raspberry Pi, pero tiene restricciones si quieres hacer otras cosas con él que pueden requerir una licencia comercial. Esto incluye la ejecución de la imagen de escritorio Raspbian en un PC, ya que no incluye el software comercial.
Instalación de un script de inicio utilizando Systemd
Las siguientes son instrucciones sobre cómo configurar esto en la Raspberry Pi (distribución basada en Debian). Debería ser similar para cualquier otra distribución basada en Debian (por ejemplo, Ubuntu) que utilice archivos de inicio Systemd. Algunas otras distribuciones utilizan diferentes herramientas de instalación de software y posiblemente diferentes herramientas de configuración init.
Si esto se utiliza en combinación con la guía para ejecutar la Raspberry Pi sin cabeza con Debian Linux, entonces se puede utilizar para configurar una Raspberry Pi para el acceso remoto sin necesidad de conectarla a un monitor.
Elegir TightVNC
Hay varios proyectos de software que soportan VNC. He optado por utilizar TightVNC porque es un software gratuito de código abierto (GPL2), proporciona compresión para permitir que funcione en una red lenta (Internet) y está fácilmente disponible en los repositorios de software.
Modelo cliente-servidor
VNC sigue el modelo tradicional de cliente-servidor. El software del servidor se ejecuta en el host al que se quiere acceder, y el software del cliente se ejecuta en la máquina local que desea controlar el host. El servidor y el cliente no tienen por qué ser el mismo (por ejemplo, el cliente puede ser RealVNC cuando el servidor es TightVNC), pero algunas características sólo pueden funcionar cuando se utilizan el mismo cliente y el mismo servidor.
Instale el software del servidor TightVNC
Primero actualice la información del repositorio de software utilizandosudo apt update
Esto es especialmente importante si acaba de instalar el sistema operativo, ya que la información del repositorio puede estar incompleta.
Instale el software del servidor desde los repositorios:sudo apt install tightvncserver
Inicie el servidor y configure una contraseña
La primera vez que ejecute el servidor le pedirá que configure una contraseña. Esta es la contraseña que se utiliza cuando se conecta de forma remota.
/usr/bin/tightvncserver
No es necesario crear una contraseña de sólo vista, a menos que tenga una necesidad específica.
Cuando el servidor se inicia le dirá qué escritorio virtual se ha configurado. En este caso:New 'X' desktop is raspberrypi:1
dice que es el escritorio virtual 1. Te conectarías a este usando :1 al final de la dirección IP en el cliente, este es el que configuraremos para que se inicie automáticamente más tarde.
Puedes ejecutar múltiples instancias. Cada vez que inicies tightvncserver utilizará el siguiente escritorio disponible, pero en la mayoría de los casos sólo necesitarás uno.
Añadir Tightvnc al inicio de systemd
Para que Tightvnc se inicie automáticamente necesitamos crear un nuevo archivo de inicio, que debe almacenarse en el directorio /etc/systemd/system/ y terminar con el sufijo «.service». Lo he llamado tightvncserver.service. Esto necesita ser creado como el usuario root así que usando sudosudo nano /etc/systemd/system/tightvncserver.service
-
-
Description=TightVNC remote desktop server
-
After=sshd.service
-
-
-
Type=dbus
-
ExecStart=/usr/bin/tightvncserver :1
-
User=pi
-
Type=forking
-
-
-
WantedBy=multi-user.target
.
Es posible que tenga que cambiar el nombre de usuario en la línea 8. Actualmente está configurado como pi, que es el nombre de usuario por defecto en la imagen Raspbian de Raspberry Pi. Poner esto a cualquier nombre de usuario que desea iniciar sesión en TightVNC como. No ponga root como usuario.
Cambie el archivo para que sea propiedad de rootsudo chown root:root /etc/systemd/system/tightvncserver.service
Haga que el archivo sea ejecutable ejecutandosudo chmod 755 /etc/systemd/system/tightvncserver.service
Es una buena idea probar el script en este punto en lugar de esperar hasta después de un reinicio. Esto se hace usando:sudo systemctl start tightvncserver.service
No se preocupe si obtiene el siguiente mensaje de error, que es porque ya ha iniciado tightvncA VNC server is already running as :1
Habilite el inicio en el arranque usandosudo systemctl enable tightvncserver.service
TightVNC se iniciará ahora en el arranque. Le recomiendo que reinicie en este punto para asegurarse de que funciona, pero puede detener e iniciar el servicio utilizando el comando systemctl.
Tenga en cuenta que esto está diseñado para ejecutar sólo una instancia de TightVNC en el equipo. Si desea ser capaz de iniciar y detener instancias específicas de TightVNC entonces usted tendrá que ajustar el script de inicio adecuadamente.
Instalación del visor Tightvnc (cliente VNC) en un ordenador Linux
En un ordenador Linux puede instalar el visor consudo apt install xtightvncviewer
o si no está en los repositorios pruebe:sudo apt-get install ssvnc
Esto funcionará sólo con distribuciones basadas en Debian / Ubuntu, para otras distribuciones utilice el gestor de paquetes normal.
Tenga en cuenta que ssvnc – que es la versión que instalé en mi ordenador Kubuntu se basa en tightvnc, pero también tiene la capacidad de configurar el túnel ssh (ver más adelante) a través de la GUI.
Iniciar sesión usandoxtightvncviewer 192.168.1.6:1
(reemplazar con su propia dirección IP según corresponda)
Instalar la vista de Tightvnc en un ordenador con Windows
Para acceder desde Windows o usando el cliente Java descargar desde TightVNC.com
Asegurar TightVNC
TightVNC permite a cualquiera que conozca la contraseña iniciar sesión como el usuario bajo el que se está ejecutando. Además, lo hace sin encriptación, por lo que cualquiera puede husmear en la sesión. Afortunadamente hay una solución segura, que es hacer un túnel de conexión sobre un login ssh (secure shell).
El primer paso es restringir Tightvnc sólo al ordenador local. Esto se hace añadiendo la opción -localhost al iniciar el tightvncserver. Para ello, edite la línea 7 en el archivo /etc/systemd/system/tightvncserver.service para que diga:>
ExecStart=/usr/bin/tightvncserver -localhost :1
Después reinicie el servidor.
Para iniciar la sesión mediante ssh – primero inicie la sesión en el ordenador anfitrión mediante sshssh [email protected] -L 5901:localhost:5901
La opción -L crea el túnel, desde el puerto 5901 del ordenador actual (por defecto) al puerto 5901 del ordenador anfitrión (como localhost). El puerto 5901 es el puerto por defecto para la pantalla 1, 5902 para la pantalla 2, etc.
Para conectarse usando tightvnc ahora utilice el comandoxtightvncviewer 127.0.0.1:1
Tenga en cuenta que su terminal anterior ahora se registrará en la Raspberry Pi por lo que tendrá que iniciar una nueva terminal o pestaña para ejecutar el visor.
Si utiliza Windows entonces el túnel ssh puede ser creado desde dentro de PuTTY
Entonces conéctese utilizando el cliente vnc usando 127.0.0.1:1.
Ahora puede utilizar la GUI para ejecutar aplicaciones en la Raspberry Pi sin necesidad de un monitor o teclado. Si tienes configurado el reenvío de puertos en tu router puedes hacer esto a través de Internet.
Iniciando tu gestor de ventanas
Las instrucciones anteriores son suficientes para la Raspberry Pi que ejecuta Raspbian (Debian). En otros sistemas es posible que tenga que hacer un cambio de configuración adicional para iniciar su gestor de ventanas / lanzador de aplicaciones normal. Si obtiene una pantalla en blanco al conectarse, edite el archivo ~/.vnc/xstartup y sustituya la línea /etc/X11/Xsession por una de las siguientes según corresponda.
exec ck-launch-session startlxde#for an lxde sessionexec ck-launch-session gnome-session#for a gnome-sessionexec ck-launch-session openbox-session#for an openbox desktopexec ck-launch-session startxfce4#for an xfce desktopexec ck-launch-session icewm#for an icewm desktopexec ck-launch-session startkde#for a kde desktop
Por ejemplo, con Ubuntu utilizaría la entrada para gnome, para xubuntu utilizaría xfce y para kubuntu utilizaría kde. La Raspberry Pi utiliza lxde, pero esto se inicia automáticamente en la Raspberry Pi no hay necesidad de añadirlo al archivo xstartup.
Deja una respuesta