Documentation for a newer release is available. View Latest

TigerVNC

TigerVNC (Tiger Virtual Network Computing) es un sistema de escritorio gráfico compartido que le permite controlar remotamente otros ordenadores.

TigerVNC trabaja sobre la red cliente-servidor: un servidor comparte su salida (vncserver) y un cliente (vncviewer) se conecta al servidor.

De forma diferente a Fedora 15 y Red Hat Enterprise Linux 6, TigerVNC en Fedora usa el demonio de administración del sistema systemd para su configuración. El archivo de configuración /etc/sysconfig/vncserver ha sido reemplazado por /etc/systemd/system/vncserver@.service.

Servidor VNC

vncserver es una utilidad que arranca un escritorio VNC (Computación en Red Virtual). Ejecuta Xvnc con las opciones apropiadas e inicia un administrador de ventanas sobre el escritorio VNC. vncserver permite a los usuarios ejecutar sesiones separadas en paralelo sobre una máquina a la que pueden acceder cualquier número de clientes desde cualquier lugar.

Instalar el Servidor VNC

Para instalar el servidor TigerVNC, envíe el siguiente comando como root:

# dnf install tigervnc-server
Configurar el Servidor VNC
Configurar la primera conexión VNC
  1. Se requiere un archivo de configuración llamado /etc/systemd/system/vncserver@.service. Para crear este archivo copie el archivo /lib/systemd/system/vncserver@.service como root:

    ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service

    No es necesario incluir el número de pantalla en el nombre del archivo porque systemd crea automáticamente la instancia con el nombre apropiado en la memoria a pedido, reemplazando '%i' en el archivo de servicio por el número de pantalla. Para un único usuario no es necesario renombrar el archivo. Para múltiples usuarios, se requiere un archivo de servicio con un nombre exclusivo para cada usuario, por ejemplo, añadiendo el nombre de usuario al nombre del archivo de alguna manera. Vea detalles en Configurar el Servidor VNC para Dos Usuarios.

  2. Edite /etc/systemd/system/vncserver@.service, reemplazando USER con el nombre del usuario actual. Deje las restantes líneas del archivo sin modificar. El argumento -geometry especifica el tamaño del escritorio VNC a crear; de manera predeterminada está fijado a 1024x768.

    ExecStart=/sbin/runuser -l USER -c "/usr/bin/vncserver %i -geometry 1280x1024"
    PIDFile=/home/USER/.vnc/%H%i.pid
  3. Guardar los cambios.

  4. Para hacer que los cambios surtan efecto inmediatamente, envíe el siguiente comando:

    # systemctl daemon-reload
  5. Establezca la contraseña para el usuario o usuarios definidos en el archivo de configuración. Tenga en cuenta que necesita cambiar de root a USER primero.

    # su - USER
    $ vncpasswd
    Password:
    Verify:

    La contraseña almacenada no está encriptada; cualquiera que tenga acceso al archivo password puede encontrar la contraseña en texto plano.

Configuring VNC Server for Two Users

Si desea configurar más de un usuario en la misma máquina, cree diferentes archivos de servicio de tipo plantilla, uno por cada usuario.

  1. Crear dos archivos de servicio, por ejemplo vncserver-USER_1@.service y vncserver-USER_2@.service. En ambos archivos sustituya USER por el nombre de usuario correcto.

  2. Establezca las contraseñas de ambos usuarios:

    $ su - USER_1
    $ vncpasswd
    Password:
    Verify:
    $ su - USER_2
    $ vncpasswd
    Password:
    Verify:
Arrancar el Servidor VNC

Para arrancar o habilitar el servicio, especifique el número de pantalla directamente en el comando. El archivo configurado arriba en Configurar la primera conexión VNC trabaja como plantilla, en el que %i es sustituido por el número de pantalla por systemd. Con un número de pantalla válido ejecute el siguiente comando:

# systemctl start vncserver@:display_number.service

También puede habilitar que el servicio se inicie automáticamente al arranque del sistema. Entonces, cuando usted accede, vncserver es arrancado automáticamente. Como root, envíe un comando como el que sigue:

# systemctl enable vncserver@:display_number.service

En este punto, otros usuarios son capaces de usar un programa visualizador VNC para conectar con el servidor VNC usando el número de pantalla y una contraseña definida. Siempre que haya instalado un escritorio gráfico, se mostrará una instancia de ese escritorio. No será la misma instancia que se muestra actualmente en la maquina destino.

Configuring VNC Server for Two Users and Two Different Displays

Para los dos servidores VNC configurados, vncserver-USER_1@.service y vncserver-USER_2@.service, usted puede habilitar números diferentes de pantallas. Por ejemplo, los siguientes comandos causaran que un servidor VNC para que USER_1 arranque en la pantalla 3 y un servidor VNC para USER_2 arranque en la pantalla 5:

# systemctl start vncserver-USER_1@:3.service
# systemctl start vncserver-USER_2@:5.service
Finalizar una Sesión VNC

De la misma manera que para habilitar el servicio vncserver, usted puede deshabilitar el inicio automático del servicio al arranque del sistema:

# systemctl enable vncserver@:display_number.service

O, cuando su sistema está corriendo, puede parar el servicio enviando el siguiente comando como root:

# systemctl start vncserver@:display_number.service

Visualizador VNC

