Uso de NX 3.5 con GNOME Fallback en Ubuntu 12.10

Introducción

Cómo se mencionó en el post anterior, la versión 3.5 de NX no soporta sistemas de escritorio como Unity o GNOME3 ya que no a su vez no soporta los efectos de escritorio compuesto provistos por Compiz.  Por este motivo es necesario utilizar un sistema de escritorio diferente.

En mi caso decidí experimentar con la versión fallback de GNOME3 con buenos resultados.  A continuación se detallan los proceso de instalación y configuración necesarios para utilzar este manejador de ventanas con NX 3.5.

Instalación de GNOME Fallback en el servidor

Para instalar el sistema de escritorio en el servidor es necesario ejecutar los siguientes comandos.

$ sudo apt-get install gnome-session-fallback
$ sudo apt-get install indicator-applet-appmenu

Verificar los tipos de sesiones disponibles en el servidor

Para listar las sesiones disponibles en el servidor se debe ejecutar el siguiente comando.

$ ls /usr/share/gnome-session/sessions/

gnome.session  gnome-classic.session  gnome-fallback.session  ubuntu.session

Las sesiones gnome y ubuntu las incluye por defecto Ubuntu y hacen referencia a Unity.  Las sesiones gnome-* son las instaladas por GNOME Fallback en el paso anterior, la diferencia entre estos dos tipos de sesiones consiste en que gnome-fallback no utiliza los efectos de Compiz por lo que es preferible utilizarlo en este contexto.

Configurar el cliente de NX para establecer conexiones utilizando GNOME Fallback

Desde el cliente de NX elija la sesión que desea modificar y presione el botón de configuración mostrado en la imagen a continuación.

Configuración del cliente NX
Configuración del cliente NX

En la congiruación de la sesión bajo las opciones del escritorio, seleccione Unix (para utilizar el protocolo NX), Custom (para personalizarlo) y presione el botón Settings.

Configurar sesión de NX
Configurar sesión de NX

En la configuración del escritorio, bajo la sección de aplicación seleccione la opción Run the following command y especifique el siguiente comando, siendo gnome-fallback el sistema de escritorio a utilizar.

gnome-session --session=gnome-fallback

Bajo la sección de opciones se recomienda marcar la opción New virtual desktop como se muestra a continuación.

Configuración de escritorio del cliente NX
Configuración de escritorio del cliente NX

Alternativa del lado del servidor

Si se desea evitar que cada cliente deba realizar esta modificación para utilizar el sistema de escritorio de GNOME Fallback, esta modificación puede realizarse del lado del servidor de la siguiente manera.

$ vi /usr/NX/etc/node.conf
COMMAND_START_GNOME='gnome-session --session=gnome-fallback'

O con la siguiente opción si se desea ejecutar al cliente NX en una ventana y tener mayor control sobre su configuración.

COMMAND_START_GNOME="/etc/X11/Xsession 'gnome-session --session=gnome-fallback'"

Enlaces

Instalación de NX 3.5 en Ubuntu 12.10 utilizando SSH y autenticación basada en contraseñas

Introducción

NX es un producto de NoMachine que permite acceder al escritorio de un servidor remoto.  A diferencia de software similar como VNC, NX ofrece por defecto el cifrado del tráfico a través de conexiones SSH y de SSH con túnel para el protocolo X, NX ofrece un mayor desempeño al optimizar la transmisión de datos.

NoMachine provee una versión gratuita para servidores Linux que se encuentra limitada a dos conexiones concurrentes.

En el pasado realicé la instalación de FreeNX, un fork del proyecto NX original el cual parece que ya no recibe actualizaciones.  En esta ocasión se va a realizar la instalación de NX 3.5 encontrándose también que versiones preliminares de la 4 pueden descargarse para experimentación.

Recomendaciones

En caso de actualizarse de una versión mayor es mejor desinstalar por completo los paquetes antiguos antes de instalar los nuevos.  Inclusive remover (o renombrar) el directorio del software.

