Cómo instalar y configurar el servidor VNC en CentOS 7


En esta guía, explicaremos cómo instalar y configurar VNC Remote Access en la última versión de CentOS 7 y RHEL 7 Desktop Edition a través del programa tigervnc-server.

VNC (Virtual Network Computing) es un protocolo servidor-cliente que permite que las cuentas de usuario se conecten de forma remota y controlen un sistema distante utilizando los recursos proporcionados por la interfaz gráfica de usuario.

A diferencia de otros servidores VNC disponibles que se conectan directamente al escritorio en tiempo de ejecución, como VNC X o Vino, tigervnc-vncserver utiliza un mecanismo diferente que configura un escritorio virtual independiente para cada usuario.

  1. Procedimiento de instalación de CentOS 7
  2. Procedimiento de instalación de RHEL 7

Paso 1: Instale y configure VNC en CentOS 7

1. Tigervnc-server es un programa que ejecuta un servidor Xvnc e inicia sesiones paralelas de Gnome u otro entorno de escritorio en el escritorio VNC.

El mismo usuario puede acceder a una sesión de usuario de VNC iniciada desde varios clientes de VNC. Para instalar el servidor TigerVNC en CentOS 7, abra una sesión de Terminal y emita el siguiente comando con privilegios de root.

$ sudo yum install tigervnc-server

2. Una vez que haya instalado el programa, inicie sesión con el usuario que desea ejecutar el programa VNC y emita el siguiente comando en la terminal para configurar una contraseña para el servidor VNC.

Tenga en cuenta que la contraseña debe tener al menos seis caracteres.

$ su - your_user  # If you want to configure VNC server to run under this user directly from CLI without switching users from GUI
$ vncpasswd

3. A continuación, agregue un archivo de configuración de servicio VNC para su usuario a través de un archivo de configuración de demonio ubicado en el árbol de directorios de systemd. Para copiar el archivo de plantilla VNC, debe ejecutar el siguiente comando con privilegios de root.

Si su usuario no tiene privilegios de sudo, cambie directamente a la cuenta de root o ejecute el comando desde una cuenta con privilegios de root.

# cp /lib/systemd/system/[email protected]  /etc/systemd/system/[email protected]:1.service

4. En el siguiente paso, edite el archivo de configuración de la plantilla VNC copiado del directorio/etc/systemd/system/y reemplace los valores de para reflejar su usuario como se muestra en el siguiente ejemplo.

El valor de 1 después del signo @ representa el número de pantalla (puerto 5900 + pantalla). Además, para cada servidor VNC iniciado, el puerto 5900 se incrementará en 1.

# vi /etc/systemd/system/[email protected]\:1.service

Agregue las siguientes líneas al archivo de archivo [protegido por correo electrónico]: 1.servicio.

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l my_user -c "/usr/bin/vncserver %i -geometry 1280x1024"
PIDFile=/home/my_user/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

5. Una vez que haya realizado los cambios adecuados en el archivo de servicio VNC, vuelva a cargar el programa de inicialización del sistema systemd para recoger el nuevo archivo de configuración vnc e iniciar el servidor TigerVNC.

Además, verifique el estado del servicio VNC y habilite el demonio VNC en todo el sistema emitiendo los siguientes comandos.

# systemctl daemon-reload
# systemctl start [email protected]:1
# systemctl status [email protected]:1
# systemctl enable [email protected]:1

6. Para enumerar los puertos abiertos en estado de escucha propiedad del servidor VNC, ejecute el comando ss, que se usa en CentOS 7 para mostrar los enchufes de red. Debido a que solo ha iniciado una instancia del servidor VNC, el primer puerto abierto es 5901/TCP.

Nuevamente, el comando ss debe ejecutarse con privilegios de root. En caso de que inicie otras instancias de VNC en paralelo para diferentes usuarios, el valor del puerto será 5902 para el segundo, 5903 para el tercero y así sucesivamente. Los puertos 6000+ se utilizan para permitir que las aplicaciones X se conecten al servidor VNC.

# ss -tulpn| grep vnc

7. Para permitir que los clientes VNC externos se conecten al servidor VNC en CentOS, debe asegurarse de que los puertos abiertos VNC adecuados puedan pasar a través de su firewall.

En caso de que solo se inicie una instancia del servidor VNC, solo necesita abrir el primer puerto VNC asignado: 5901/TCP emitiendo los siguientes comandos para aplicar la configuración del firewall en tiempo de ejecución.

# firewall-cmd --add-port=5901/tcp
# firewall-cmd --add-port=5901/tcp --permanent

