Cómo compartir su escritorio en Linux usando x11vnc

Cómo compartir su escritorio en Linux usando x11vnc

Objetivo

Aprender a compartir su escritorio utilizando el protocolo VNC y la aplicación X11VNC

Requisitos

  • Tener el paquete X11VNC instalado

Convenciones

  • # - requiere que el comando dado se ejecute con privilegios raíz
    directamente como usuario raíz o mediante el uso de sudo dominio
  • ps - El comando dado para ser ejecutado como un usuario regular no privilegiado

Introducción

Si bien SSH es una herramienta vital para cada administrador del sistema, siendo el protocolo más utilizado y seguro para la administración remota, incluso capaz de otorgar acceso al servidor de pantalla X11, a través del reenvío X11, no es la herramienta adecuada para usar cuando el objetivo deseado es compartir una sesión de escritorio completa. En ese caso el VNC El protocolo es nuestro amigo. Al usarlo, podemos controlar completamente otra máquina, compartiendo incluso eventos de teclado o mouse.

Aunque muchos
Las implementaciones del protocolo existen en GNU/Linux, y algunas de ellas están integradas con entornos de escritorio específicos, como dojo/vinagre En Gnome, en este tutorial nos centraremos en el uso y la configuración del escritorio independiente x11vnc solicitud.

Instalación

El x11vnc La aplicación ya debe estar empaquetada y disponible en sus repositorios de distribución favoritos. Instalarlo en Fedora es solo una cuestión de ejecutar:

$ sudo dnf install x11vnc

En Debian, o una distribución con sede en Debian, el comando para usar es:

$ sudo apt-get install x11vnc

X11VNC también está disponible en los repositorios de Archlinux. Podemos instalarlo usando Pacman:

$ sudo Pacman -S x11vnc

Una vez instalado, el programa se puede lanzar directamente desde el terminal o mediante GUI, utilizando el lanzador de escritorio que debe encontrarse en el menú Aplicaciones.



Configuración de firewall

Para poder compartir nuestra sesión de escritorio utilizando el protocolo VNC, debemos configurar el firewall para que permita conexiones entrantes en el puerto 5900 cuál es el puerto VNC-servidor predeterminado. La acción exacta para realizar depende del software de firewall que estamos utilizando en nuestro sistema. Cuando usas cortafuegos Deberíamos correr:

$ sudo firewall-cmd --add-service = vnc-server

Como puede ver, en realidad no especificamos que el puerto se permitiera directamente: en su lugar, utilizamos el nombre del servicio directamente, ya que está asociado por defecto con el puerto. Recuerda, al usar cortafuegos, Si una zona no se especifica con el --zona opción, las reglas especificadas se aplicarán en la predeterminada.

Cuando usas UFW, El firewall predeterminado en Ubuntu, el comando que se utilizará es:

$ sudo UFW Permitir 5900/TCP

Además, si tenemos la intención de permitir la conexión VNC desde máquinas fuera de nuestra red local, debemos configurar una regla de permitir el mismo puerto en nuestro enrutador y configurar el reenvío de IP en nuestra máquina IP.

Familiarizarse con x11vnc

La forma más fácil de comenzar a usar X11VNC es invocar el programa en el terminal sin ninguna opción. El programa debe ser lanzado sin privilegios de administrador:

$ x11vnc

Por defecto, X11VNC usará la pantalla : 0, Sin embargo, esto se puede cambiar usando el -mostrar opción.

Lo primero que recibiremos después de ejecutar el comando anterior es una advertencia sobre no usar una contraseña para la conexión. Eso es esperado, ya que aún no hemos configurado ninguno. Ejecutar con esta configuración es muy peligrosa, ya que cualquier computadora con acceso a la red a nuestra máquina puede ver y controlar nuestro escritorio. Lo primero que debemos hacer, entonces, es configurar el programa para que requiera autenticación cuando se solicite acceso.



Restringir el acceso con una contraseña

Básicamente, hay tres formas en que podemos configurar la autenticación utilizando x11vnc, corresponden a la -pasada, -storePasswd, y -pase opción. Veamos brevemente cómo modifican el comportamiento del programa.

El primer método está representado por el uso de la -pasada Opción que nos permite proporcionar una contraseña de tiempo de ejecución, un solo disparo directamente en el terminal: no se guardará en ningún lado y se usará para la sesión lanzada.

El segundo método es usar el -storePasswd Opción: acepta dos argumentos opcionales: aprobar y archivo, para especificar respectivamente la contraseña y el archivo en el que debe almacenarse. Sin embargo, si se usa sin argumentos, solicitará la contraseña de manera interactiva, y se almacenará en el ~/.VNC/PASSWD archivo. Finalmente, si la opción se usa con un solo argumento, se interpretará como el archivo para almacenar la contraseña. Tenga en cuenta que el archivo que contiene la contraseña no se encriptará, sino que simplemente se ofuse con una clave fija, por lo tanto, solo se le debe permitir que solo el usuario de confianza acceda a ella.

Una vez que se guarda la contraseña, el programa saldrá. A partir de ese momento, para iniciar una sesión VNC protegida con contraseña, se debe emitir el siguiente comando:

$ x11vnc -rfbauth/ruta/a/passfile

Donde, de forma predeterminada,/ruta/a/passfile corresponderá a ~/.VNC/PASSWD.