$ sudo rm -rf /usr/NX

También debe tenerse en cuenta que la versión 3.5 de NX no soporta los entornos de escritorio que incluyan los efectos de escritorio compuesto provistos por Compiz, por este motivo se tendrán serios problemas al intentar acceder a escritorio remotos utilizando Unity o GNOME3.  En este caso se recomienda instalar otros manejadores de escritorio como XFCE o GNOME Fallback.

El transporte de la información se realiza a través de SSH así que el servicio (OpenSSH o similar) debe estar previamente instalado y funcionando.

Instalación en el cliente

Descargar del siguiente enlace el paquete cliente (NX Client Products) de la plataforma y arquitectura que corresponda.

http://www.nomachine.com/download.php

En este caso se realiza la instalación de la versión 3.5.0 para Ubuntu de 32 bits.

$ sudo dpkg -i nxclient_3.5.0-7_i386.deb

Instalación del servidor

Descargar del siguiente enlace los paquetes correspondientes a la plataforma y arquitectura del servidor.  Del lado del servidor es necesario instalar los paquetes de cliente, nodo y servidor.

http://www.nomachine.com/select-package-server.php?id=1&ids=2

En este caso se realiza la instalación de la versión 3.5.0 para Ubuntu Server de 64 bits.

$ sudo dpkg -i nxclient_3.5.0-7_amd64.deb
$ sudo dpkg -i nxnode_3.5.0-9_amd64.deb
$ sudo dpkg -i nxserver_3.5.0-11_amd64.deb

En algunas ocasiones la instalación del paquete servidor falla siendo requerido ejecutar la siguiente instrucción antes de volver a correr el comando de instalación mencionado anteriomente.

$ sudo /usr/NX/scripts/setup/nxserver --install

Autorizar a un usuario para realizar conexiones

Para autorizar a un usuario del sistema a realizar conexiones a su escritorio remoto se debe ejecutar el siguiente comando.

$ sudo /usr/NX/bin/nxserver --useradd USERNAME

Para mas información acerca de la gestión de los usuarios consultar la sección #5 (NX Users Administration on the Server Host) del NX Server Administrator’s Guide.

Realizar la conexión desde el cliente

Desde el equipo cliente ejecute la aplicación nxclient.

$ /usr/NX/bin/nxclient

Desde ella especifique la información básica para la conexión, incluyendo como mínimo la siguiente información.

  1. Nombre para la sesión
  2. Dirección o nombre del servidor
  3. Puerto del servicio SSH
  4. Nombre de usuario para realizar la conexión
  5. Contraseña del usuario especificado

Enlaces

  1. Getting Started with NX.
    http://www.nomachine.com/documents/getting-started.php
  2. NX Free Edition (for Linux & Solaris)
    http://www.nomachine.com/select-package-server.php?id=1&ids=2
  3. Documentación de instalación y configuración.
    1. Cliente
      http://www.nomachine.com/documents/client/install.php
      http://www.nomachine.com/documents/configuration/client-guide.php
    2. Nodo
      http://www.nomachine.com/documents/node/install.php
    3. Servidor
      http://www.nomachine.com/documents/server/install.php
      http://www.nomachine.com/documents/admin-guide.php
  4. Instalación de NoMachineNX en Ubuntu
    https://help.ubuntu.com/community/NomachineNX
  5. Why can’t I run the Unity or the Gnome 3 desktop environments with NX?
    http://www.nomachine.com/ar/view.php?ar_id=AR0500591

Acceder al escritorio remoto de GNU/Linux Ubuntu 10.04 creando una nueva consola grafica

Introducción.

Otra forma interesante de acceder a un escritorio grafico remoto utilizando XDMCP es creando una nueva consola grafica igual a la utilizada por el sistema de ventanas local pero que presentará el escritorio remoto.