Paso 2: Conexión a CentOS Desktop a través de VNC Client

8. Al ser un protocolo independiente de la plataforma, las conexiones VNC de interfaz gráfica de usuario remota se pueden realizar desde casi cualquier sistema operativo con una GUI y un cliente VNC especializado.

Un cliente VNC popular utilizado en sistemas operativos basados en Microsoft, totalmente compatible con el servidor Linux TigerVNC, es RealVNC VNC Viewer.

Para conectarse de forma remota a CentOS Desktop desde un sistema operativo Microsoft a través del protocolo VNC, abra el programa VNC Viewer, agregue la dirección IP y el número de puerto del servidor CentOS VNC y presione la tecla [enter].

Después de que se haya establecido la conexión VNC, debería mostrarse en su pantalla una advertencia que diga que la conexión no está encriptada, como se ilustra en las capturas de pantalla a continuación.

9. Para omitir la advertencia, presione el botón Continuar, agregue la configuración de la contraseña para el servidor VNC en el punto 2 y debería estar conectado remotamente a CentOS Desktop con el usuario configurado para ejecutar la instancia del servidor VNC.

10. En caso de que aparezca un nuevo mensaje de Autenticación en su pantalla y su usuario no tenga privilegios de root, simplemente presione el botón Cancelar para continuar con CentOS Desktop, como se muestra en la siguiente captura de pantalla.

Tenga en cuenta que la comunicación VNC establecida entre el servidor y el cliente y cualquier dato intercambiado (excepto la contraseña) se ejecuta a través de un canal no cifrado. Para cifrar y asegurar la transferencia de datos VPN, primero debe configurar un túnel SSH seguro y ejecutar cualquier tráfico VPN posterior a través del túnel SSH.

11. Para conectarse de forma remota a CentOS Desktop a través del protocolo VNC desde otro CentOS Desktop, primero asegúrese de que el paquete vinagre esté instalado en su sistema emitiendo el siguiente comando.

$ sudo yum install vinagre

12. Para abrir la utilidad vinagre, vaya a Aplicaciones -> Utilidades -> Visor de escritorio remoto como se muestra en la siguiente captura de pantalla.

13. Para conectarse de forma remota a un escritorio CentOS, presione el botón Conectar, seleccione el protocolo VNC de la lista y agregue la dirección IP y el puerto (5900 + número de pantalla) del servidor VNC remoto. Además, proporcione la configuración de la contraseña para el usuario de VNC como se ilustra en las siguientes capturas de pantalla.

14. Otro cliente VNC popular para plataformas basadas en Linux es Remmina, es un cliente de escritorio remoto que se usa especialmente en distribuciones basadas en Debian que ejecutan el entorno de escritorio GNOME.

Para instalar el cliente Remmina Remote Desktop en distribuciones basadas en Debian, emita el siguiente comando.

$ sudo apt-get install remmina

Paso 3: configurar varias sesiones VNC en CentOS 7

15. En caso de que necesite ejecutar una nueva sesión VNC paralela con el mismo usuario, abra una consola Terminal, inicie sesión con el usuario que desea iniciar la nueva sesión VNC y ejecute el siguiente comando.

Cuando inicie el servidor por primera vez, se le pedirá que proporcione una nueva contraseña para esta sesión. Sin embargo, tenga en cuenta que esta sesión se ejecuta con sus permisos de usuario que inició sesión e independientemente de la sesión del servidor VNC de systemd iniciada.

$ vncserver

16. Las nuevas sesiones de VNC abrirán los próximos puertos basados en VNC disponibles (pantalla 5900 + 3 en este ejemplo). Para mostrar los puertos abiertos, ejecute el comando ss sin privilegios de root como se ilustra en el siguiente extracto. Enumerará solo las sesiones VNC iniciadas adeudadas por su usuario.

$ ss -tlpn| grep Xvnc

17. Ahora, conéctese de forma remota a CentOS Desktop usando esta nueva sesión de VNC, proporcione la combinación de IP: puerto (192.168.1.23:5903) en el cliente VNC como se ilustra en la siguiente imagen.

Para detener las instancias del servidor VNC iniciadas con estos permisos de usuario registrados, emita el siguiente comando sin privilegios de root. Este comando destruirá todas las instancias de VNC iniciadas que solo pertenecen al usuario que las declaró.

$ su - your_user
$ killall Xvnc

¡Eso es todo! Ahora puede acceder a su sistema CentOS 7 y realizar tareas administrativas utilizando la interfaz gráfica de usuario proporcionada por el sistema operativo.