La tercera opción que tenemos es usar el -pase bandera. Al usarla, la contraseña para la conexión se establece leyendo la primera línea de un archivo existente, aprobado como el argumento de opción única. El comportamiento de la opción se puede modificar aún más mediante el prefijo del argumento del archivo. Por ejemplo, si el nombre de archivo tiene prefijo con RM:, El archivo en sí se eliminará después de que el programa haya leído su contenido. Al usar el CMD: prefijo, en cambio, la cadena especificada después del prefijo se interpretará como un comando externo, y su salida se utilizará como contraseña. Otros prefijos se pueden usar con esta opción. Para obtener una referencia completa, puede consultar la mano de mano del programa.

Proporcionar una contraseña para las sesiones de solo vista

Es posible usar x11vnc Entonces la conexión creada se ejecutará en modo de solo vista. Esto significa que los clientes conectados solo podrán observar la sesión compartida, pero no podrán interactuar con ella. Para ejecutarse en este modo, el programa debe lanzarse con el -sólo vista opción. Es posible configurar una contraseña SPEFIC para este tipo de acceso, por lo que para obtener una configuración más de grano. Para obtener este resultado, el -ViewPassWD Se debe utilizar la opción, proporcionando la contraseña como argumento de cadena. Esto requiere, sin embargo, también se proporciona una contraseña de acceso completo, utilizando el -pasada Opción que discutimos anteriormente.

Asegure la conexión utilizando un túnel encriptado

Por defecto, una conexión VNC no está encriptada, y esto puede ser un riesgo de seguridad. Podemos usar diferentes enfoques para solucionar esto. El primero sería usar un VPN (Red privada virtual), el segundo para usar un túnel SSL y el tercero para usar ssh.

Al describir cómo configurar una VPN está fuera del alcance de este artículo, en breve veremos cómo implementar las otras dos opciones.

Use un túnel SSL/TLS

Podemos cifrar la conexión VNC utilizando un túnel SSL. Para poder lograr esto, debemos usar el -ssl o -atún opción. El primero requiere que X11vnc se compilará con libssl apoyo. Esta opción acepta un argumento que es el certificado en pem formato para ser utilizado. Si no se proporciona este argumento y el openssl La utilidad está instalada en nuestro sistema, se generará y guardará un nuevo certificado en ~/.vnc/certs/servidor.pem.

El -ssltunnel La opción, en cambio, se basa en el uso de un programa externo, atún Para proporcionar una conexión SSL. Como -ssl, también acepta un certificado PEM como argumento. Si no se proporciona, se generará uno nuevo y se guardará como se mencionó anteriormente (sin embargo, este comportamiento se puede cambiar, por ejemplo, usando la cadena TMP como argumento: en este caso se generará un certificado temporal).

Tenga en cuenta que en ambos casos, el certificado generado automáticamente estará firmado, por lo tanto, aunque proporcione una conexión segura, no representará una protección de un ataque de hombre en el medio. Al generar el certificado, se nos preguntará si queremos proporcionar una contraseña para protegerlo, y si es el caso, se nos pediremos que lo insertemos.

Finalmente, para poder usar un túnel SSL, la aplicación del cliente debe admitir SSL.



Use un túnel SSH

Para usar un túnel SSH, debemos iniciar el servidor VNC usando SSH, con este comando (esto supone que se usa el puerto predeterminado):

$ SSH -T -L 5900: Localhost: 5900 Remote -Machine 'x11vnc -localhost -display: 0'

Probablemente esté familiarizado con SSH, pero analicemos este comando. En primer lugar, corrimos SSH con el -T opción, asignar un pseudo terminal y con el -L Uno, básicamente dijimos a reenviar el puerto 5900 en nuestra máquina local (cliente) al mismo puerto de la máquina remota. Como puede ver, el comando x11vnc se inicia con el -hostil opción. Lo que esto básicamente hace es permitir solo las conexiones de la misma máquina que el servidor se está ejecutando. Esta opción también se usa automáticamente cuando se usa un túnel SSL para evitar pasar por alto. Después de eso, podemos iniciar nuestro vncviewer en el cliente:

$ vncviewer -preferredEncoding = zrle localhost: 0

Observe que establecemos la codificación preferida a Zrle, Esto debería ayudar al rendimiento a través de SSH.

Ejecutar en modo gráfico

Como se dijo antes, x11vnc También se puede usar en modo gráfico, utilizando el lanzador de escritorio. Por defecto, el programa mostrará una ventana en la que podemos seleccionar qué puerto usar, más otras opciones:

Seleccione la ventana del puerto X11VNC

Después de hacer clic en el botón "Aceptar", se mostrará un icono en la bandeja del sistema y una ventana con sus propiedades aparecerá en la pantalla. En el lado izquierdo se mostrarán algunas instrucciones útiles para un inicio rápido. Desde esta interfaz también podemos elegir una contraseña de Session-Spefic y de solo vista:

ventana de propiedades x11vnc

Conclusiones

Si bien VNC ni siquiera se acerca para representar un sustituto de SSH, puede ser la herramienta adecuada para usar algunas tareas específicas. En este tutorial vimos los pasos fundamentales necesarios para configurar y usar el x11vnc servidor. Si bien hay muchas alternativas disponibles, X11VNC es una herramienta muy simple e independiente del escritorio, que se puede usar en cualquier lugar.

Tutoriales de Linux relacionados:

  • Comparta su pantalla de escritorio con VNC en Linux
  • Configuración del acceso al servidor VNC en un Redhat Linux
  • VNC Utilidades de pantalla remota para Linux
  • Cosas para instalar en Ubuntu 20.04
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Linux: Configuración SSH
  • Cómo aprovechar al máximo OpenSsh
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Comandos de Linux: los 20 comandos más importantes que necesitas ..
  • Comandos básicos de Linux