Wikipedia proporciona una definición útil de computación en red virtual (VNC):
Virtual Network Computing (VNC) es un sistema gráfico de uso compartido de escritorio que utiliza el protocolo Remote Frame Buffer (RFB) para controlar de forma remota otra computadora. Transmite la entrada del teclado y el mouse de una computadora a otra, retransmitiendo las actualizaciones de la pantalla gráfica, a través de una red.
Lo que esto significa es que puede tener acceso a una interfaz gráfica de usuario (GUI) en una instancia de AWS EC2. Uso y prefiero la interfaz de línea de comandos (CLI) la mayoría de las veces, pero una GUI es útil para ciertas tareas como la visualización. El reenvío X11 es otra opción para acceder a la GUI de una aplicación, pero puede ser lento.
En esta publicación, configuraremos un servidor VNC en una instancia EC2 y lo usaremos para acceder al Administrador de visualización de GNOME (GDM) en nuestra máquina local. Usaremos TigreVNC, que es una implementación de VNC de alto rendimiento e independiente de la plataforma. TigerVNC proporciona los niveles de rendimiento necesarios para ejecutar aplicaciones de video y 3D, e intenta mantener una apariencia común y reutilizar componentes, cuando sea posible, en las diversas plataformas que admite. TigerVNC también proporciona extensiones para métodos de autenticación avanzados y cifrado TLS.
Prefiero usar Ubuntu como sistema operativo para mis instancias EC2 y configurar un servidor VNC en AWS EC2 es muy fácil.
Hay muchas guías útiles para iniciar una instancia EC2 y conectarse a ella, así que si no lo ha hecho antes, consulte una de ellas. Utilice la última versión de Ubuntu al seleccionar una imagen. Deberá abrir el puerto 5901 porque ese es el puerto que usaremos para conectarnos al servidor VNC.
Una vez que inició una instancia EC2 y accedió a SSH, actualice el administrador de paquetes e instale los siguientes paquetes (toma alrededor de 6 a 7 minutos) y reinicie la instancia. estoy usando un t2.medium
instancia. (Puede eliminar Firefox de la línea de instalación, si no lo va a usar).
sudo apt update
time sudo apt install -y tigervnc-standalone-server tigervnc-xorg-extension tigervnc-viewer firefox ubuntu-gnome-desktop
# real 6m47.380s
# user 0m0.113s
# sys 0m0.243s
sudo shutdown -r now
Vuelva a iniciar sesión en la instancia después de que haya terminado de reiniciarse. A continuación, utilizaremos systemctl
para iniciar el Administrador de visualización de GNOME. Asegúrese de que el estado vuelva a estar activo y en ejecución. También he incluido un comando que desactiva la pantalla de bloqueo porque no puedo ingresar mi contraseña en la pantalla de bloqueo (incluso si configuro una contraseña para el ubuntu
usuario usando sudo
).
sudo systemctl start gdm
sudo systemctl status gdm
# disable lock screen
gsettings set org.gnome.desktop.lockdown disable-lock-screen true
Finalmente, configure una contraseña para el servidor VNC (ingrese no para una contraseña de solo lectura), inicie el servidor VNC y cierre la sesión nuevamente.
vncpasswd
# Would you like to enter a view-only password (y/n)? n
# A view-only password is not used
vncserver
logout
En su máquina local, necesitará un “visor VNC”, que puede considerar como un cliente VNC. Puedes usar Visor VNC o instale TigerVNC en su máquina local y use vncviewer
.
Una vez que haya terminado de configurarlo, iniciaremos un túnel SSH desde la instancia EC2 hasta su máquina local.
Los parámetros utilizados con ssh
para iniciar el túnel son:
-N
– No ejecute un comando remoto. Esto es útil solo para reenviar puertos-Y
– Habilita el reenvío X11 de confianza-f
– Solicita a SSH que vaya al fondo justo antes de la ejecución del comando-L
– Especifica que las conexiones al puerto TCP dado o al socket Unix en el host local (cliente) se reenviarán al host y puerto dados
Reemplazar amazon.pem
con su clave SSH real y ipaddr
debe ser la dirección IP de su instancia EC2.
ssh -N -Y -f -i amazon.pem -L 5901:localhost:5901 [email protected]
Estoy usando TigerVNC en mi máquina local y puedo conectarme al servidor VNC usando vncserver
. Se le pedirá una contraseña después de ingresar el comando; ingrese la contraseña que configuró usando vncpasswd
.
vncviewer localhost:5901
¡Eso es todo!