vncviewer es el programa que muestra las interfaces gráficas de usuario compartidas y controla el servidor.

Para el funcionamiento de vncviewer, hay un menú desplegable que contiene entradas que llevan a cabo diversas acciones como la conmutación para la entrada o salida del modo de pantalla completa o la salida del visualizador. Alternativamente, puede trabajar con vncviewer a través del terminal. Introduzca vncviewer -h en la línea de comando para una lista de parámetros de vncviewer.

Instalar un Visualizador VNC

Para instalar el cliente TigerVNC, vncviewer>, envíe el siguiente comando como root:

# dnf install tigervnc
Conectar al servidor VNC

Una vez que se ha configurado el servidor VNC puede conectarse a él desde cualquier visualizador VNC. Con el objetivo de hacerlo, envíe el comando vncviewer de la siguiente forma:

vncviewer address:port_number

Donde address es una IP o un nombre de host.

Ejemplo 1. Un Cliente Conectando al Servidor VNC

Con la dirección IP 192.168.0.4 y mostrando el número 3 el comando se vería como sigue:

$ vncviewer 192.168.0.4:3
Configuring the Firewall for VNC

Cuando se usa una conexión no encriptada firewalld podría bloquear la conexión. Para permitir que firewalld pase los paquetes VNC usted debe abrir puertos específicos al tráfico TCP. Cuando utiliza la opción -via el tráfico es redirigido sobre SSH que está habilitado de modo predeterminado en firewalld.

El puerto predeterminado del servidor VNC es 5900. Para alcanzar el puerto a través del cual un escritorio remoto será accesible, sume el puerto predeterminado y el número de visualizador asignado del usuario. Por ejemplo, para el segundo puerto: 2 + 5900 = 5902.

Para las pantallas 0 a 3, haga uso del soporte de firewalld para el servicio VNC por medio de la opción service como se describe abajo. Tenga en cuenta que para números de pantalla superiores a 3 los puertos correspondientes tendrán que ser abiertos específicamente como se explica en Abriendo Puertos en firewalld.

Habilitar el Servicio VNC en firewalld
  1. Ejecute el siguiente comando para ver información sobre los ajustes de firewalld:

    $ firewall-cmd --list-all
  2. Para permitir todas las conexiones VNC desde una dirección específica, utilice un comando como sigue:

    # firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.116" service name=vnc-server accept'
    success

    Vea en Red Hat Enterprise Linux 7 Guía de Seguridad más información sobre el uso de comandos de lenguaje enriquecido de cortafuegos.

  3. Para verificar los ajustes de arriba, use un comando como sigue:

    # firewall-cmd --list-all
    public (default, active)
      interfaces: bond0 bond0.192
      sources:
      services: dhcpv6-client ssh
      ports:
      masquerade: no
      forward-ports:
      icmp-blocks:
      rich rules:
    	rule family="ipv4" source address="192.168.122.116" service name="vnc-server" accept

Para abrir un puerto o rango de puertos específicos haga uso dee la opción --add-port a la herramienta de línea de comandos firewall-cmd. Por ejemplo, la pantalla VNC 4 requiere que el puerto 5904 sea abierto para el tráfico TCP.

Abrir Puertos en firewalld
  1. Para abrir un puerto para el tráfico TCP en la zona pública, envíe, como root, un comando como el siguiente:

    # firewall-cmd --zone=public --add-port=5904/tcp
    success
  2. Para ver los puertos que están abiertos actualmente para la zona pública, envíe un comando como sigue:

    # firewall-cmd --zone=public --list-ports
    5904/tcp

Se puede quitar un puerto usando el comando firewall-cmd --zone=zone --remove-port=number/protocol.

Para más información sobre la apertura y el cierre de puertos en firewalld, vea la Guía de Seguridad Red Hat Enterprise Linux 7.

Conectar con el Servidor VNC Usando SSH

VNC es un protocolo de red de texto claro sin seguridad contra posibles ataques en la comunicación. Para hacer la comunicación segura, usted puede encriptar su conexión servidor-cliente usando la opción -via. Esto creará un túnel SSH entre el servidor VNC y el cliente.

El formato del comando para encriptar una conexión VNC servidor-cliente es el siguiente:

$ vncviewer -via user@host:display_number
Ejemplo 2. Usar la Opción -via
  1. Para conectar a un servidor VNC usando SSH, introduzca un comando como el que sigue:

    $ vncviewer -via USER_2@192.168.2.101:3
  2. Cuando se le pida, teclee la contraseña y confirme presionando Enter.

  3. Una ventana con un escritorio remoto aparecerá en su pantalla.

Acceso VNC Restringido

If you prefer only encrypted connections, you can prevent unencrypted connections altogether by using the -localhost option in the systemd.service file, the ExecStart line:

ExecStart=/sbin/runuser -l user -c "/usr/bin/vncserver -localhost %i"

This will stop vncserver from accepting connections from anything but the local host and port-forwarded connections sent using SSH as a result of the -via option.

For more information on using SSH, see OpenSSH.

Recursos Adicionales

For more information about TigerVNC, see the resources listed below.

Documentación Instalada
  • vncserver(1) — The VNC server manual pages.

  • vncviewer(1) — The VNC viewer manual pages.

  • vncpasswd(1) — The VNC password manual pages.