Para esto es necesario que el servidor remoto exponga el servicio de XDMCP activo.  Recuerde que este servicio es considerado como inseguro ya que transmite la información de manera plana y es suceptible de ser comprometido.  Este servicio sólo debe en ambientes considerados seguros y nunca a través de Internet.  Tome las medidas de seguridad adicionales que considere necesarias.

Procedimiento.

Para iniciar una nueva sesión grafica del servidor remoto abra una de las consolas de texto disponibles en el cliente.  Presione ALT+CTRL+Fn donde n acostumbra a ser desde la 1 a la 7.

Inicie una nueva sesión de usuario.

Ejecute el siguiente comando en la terminal basada en texto.

$ xinit — :1 -query mi.servidor.com -once

Esta instrucción creará una nueva seudoterminal grafica (CTRL+ALT+F9 por ejemplo) con el administrador de registro y el escritorio remoto.

Acceder al escritorio remoto de GNU/Linux Ubuntu 10.04 utilizando Xephyr

Introducción.

En artículos anteriores había documentado como ejecutar aplicaciones que se ejecutan en servidores X remotos mostrando su interfaz de usuario a través del servidor X local de GNU/Linux (con Windows también).

Escritorio remoto con Xephyr

Siempre me había preguntado como acceder a la sesión remota de usuario desde el inicio, es decir, desde el GDM (en el caso de GNOME).  En la noche de hoy encontré la respuesta.

Descripción del procedimiento.

  • El servidor, equipo que ejecuta el servidor X remoto, debe tener activo y visible el servicio de XDMCP.
  • El cliente, equipo que va a consumir el escritorio remoto, deberá contar con el software Xephyr instalado.

Hasta ahora he encontrado un par de situaciones que deben tenerse en cuenta o resolverse posteriormente.

  • GNOME utiliza por defecto NetworkManager como su applet para la configuración y administración de las conexiones de red.  Este software sólo realiza las conexiones inalámbricas de red cuando un usuario autorizado inicia sesión.  Dependiendo del escenario es posible que sea mas conveniente utilizar un administrador de conexiones diferente como Wicd.
  • El audio de la sesión se ejecuta a través del hardware local, lo cual puede ser desconcertante según las circunstancias.

Activar XDMCP en el servidor.

Para activar XDMCP en el servidor X de un GNU/Linux Ubuntu 10.04 es necesario crear o editar el siguiente archivo de configuración.

$ sudo vi /etc/gdm/custom.conf

# GDM configuration storage

[xdmcp]
Enable=true
#DisplaysPerHost=10

[chooser]

[security]

[debug]

Reiniciar el servicio de GDM.

$ sudo service gdm restart

Tenga en cuenta que el servicio es XDMCP es considerado inseguro y que sólo debe activarse en redes confiables, así mismo se recomienda utilizar medidas de seguridad como aplicar restricciones a su acceso como agregando reglas al firewall por ejemplo.

Instalar Xephyr.

En el equipo cliente es necesario instalar Xephyr el cual actúa como un servidor X interno que muestra su contenido en una ventana del servidor X principal de la estación de trabajo.

$ sudo aptitude install xserver-xephyr

Iniciar la sesión de usuario remota.

Desde el equipo cliente ejecute el siguiente comando para iniciar la sesión grafica de usuario.

$ Xephyr :1 -query mi.servidor.com -ac -br -screen 1024×768 2> /dev/null

Según la instrucción anterior se pueden deducir los siguientes parámetros.

  • Se utilizará el DISPLAY número #1.
  • El nombre del servidor remoto es mi.servidor.com (es posible especificar una dirección IP de ser necesario).
  • -ac: Se desactivan las restricciones del control de acceso para permitir el reenvío de X (de ser necesario).
  • -br: Se configura el fondo de color negro.
  • Se configura la resolución de la pantalla.  En este caso se especifica 1024×768, sin embargo puede ajustarse libremente según las necesidades específicas.

Restringir el acceso a XDMCP.

Debido a que XDMCP es considerado muy inseguro ya que transmite la información sin ningún tipo de cifrado, es importante realizar ajustes para limitar su acceso.  En este apartado se describirá como limitar las ubicaciones desde las cuales los clientes pueden conectarse al servicio, lo cual si bien no ayuda a mejorar el problema del transporte de información plana, ayuda a restringir los posíbles orígenes desde los cuales se pueda atacar el servicio.

Para implementar esta restricción se utiliza TCPWrappers de la siguiente manera en el servidor.

$ vi /etc/hosts.deny

gdm: all

$ vi /etc/hosts.allow

gdm: 192.168.1.10, .jorgeivanmeza.com, 192.168.2.

La configuración anterior permite únicamente las conexiones a XDMCP desde la ubicación 192.168.1.0, cualquier equipo que pruebe ser del dominio jorgeivanmeza.com y cualquier equipo de la subred 192.168.2.xxx.

Ejecutar aplicaciones X remotas a través de SSH en GNU/Linux

Introducción.

Otra característica muy práctica que es permite el protocolo SSH (OpenSSL) es la ejecución remota de aplicaciones X.  Esto es, la facilidad de ejecutar aplicaciones gráficas (X) en servidores remotos y recibir su contexto gráfico (ventana) en el escritorio remoto de la misma manera como se ejecutan las aplicaciones locales.  Sobra decir que la comunicación cliente/servidor a través de la cual viajan las peticiones y respuestas de la aplicación se realiza a través de una conexión encriptada así que es posible hacerlo sobre un medio inseguro como Internet.

Hace un par de años había explicado como hacerlo bajo Windows, esta vez voy a documentar como hacerlo bajo GNU/Linux Ubuntu 10.04 (aunque en términos generales aplica para cualquier distribución) donde es aún mas natural.

Requerimientos.

  • Tanto el cliente como el servidor deberán estar ejecutando servidores de ventanas X.
  • El servidor cuenta con el servicio de SSH.
  • El cliente cuenta con un cliente para SSH.
  • El usuario en el cliente tiene una cuenta de usuario con acceso de SSH en el servidor.

Configuración.

En el servidor.

Las siguientes opciones son necesarias en la configuración del servicio SSH en el servidor.

$ sudo vi /etc/ssh/sshd_config

AllowAgentForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

Después de realizadas las modificaciones en la configuración del servicio es necesario reiniciarlo para que estas sean tenidas en cuenta.

$ sudo /etc/init.d/sshd restart

En el cliente.

No es necesaria ninguna modificación.

Implementación.

Desde el cliente inicie una sesión SSH con el servidor remoto.

$ ssh -X jimezam@mi.servidor.com

jimezam@mi.servidor.com’s password: ******

Nótese el uso del parámetro -X (en mayúscula!) el cual permite la transmisión del protocolo X a través de la conexión segura.

-X      Enables X11 forwarding.  This can also be specified on a per-host
basis in a configuration file.

X11 forwarding should be enabled with caution .  Users with the
ability to bypass file permissions on the remote host (for the
user’s X authorization database) can access the local X11 display
through the forwarded connection.  An attacker may then be able
to perform activities such as keystroke monitoring.

For this reason, X11 forwarding is subjected to X11 SECURITY
extension restrictions by default.  Please refer to the ssh -Y
option and the ForwardX11Trusted directive in ssh_config(5) for
more information.

En el shell de la sesión simplemente invoque las aplicaciones (remotas) que desee ejecutar, estas aparecerán en el escritorio local con su mismo look-and-feel.

Ejecución de aplicaciones remotas a través de SSH

En el ejemplo anterior, el servidor remoto (parte izquierda) sirve remotamente las aplicaciones ejecutadas que se muestran como ventanas locales (parte derecha).  En este caso se ejecutaron xclock, xeyes y xterm.

El servidor se utiliza XFCE como manejador de ventanas (azules) mientras que el cliente utiliza GNOME (negras), nótese como las aplicaciones remotas, enunciadas en el párrafo anterior, aparecen en ventanas negras adaptándose al manejador de ventanas local.

Enlaces.