- Introducción
- Objetivos
- Requisitos previos
- Paso 1 – Creación de dos cuentas de usuario
- Paso 2 – Instalar el escritorio GNOME
- Solución de problemas – Servidor atascado en la fase de arranque
- Paso 3 – Instalar TigerVNC Server
- Paso 4 – Configurar el servicio VNC para dos clientes
- Paso 5 – Configurar su Firewall
- Paso 6 – Configurar las contraseñas de VNC
- Paso 7 – Conexión a escritorios remotos con un cliente VNC
- Solución de problemas – El servicio VNC se bloquea
- Solución de problemas generales
- Paso 8 – Asegurar las sesiones VNC a través de túneles SSH
- Conclusión
Introducción
VNC o Virtual Network Computing es un protocolo independiente de la plataforma que permite a los usuarios conectarse a un sistema informático remoto y utilizar sus recursos desde una interfaz gráfica de usuario (GUI).
Es como controlar remotamente una aplicación: las pulsaciones del ordenador cliente o los clics del ratón se transmiten a través de la red al ordenador remoto. VNC también permite compartir el portapapeles entre ambos ordenadores. Si viene de un entorno de servidor de Microsoft Windows, VNC es muy parecido al Servicio de Escritorio Remoto, excepto que también está disponible para OS X, Linux y otros sistemas operativos.
Como todo en el mundo de las redes, VNC se basa en el modelo cliente-servidor: El servidor VNC se ejecuta en un ordenador remoto – su Droplet – que atiende las peticiones entrantes de los clientes.
Objetivos
En este tutorial aprenderemos a instalar y configurar un servidor VNC en CentOS 7. Instalaremos el servidor TigerVNC que está disponible gratuitamente en el repositorio GitHub de TigerVNC.
Para demostrar cómo funciona VNC, también instalaremos el escritorio GNOME en su servidor CentOS. Crearemos dos cuentas de usuario y configuraremos el acceso a VNC para ellas. Luego probaremos su conectividad al escritorio remoto y, finalmente, aprenderemos a asegurar la conexión remota a través de un túnel SSH.
Requisitos previos
Los comandos, paquetes y archivos mostrados en este tutorial fueron probados en una instalación mínima de CentOS 7. Recomendamos lo siguiente:
- Distro: CentOS 7, 64 bits
- Requisitos de recursos: Un Droplet con 2 GB de RAM
- Para seguir este tutorial, debes utilizar un usuario sudo. Para entender cómo funcionan los privilegios sudo, puedes consultar este tutorial de DigitalOcean
Advertencia: No debe ejecutar ningún comando, consulta o configuración de este tutorial en un servidor Linux de producción. Esto podría resultar en problemas de seguridad y el tiempo de inactividad.
Paso 1 – Creación de dos cuentas de usuario
En primer lugar, vamos a crear dos cuentas de usuario. Estas cuentas se conectarán remotamente a nuestro servidor CentOS 7 desde clientes VNC.
- joevnc
- janevnc
Ejecutaremos el siguiente comando para añadir una cuenta de usuario para joevnc:
sudo useradd -c "User Joe Configured for VNC Access" joevnc
Después ejecutaremos el comando passwd para cambiar la contraseña de joevnc:
sudo passwd joevnc
La salida nos pedirá la nueva contraseña. Una vez suministrada, la cuenta estará lista para iniciar sesión:
Changing password for user joevnc.New password:Retype new password:passwd: all authentication tokens updated successfully.
A continuación, crearemos una cuenta para janevnc:
sudo useradd -c "User Jane Configured for VNC Access" janevnc
Establezcamos la contraseña para janevnc:
sudo passwd janevnc
Paso 2 – Instalar el escritorio GNOME
Ahora instalaremos el escritorio GNOME. GNOME es un esfuerzo colaborativo: es una colección de software libre y de código abierto que conforma un entorno de escritorio muy popular. Hay otros entornos de escritorio como KDE, pero GNOME es más popular. Nuestros usuarios de VNC utilizarán GNOME para interactuar con el servidor desde su escritorio:
sudo yum groupinstall -y "GNOME Desktop"
Dependiendo de la velocidad de su red, esto puede tardar unos minutos.
Una vez instalado el grupo de paquetes, reinicie el servidor:
sudo reboot
Solución de problemas – Servidor atascado en la fase de arranque
Dependiendo de cómo se haya configurado su servidor, cuando la máquina arranque puede permanecer en la fase de arranque mostrando un mensaje como este:
Initial setup of CentOS Linux 7 (core)1) License information (Licence not accepted)Please make your choice from above :
Para superar esto, pulse 1 (lectura de la licencia), luego 2 (aceptar la licencia), y luego C (para continuar). Es posible que tenga que pulsar C dos o más veces. La imagen de abajo lo muestra:
Si no ves este error y el proceso de arranque es fluido, mejor: puedes pasar al siguiente paso.
Paso 3 – Instalar TigerVNC Server
TigerVNC es el software que nos permitirá realizar una conexión de escritorio remoto.
Instalar el servidor Tiger VNC:
sudo yum install -y tigervnc-server
Esto debería mostrar una salida como la siguiente:
Loaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile. . .Running transaction Installing : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 1/1 Verifying : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 1/1Installed: tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7Complete!
Ahora tenemos instalado el servidor VNC y el escritorio GNOME. También hemos creado dos cuentas de usuario para conectarse a través de VNC.
Paso 4 – Configurar el servicio VNC para dos clientes
El servidor VNC no se inicia automáticamente cuando se instala por primera vez. Para comprobarlo, ejecute el siguiente comando:
sudo systemctl status vncserver@:.service
La salida será así:
vncserver@:.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled) Active: inactive (dead)
También puede ejecutar este comando:
sudo systemctl is-enabled [email protected]
Esto debería mostrar una salida como esta:
disabled
¿Y por qué está desactivado? Eso es porque cada usuario iniciará una instancia separada del demonio del servicio VNC. En otras palabras, VNC no se ejecuta como un único proceso que atiende a todas las peticiones de los usuarios. Cada usuario que se conecte a través de VNC tendrá que iniciar una nueva instancia del demonio (o el administrador del sistema puede automatizar esto).
CentOS 7 utiliza el demonio systemd para iniciar otros servicios. Cada servicio que se ejecuta de forma nativa bajo systemd tiene un archivo de unidad de servicio que se coloca bajo el directorio /lib/systemd/system
por el instalador yum. Los procesos que se inician automáticamente en el momento del arranque tienen un enlace a este archivo de unidad de servicio colocado en el directorio /etc/systemd/system/
.
En nuestro caso, se creó un archivo de unidad de servicio genérico en el directorio /lib/systemd/system/
, pero no se hizo ningún enlace en /etc/systemd/system/
. Para comprobar esto, ejecuta los siguientes comandos:
sudo ls -l /lib/systemd/system/vnc*
Deberías ver:
-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]
Entonces comprueba bajo /etc/systemd/system/
:
sudo ls -l /etc/systemd/system/*.wants/vnc*
Este no existe:
ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory
Así que el primer paso es iniciar dos nuevas instancias del servidor VNC para nuestros dos usuarios. Para ello, tendremos que hacer dos copias del archivo de unidad de servicio VNC genérico bajo /etc/system/system
. En el fragmento de código siguiente, está haciendo dos copias con dos nombres diferentes:
sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:4.servicesudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:5.service
Entonces, ¿por qué añadimos dos números (junto con los dos puntos) en los nombres de los archivos copiados?
De nuevo, eso vuelve al concepto de servicios VNC individuales. VNC por sí mismo se ejecuta en el puerto 5900. Dado que cada usuario ejecutará su propio servidor VNC, cada usuario tendrá que conectarse a través de un puerto separado. La adición de un número en el nombre del archivo le dice a VNC que ejecute ese servicio como un sub-puerto de 5900
. Así que en nuestro caso, el servicio VNC de joevnc se ejecutará en el puerto 5904 (5900 + 4) y el de janevnc se ejecutará en el 5905 (5900 + 5).
A continuación, edite el archivo de unidad de servicio para cada cliente. Abra el archivo /etc/systemd/system/vncserver@:4.service
con el editor vi:
sudo vi /etc/systemd/system/vncserver@:4.service
Un vistazo a la sección «Quick HowTo» nos dice que ya hemos completado el primer paso. Ahora tenemos que seguir los pasos restantes. Los comentarios también nos dicen que VNC es una conexión no confiable. Hablaremos de esto más adelante.
Por ahora, edita la sección del archivo, sustituyendo las instancias de
<USER>
por joevnc
. Además, añade la cláusula -geometry 1280x1024
al final del parámetro ExecStart
. Esto sólo indica a VNC el tamaño de pantalla en el que debe comenzar. Usted modificará dos líneas en total. Este es el aspecto que debería tener el archivo editado (tenga en cuenta que no se muestra el archivo completo):
# The vncserver service unit file## Quick HowTo:# 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service# 2. Edit <USER> and vncserver parameters appropriately# ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2")# 3. Run `systemctl daemon-reload`# 4. Run `systemctl enable vncserver@:<display>.service`#. . .Description=Remote desktop service (VNC)After=syslog.target network.targetType=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'ExecStart=/sbin/runuser -l joevnc -c "/usr/bin/vncserver %i -geometry 1280x1024" PIDFile=/home/joevnc/.vnc/%H%i.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'WantedBy=multi-user.target
Guarde el archivo y salga de vi.
De forma similar, abre el archivo /etc/systemd/system/vncserver@:5.service
en vi y haz los cambios para el usuario janevnc:
sudo vi /etc/systemd/system/vncserver@:5.service
Aquí está sólo la sección con los cambios marcados:
Type=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'ExecStart=/sbin/runuser -l janevnc -c "/usr/bin/vncserver %i -geometry 1280x1024"PIDFile=/home/janevnc/.vnc/%H%i.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
A continuación, ejecuta los siguientes comandos para recargar el demonio systemd y también para asegurarte de que VNC se inicie para dos usuarios en el arranque.
sudo systemctl daemon-reload
Habilita la primera instancia del servidor:
sudo systemctl enable vncserver@:4.service
Salida:
ln -s '/etc/systemd/system/vncserver@:4.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:4.service'
Habilita la segunda instancia del servidor:
sudo systemctl enable vncserver@:5.service
Salida:
ln -s '/etc/systemd/system/vncserver@:5.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:5.service'
Ahora has configurado dos instancias del servidor VNC.
Paso 5 – Configurar su Firewall
A continuación, tendremos que configurar el firewall para permitir el tráfico de VNC a través de los puertos 5904 y 5905 solamente. CentOS 7 utiliza Dynamic Firewall a través del demonio firewalld; el servicio no necesita reiniciarse para que los cambios surtan efecto.
El servicio firewalld debería iniciarse automáticamente al arrancar el sistema, pero siempre es bueno comprobar:
sudo firewall-cmd --state
Esto debería mostrar:
running
Si el estado es «not running» por alguna razón, ejecute el siguiente comando para asegurarse de que se está ejecutando:
sudo systemctl start firewalld
Ahora añade las reglas para los puertos 5904 y 5905:
sudo firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp
Salida:
success
Recarga el firewall:
sudo firewall-cmd --reload
Salida:
success
Paso 6 – Configurar las contraseñas de VNC
Estamos a un paso de ver VNC en acción. En este paso, los usuarios tendrán que establecer sus contraseñas VNC. No se trata de las contraseñas de Linux de los usuarios, sino de las contraseñas para acceder a las sesiones de VNC.
Abre otra conexión de terminal al servidor CentOS 7, y esta vez entra como joevnc.
ssh joevnc@your_server_ip
Ejecuta el siguiente comando:
vncserver
Como se muestra en la salida de abajo, el servidor pedirá a joevnc que configure una contraseña VNC. Después de escribir la contraseña, el programa también muestra una serie de archivos que se están creando en el directorio principal del usuario:
You will require a password to access your desktops.Password:Verify:xauth: file /home/joevnc/.Xauthority does not existNew 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1Creating default startup script /home/joevnc/.vnc/xstartupStarting applications specified in /home/joevnc/.vnc/xstartupLog file is /home/joevnc/.vnc/localhost.localdomain:1.log
Miremos la línea New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1
. localhost.localdomain era el nombre del servidor en nuestro ejemplo; en su caso podría ser diferente. Fíjate en el número que aparece después del nombre del servidor: (1, separado por dos puntos). No es el número en el archivo de la unidad de servicio de joevnc (que era 4). Eso es porque este es el número de pantalla en el que se ejecutará la sesión de joevnc en este servidor, no el número de puerto del servicio (5904
) en sí.
A continuación, abra una nueva sesión de terminal y entre como janevnc. Aquí también, inicie el servidor VNC y establezca una contraseña para janevnc:
vncserver
Debería ver una salida similar mostrando que la sesión de janevnc se ejecutará en la pantalla 2.
Por último, recargue los servicios desde la sesión de terminal principal:
sudo systemctl daemon-reloadsudo systemctl restart vncserver@:4.servicesudo systemctl restart vncserver@:5.service
Paso 7 – Conexión a escritorios remotos con un cliente VNC
Para este tutorial, supondremos que los usuarios joevnc y janevnc están intentando conectarse al servidor CentOS 7 desde sus ordenadores Windows.
Cada uno necesitará un cliente VNC para Windows para iniciar sesión en el escritorio remoto. Este cliente es como un cliente de terminal como PuTTY, excepto que muestra una salida gráfica. Hay varios clientes VNC disponibles, pero el que usaremos es RealVNC, disponible aquí. VNC Viewer para Mac OS X está disponible para su descarga en la misma página, y la versión para Mac es bastante similar a la de Windows.
Cuando se inicia VNC Viewer, muestra un cuadro de diálogo como este:
En el campo VNC Server, añade la dirección IP de tu servidor CentOS 7. Especifica el número de puerto 5904 después de la IP del servidor, separado por dos puntos (:). Usamos 5904 porque ese es el puerto del servicio VNC para joevnc.
También hemos decidido dejar que VNC Viewer elija el método de encriptación. Esta opción sólo cifrará la contraseña enviada a través de la red. Cualquier comunicación posterior con el servidor estará sin encriptar. (Configuraremos un túnel SSH seguro en el último paso.)
De hecho, un mensaje de advertencia muestra precisamente eso:
Acepta la advertencia por ahora. Se muestra un aviso de contraseña:
Ingresa la contraseña VNC de joevnc que estableciste anteriormente.
Se abre una nueva ventana que muestra el escritorio GNOME de nuestro servidor remoto CentOS:
Acepta el mensaje de bienvenida por defecto.
Ahora joevnc puede iniciar una herramienta gráfica como la calculadora de GNOME:
Puede dejar esta conexión de escritorio abierta.
Ahora janevnc también puede iniciar otra sesión VNC con el servidor CentOS. La dirección IP es la misma, y el puerto es el 5905:
Cuando janevnc se conecta a través de VNC Viewer, se muestra un escritorio vacío con un mensaje de bienvenida, al igual que se mostró para joevnc. En otras palabras, los dos usuarios no están compartiendo las instancias del escritorio. El escritorio de joevnc debería seguir mostrando la calculadora.
Para cerrar la sesión de escritorio remoto, basta con cerrar la ventana. Sin embargo, esto no detiene el servicio VNC del usuario en segundo plano en el servidor. Si el servicio no se detiene o reinicia y la máquina no se reinicia, la misma sesión de escritorio se presentaría en el siguiente inicio de sesión.
Cierre las ventanas del Visor VNC para joevnc y janevnc. Cierre también sus sesiones de terminal. Desde la ventana principal de la terminal, comprueba si los servicios VNC siguen ejecutándose:
sudo systemctl status vncserver@:4.service
La salida muestra que el escritorio remoto sigue ejecutándose:
vncserver@:4.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled) Active: active (running) since Sat 2014-11-01 12:06:49 EST; 58min ago Process: 2014 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS). . .
Comprueba el segundo servicio:
sudo systemctl status vncserver@:5.service
Este también se está ejecutando:
vncserver@:5.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:5.service; enabled) Active: active (running) since Sat 2014-11-01 12:42:56 EST; 22min ago Process: 3748 ExecStart=/sbin/runuser -l janevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS). . .
Si quisieras volver a iniciar sesión en el escritorio de joevnc en este punto, verías la misma aplicación de calculadora abierta.
Esto presenta algunos retos interesantes para los administradores de sistemas. Si usted tiene un número de usuarios que se conectan al servidor a través de VNC, es posible que desee idear alguna manera de detener sus servicios de VNC cuando ya no es necesario. Esto puede ahorrar algunos valiosos recursos del sistema.
Solución de problemas – El servicio VNC se bloquea
Al probar y jugar con VNC, a veces puede encontrar que el servicio se ha bloqueado y es irrecuperable. Cuando intente comprobar el estado:
sudo systemctl status vncserver@:4.service
Puede aparecer este largo mensaje de error:
vncserver@:4.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled) Active: failed (Result: exit-code) since Fri 2014-11-07 00:02:38 EST; 2min 20s ago Process: 2221 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=2) Process: 1257 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Intentar iniciar el servicio no funciona:
sudo systemctl start vncserver@:4.service
Inicio fallido:
Job for vncserver@:4.service failed. See 'systemctl status vncserver@:4.service' and 'journalctl -xn' for details.
Por lo general, la razón es bastante simple. Compruebe /var/log/messages
:
sudo tail /var/log/messages
El error relacionado se verá así:
Nov 7 00:08:36 localhost runuser: Warning: localhost.localdomain:4 is taken because of /tmp/.X11-unix/X4Nov 7 00:08:36 localhost runuser: Remove this file if there is no X server localhost.localdomain:4Nov 7 00:08:36 localhost runuser: A VNC server is already running as :4Nov 7 00:08:36 localhost systemd: vncserver@:4.service: control process exited, code=exited status=2Nov 7 00:08:36 localhost systemd: Failed to start Remote desktop service (VNC).Nov 7 00:08:36 localhost systemd: Unit vncserver@:4.service entered failed state.Nov 7 00:08:36 localhost systemd: Failed to mark scope session-c3.scope as abandoned : Stale file handle
El remedio es borrar el archivo bajo la carpeta /tmp:
sudo rm -i /tmp/.X11-unix/X4
Salida:
rm: remove socket '/tmp/.X11-unix/X4'? y
Luego inicie el servicio VNC:
sudo systemctl start vncserver@:4.service
Solución de problemas generales
Aunque es relativamente raro, puede encontrar otros errores al trabajar con VNC. Por ejemplo, la pantalla de su escritorio remoto puede quedarse en blanco o colgarse, la sesión puede bloquearse con un mensaje de error críptico, el Visor VNC puede no conectarse correctamente o transmitir comandos a la interfaz gráfica de usuario para lanzar aplicaciones, etc.
Le recomendamos que compruebe el archivo /var/log/messages
para obtener una mejor comprensión. A veces puede ser necesario reiniciar el servidor o, en casos extremos, volver a crear el servicio VNC.
Los recursos del sistema también pueden ser los culpables; es posible que tengas que añadir más memoria RAM a tu Droplet, etc.
Paso 8 – Asegurar las sesiones VNC a través de túneles SSH
Hasta ahora tanto joevnc como janevnc han estado accediendo a sus escritorios remotos a través de canales no cifrados. Como vimos antes, VNC Viewer nos advierte de esto en el momento de la conexión; sólo se cifra la contraseña al comenzar las sesiones. Cualquier tráfico de red y transferencia de datos posterior está abierto para que cualquiera pueda interceptarlo en el medio.
Acerca de los túneles SSH
Aquí es donde las sesiones Secure Shell (SSH) pueden ayudar. Con SSH, VNC puede ejecutarse dentro del contexto de una sesión cifrada SSH. Esto se conoce como tunelización. En efecto, el tráfico de VNC se apoya en el protocolo SSH, con lo que toda su comunicación con el servidor está cifrada. Se llama tunelización porque SSH proporciona una protección envolvente sobre VNC y VNC se ejecuta como si fuera un túnel dentro de SSH. La tunelización SSH puede ser usada para otros protocolos como POP, X, o IMAP también.
El túnel SSH funciona con el reenvío de puertos que es básicamente un medio de traducir el acceso de un puerto particular a un puerto diferente en otra máquina. Con el reenvío de puertos, cuando una aplicación cliente se conecta al puerto A que se ejecuta en la máquina A, se reenvía de forma transparente al puerto B que se ejecuta en la máquina B. La aplicación cliente no es consciente de esta traducción y piensa que se está conectando al puerto original. El reenvío de puertos es una de las características del protocolo SSH.
Para obtener información más detallada sobre el túnel SSH, lea este tutorial.
En este tutorial hemos configurado VNC para que se ejecute en los puertos 5904 (para joevnc) y 5905 (para janevnc).
Con el reenvío de puertos, podemos configurar nuestro cliente VNC local para que se conecte al puerto 5900 en el ordenador cliente local, y éste puede ser asignado al puerto 5905 en el servidor remoto. Este ejemplo es para la conexión de janevnc, pero usted podría seguir fácilmente los mismos pasos para cualquier otro cliente.
Cuando la aplicación cliente VNC se inicia, se puede apuntar al puerto 5900 en localhost, y nuestro reenvío de puertos lo transportará de forma transparente al puerto 5905 en el servidor remoto.
Nota: Tendrás que iniciar una sección SSH cada vez para que la conexión sea segura.
OS X
En tu Mac, abre Terminal.
Introduce la siguiente información de conexión, asegurándote de sustituir your_server_ip
por la dirección IP de tu servidor remoto:
ssh -L 5900:your_server_ip:5905 janevnc@your_server_ip -N
Introduce la contraseña UNIX de janevnc. La conexión parecerá colgada; puede mantenerla en funcionamiento mientras utilice el escritorio remoto.
Ahora pase a las instrucciones del Visor VNC.
Windows
Para asegurar la sesión VNC de janevnc, supondremos que el ordenador local con Windows tiene instalado PuTTY. PuTTY es gratuito y se puede descargar desde aquí.
Si las sesiones VNC y de terminal de janevnc no están ya cerradas, ciérralas ahora.
Inicia PuTTY. En la pantalla de la sesión, asegúrese de especificar la dirección IP del servidor y dar un nombre descriptivo a la conexión, luego haga clic en el botón Guardar para guardar los detalles de la conexión. Observe cómo hemos especificado username@your_server_ip
en el campo Hostname:
A continuación, expanda el elemento de menú SSH en el panel de navegación izquierdo, y seleccione el elemento X11. Esto muestra las propiedades de reenvío X11 para la sesión. Asegúrese de que la casilla de verificación de Habilitar reenvío X11 está marcada. Esto asegura que SSH encripta el tráfico de X Windows que fluye entre el servidor y el cliente:
Por último, seleccione SSH > Túneles. Escriba 5900
en el campo Puerto de origen. En el campo Destino, especifique el nombre o la dirección IP de su servidor, seguido de dos puntos y el número de puerto VNC para el usuario previsto. En nuestro caso, hemos especificado your_server_ip:5905
.
Alternativamente, podría utilizar el puerto 5902. El 2 en este caso sería el número de pantalla para janevnc (recuerde el mensaje mostrado cuando janevnc ejecutó el comando vncserver
).
Haga clic en el botón Añadir y la asignación se añadirá en Puertos reenviados. Aquí es donde estamos añadiendo el reenvío de puertos para la sesión SSH; cuando el usuario se conecta a localhost en el puerto 5900, la conexión será automáticamente tunelada a través de SSH al puerto 5905 del servidor remoto.
Vuelve a los elementos de Sesiones y guarda la sesión para janevnc. Haz clic en el botón Abrir y se abrirá una nueva sesión de terminal para janevnc. Inicie la sesión como janevnc con la contraseña UNIX apropiada:
VNC Viewer
A continuación, inicie de nuevo VNC Viewer. Esta vez, en la dirección del servidor VNC, escriba <^> y deje que el servidor VNC elija el método de cifrado:
Haga clic en el botón Conectar.
Seguirá apareciendo el cuadro de diálogo que le advierte sobre una sesión no cifrada, pero esta vez puede ignorarlo con seguridad. VNC Viewer no conoce el puerto al que está siendo redirigido (este fue establecido en la sesión SSH que acaba de iniciarse) y asume que está tratando de conectarse a la máquina local.
Aceptando esta advertencia se mostrará la familiar solicitud de contraseña. Introduzca la contraseña VNC de janevnc para acceder al escritorio remoto.
¿Entonces cómo sabe que la sesión estaba cifrada? Si lo piensas, habíamos establecido el reenvío de puertos en la sesión SSH. Si no se hubiera establecido una sesión SSH, el reenvío de puertos no habría funcionado. De hecho, si cierras la ventana de terminal y sales de la sesión PuTTY y luego intentas conectarte sólo con VNC Viewer, un intento de conexión a localhost:5900
mostraría el siguiente mensaje de error:
Así que, si la conexión localhost:5900
funciona, puedes estar seguro de que la conexión está encriptada.
Recuerde que querrá establecer la conexión SSH primero cada vez que utilice VNC, para asegurarse de que su conexión está siempre encriptada.
Conclusión
Acceder a su sistema CentOS Linux desde una interfaz gráfica de usuario puede hacer que la administración del sistema sea mucho más sencilla. Puede conectarse desde cualquier sistema operativo cliente y no tiene que depender de los paneles de control de alojamiento basados en la web. VNC tiene una huella mucho más pequeña en comparación con la mayoría de los paneles de control.
Aunque hemos mostrado cómo dos usuarios ordinarios pueden conectarse con sus clientes VNC, eso es difícilmente práctico en entornos de producción serios. En realidad, los usuarios tendrán aplicaciones o navegadores personalizados para acceder al servidor. Ejecutar un número de servicios VNC para cada usuario también crea una carga innecesaria en los recursos del sistema, sin mencionar los riesgos inherentes asociados a ello.
Si decide instalar y ejecutar VNC en su servidor Linux de producción, le recomendamos encarecidamente que lo utilice sólo para fines administrativos.