07.06.2023

Instalación y configuración de un servidor VNC en CentOS 7

En esta guía, veremos cómo instalar y configurar un servidor VNC en el CentOS Sistema operativo 7.x para permitir conexiones remotas desde cualquier VNC clicomo TightVNC, RealVNC y otros. En particular, haremos esto usando el software TigerVNC Server, una herramienta gratuita que permite usar un escritorio virtual independiente.

Introducción

VNC (Computación de red virtual) es un cliprotocolo ent-server que permite un clicomputadora ent (ejecutando un VNC client) para conectar y controlar una computadora remota (que se ejecuta en un servidor VNC). El software fue desarrollado por Olivetti & Oracle laboratorio de investigación en Cambridge, Reino Unido, y su código fuente aún está actualizado y disponible bajo la Licencia Pública General (GNU).

Dependiendo del software del servidor, el VNC client se conectará al escritorio activo (por ejemplo, como TeamViewer o AnyDesk programs) o un escritorio virtual independiente (como el Windows RDP protocolo de escritorio remoto). Este último, quizás más potente y seguro, sobre todo si necesitas gestionar el equipo servidor porque cada sesión será un entorno único, configurado con los permisos y derechos del usuario conectado. Por eso elegimos TigerVNC, que ejecuta sesiones paralelas del entorno de escritorio de la computadora (GNOME, KDE u otra GUI): esto significa que se creará un escritorio virtual para cada conexión; esto es exactamente lo que queremos.

Instalación de TigerVNC

Ahora veamos cómo podemos instalar y configurar TigerVNC en CentOS. Lo primero que debe hacer es instalar el programa TigerVNC Serverram abriendo una sesión de terminal e ingresando el siguiente comando con privilegios de root:

$ sudo yum instalar tigervnc-servidor

Inmediatamente después de eso, debe crear un usuario VNC separado desde el cual se realizará la conexión (con una contraseña dedicada). Para hacer esto, ingrese lo siguiente:

$ sudo adduser vncuser
$ sudo passwd vnuser

Importante: nunca haga esto como usuario root; esto representará una seria amenaza para la seguridad de su sistema. La mejor solución sería dejar al usuario raíz sin acceso a VNC y configurar una cuenta dedicada con derechos limitados.

Después de crear vncuser y establecer una contraseña para iniciar sesión, también debe establecer una contraseña única de VNC para este usuario. El comando para hacer esto es:

$ su - vnuser
$ vnccontraseña

(la primera línea se puede omitir si ya iniciamos sesión como vncuser con anterioridad).

Lo siguiente que debe hacer es crear un archivo de configuración de VNC para vncuser. La forma más rápida de hacerlo es copiar el archivo de plantilla de VNC compartido que se encuentra en el /lib/systemd/sistema/ carpeta, y luego cámbiela:

$ cp /lib/systemd/system/vncserver@.servicio /etc/systemd/system/vncserver@:1.servicio

El número 1 que agregamos al nuevo nombre de archivo es el número de visualización que se usará para esta instancia particular del servicio. Es importante saber esto porque también determinará el puerto TCP que utilizará nuestro servidor VNC, igual a 5900 + número de visualización. El primero será 5901, luego 5902 y así sucesivamente.

Inmediatamente después de copiar, debe editar el nuevo archivo con Vi, Nano u otro editor de texto y reemplazar [USUARIO] con el nombre del usuario creado recientemente (en nuestro caso, vncuser). Así es como debería verse el archivo después de la actualización (excepto por la larga parte comentada al principio):

[Unidad]
Descripción=Servicio de escritorio remoto (VNC)
After=syslog.objetivo red.objetivo
[Servicio]Tipo=bifurcación
# Limpiar cualquier archivo existente en el entorno /tmp/.X11-unix
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l vncuser -c "/usr/bin/vncserver %i -geometry 1280x720"
PIDFile=/home/vncuser/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Instalar]
WantedBy = multi-user.target

Una vez que haga esto, puede volver a cargar el demonio VNC y ejecutar vncserver @ 1 con los siguientes comandos:

$ systemctl daemon-recargar
$ systemctl iniciar vncserver@:1

Antes de continuar, verifique que el servicio se esté ejecutando ingresando el estado systemctl mando:

$ systemctl estado vncserver@:1

y cree un enlace simbólico para que siempre se ejecute al iniciar el sistema usando el siguiente comando:

$ systemctl habilitar vncserver@:1

Otra prueba que puede realizar antes de intentar conectarse al servidor es mirar los sockets de red activos usando elsscomando: si todo funciona correctamente, debería ver que el servidor VNC está funcionando y usa el puerto TCP 5901. Ejecute el comando:

$ss -tulpn| vnc grep

El resultado debería ser el siguiente:

tcp LISTEN 0 5 *:5901 *:* usuarios:(("Xvnc",pid=38344,fd=9))
tcp LISTEN 0 128 *:6001 *:* usuarios:(("Xvnc",pid=38344,fd=6))
tcp ESCUCHAR 0 5 :::5901 :::* usuarios:(("Xvnc",pid=38344,fd=10))
tcp ESCUCHAR 0 128 :::6001 :::* usuarios:(("Xvnc",pid=38344,fd=5))

Si ve esto, entonces todo está configurado correctamente.

Firewall Configure

Dado que nuestro servicio VNC está escuchando en el puerto TCP 5901, debe asegurarse de que dicho puerto esté abierto y accesible para el exterior. clientes Por lo tanto, si tiene un firewall instalado, debe crear una regla adecuada que permita VNC clientradas para conectar.

La cantidad de puertos para abrir dependerá de la cantidad de instancias de servidor VNC que necesite. En nuestro escenario, hicimos solo 1, por lo que solo necesita abrir el primer puerto VNC dedicado: TCP 5901, como ya dijimos. El comando para abrir este puerto en Firewalld:

# firewall-cmd --añadir-puerto = 5901 / tcp
# firewall-cmd --añadir-puerto = 5901 / tcp --permanente

No estará de más mencionar que también puedes restringir este puerto a ciertos grupos, direcciones IP, tarjetas de red, u otros simples o complejos. firewall reglas.

Instalación de la interfaz gráfica de usuario (GUI)

Si ya tiene GNOME, KDE u otros entornos de escritorio instalados, puede omitir este paso. De lo contrario, debe instalar uno de ellos: el servidor TigerVNC iniciará una instancia paralela de este entorno de escritorio para cada sesión de inicio de sesión, lo que significa que debemos tener al menos una GUI.

GNOME

Si desea una interfaz GNOME excelente pero pesada, ingrese lo siguiente:

$ sudo yum groupinstall "Escritorio GNOME"

Xfce

Si necesita un alter ligeronatEs decir, podemos ofrecer Xfce, un entorno gratuito de código abierto para plataformas similares a Unix que funciona muy bien con TigerVNC. GNOME también funciona muy bien, pero consume bastantes recursos: si desea ahorrar recursos en su máquina servidor, Xfce podría ser la mejor opción. Para instalarlo, ingrese lo siguiente:

$ yum instalar epel-release
$ yum grupo instalar xfce

Configuraciones adicionales para Xfce

Si decide utilizar Xfce, también deberá modificar el archivo que se ejecutó cuando se inició la sesión de VNC. Para hacer esto, edite el archivo /hogar/ /.vnc/xstartup y cambie la entrada exec (generalmente la línea 4) de etc/X11/xinit/xinitrc a inicioxfce4, Como se muestra abajo:

#! / Bin / sh
desarmar SESSION_MANAGER
Desactivar DBUS_SESSION_BUS_ADDRESS
ejecutivo startxfce4
vncserver -matar $PANTALLA

VNC cliconexión ent

Ahora que todo está configurado, podemos intentar conectarnos a nuestro servicio VNC usando un VNC client, como TightVNC, UltraVNC o RealVNC, y vea qué sucede. Recuerde especificar el puerto TCP 5901 (si siguió nuestra guía).

Posibles problemas

Si client no puede establecer una conexión VNC que funcione, debe verificar lo siguiente:

1. Problemas de conexión - Firewall configuración: si ve errores emergentes que indican que client no puede conectarse al host remoto, debe verificar su red y firewall configuración para asegurarse de que no haya problemas de bloqueo que puedan impedir la cliimpida conectarse al puerto del servidor TCP 5901.

2. Pantalla negra con el mouse: actualizar YUM o reinstalar la GUI: si ve una pantalla negra con un cursor de mouse que funciona, probablemente significa que su conexión VNC funciona bien, pero hay algo que impide que la GUI se inicie correctamente en el escritorio. Para corrección: