Monthly Archives: September 2010

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.

Navegar a través de un servidor como proxy utilizando un puente SSH y un cliente GNU/Linux

Introducción.

SSH es uno de los protocolos mas interesantes, con él se pueden hacer múltiples cosas muy útiles y flexibles.  En este caso voy a describir el proceso de creación de un túnel SSH para acceder a Internet a través de un servidor que actúe como proxy.

Esto es muy útil cuando se pertenece a una red LAN que tiene un acceso limitado o nulo a la red WAN pero es posible acceder a servidores sin restricciones.  En este caso se crea un túnel entre el cliente (LAN) y el servidor (LAN/WAN) y se le indica al cliente que enrrute su tráfico WAN a través de esta conexión.

Requerimientos.

  • Un equipo en la red LAN con GNU/Linux.  Igual se puede implementar con Putty para Windows.
  • Un servidor con acceso a la red WAN que puede ser visto desde la red LAN y que cuenta con el servicio de SSH (versión 2).
  • Una cuenta de usuario para el acceso al servidor a través de SSH.

Procedimiento.

Establecer el túnel.

En el cliente, es decir el equipo en la red LAN que desea acceder a la WAN, crear un túnel hacia el servidor a través de un puerto local (en este caso, el 4711).

$ ssh -ND 4711 usuario@servidor

Por obvias razones, para establecer el túnel es necesario contar con la contraseña asociada al usuario@servidor.

La descripción de los parámetros utilizados por ssh para crear el túnel son los siguientes.

-D [bind_address:]port
Specifies a local “dynamic” application-level port forwarding.
This works by allocating a socket to listen to port on the local
side, optionally bound to the specified bind_address.  Whenever a
connection is made to this port, the connection is forwarded over
the secure channel, and the application protocol is then used to
determine where to connect to from the remote machine.  Currently
the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
as a SOCKS server.
Only root can forward privileged ports.
Dynamic port forwardings can also be specified in the configura‐
tion file.

-N Do not execute a remote command.  This is useful for just for‐
warding ports
(protocol version 2 only).

Configurar el navegador para utilizar al túnel para acceder al proxy.

Acceder a la configuración de Firefox a través de los menúes Edit > Preferences.

Elegir la sección Advanced (parte superior), la pestaña Network y presione el botón Settings.

Configuración de red de Firefox

Seleccione la opción de Manual proxy configuration y especifique la información para el SOCKS Host.  Para este caso el host será localhost (el equipo local donde se creó el puente) y el puerto será el 4711 (el mismo utilizado durante la creación del túnel).

Después de aceptados los cambios deberá ser posible navegar a través de la red WAN utilizando Firefox y utilizando al servidor como proxy.  Para verificar esto, acceda a un sitio como http://whatismyipaddress.com/ y verifique la dirección IP reportada, deberá ser la misma del servidor.

Esta configuración sólo aplica para Firefox así que no afecta la navegación de las demás aplicaciones ni del sistema operativo.

Configurar a GNOME para utilizar al túnel para acceder al proxy.

Configurar el proxy desde la administración del sistema de ventanas tiene un alcance mas profundo, incluyendo a las aplicaciones que utilizan sus valores como predeterminados e incluyendo al sistema operativo.

Para hacer esto es necesario acceder a las Network Proxy Preferences de la siguiente manera.

$ /usr/bin/gnome-network-properties

Seleccione la opción Manual proxy configuration y especifique los valores utilizados anteriormente: el Socks host es localhost y el Port es 4711.

Configuración de Proxy de GNOME.

Si desea que estos cambios sean permanentes y afecten a todos los usuarios del equipo, presione el botón Apply System-Wide (requiere acceso de root).

Configurar a GNOME para utilizar al túnel para acceder al proxy (línea de comando).

Es posible realizar la configuración anterior desde la línea de comando, lo cual es útil para la implementación de scripts.  Para obtener los mismos efectos es necesario ejecutar las siguientes instrucciones.

$ gconftool -s /system/proxy/socks_host -t string 127.0.0.1

$ gconftool -s /system/proxy/socks_port -t int 4711

$ gconftool -s /system/proxy/mode -t string manual

Enlaces.

Charla introducción a Processing en 2010/09

La semana anterior tuve una charla con algunos ingenieros de sistemas de la ciudad de Armenia (Quindío) en la cual los introduje al lenguaje de programación Processing.

La charla se dividió en dos sesiones cortas cuya finalidad era explicar el lenguaje desde la perspectiva de los usuarios (para qué sirve) como desde la perspectiva de los desarrolladores (cómo se usa).  En la primera sesión se trataron las siguientes preguntas básicas.

  1. Qué es ?
  2. Qué se puede hacer con él ?
  3. Cómo se obtiene ?
  4. Cómo se instala ?
  5. Cómo es su ambiente de desarrollo ?
  6. Hola Mundo Processing.
  7. Cómo se exporta el sketch ?

Para esto preparé una presentación estilo documento muy resumido con la información mas importante del lenguaje y vínculos para ampliar estos conocimientos.

En la segunda sesión de la charla se realizó una rápida introducción al API del lenguaje de programación y se realizó paso a paso un ejemplo práctico básico para ejemplificar parte de la funcionalidad mas utilizada del lenguaje: el sketch Laberinto.

Ejemplo práctico de demostración del lenguaje Processing

El ejemplo práctico quedó documentado en dos versiones: una versión procedimental que es mas simple, fácil de entender pero menos elegante y una versión orientada a objetos un poco mas elaborada, ambas con la misma funcionalidad.

El applet del laberinto puede ser accedido mediante el siguiente enlace.

http://demo.jorgeivanmeza.com/Processing/Laberinto/0.1/applet/

Las teclas que deben utilizarse en el sketch son las siguientes.

  • Flechas del cursor: mover al jugador.
  • R: reiniciar el juego.
  • Espacio: teletransportar al jugador.

El código fuente del sketch, tanto de la versión prcedimiental como el de la orientada a objetos, puede ser descargado de la siguiente ubicación.

http://demo.jorgeivanmeza.com/Processing/Laberinto

Software Freedom Day 2010 – Manizales

Software Freedom Day 2010 - Manizales

Software Freedom Day 2010 - Manizales

Qué es ?

Cada segunda semana de Septiembre, cientos de miles de ciudadan@s digitales alrededor del mundo se organizan en torno a la celebración del día por la libertad del Software. Las razones? lograr acciones de conocimiento tecnocultural libres que fomenten escenarios de comunicación fundamentados en la promoción de redes de trabajo tecnológicas colaborativas y abiertas, buscando así, el conocimiento, re-conocimiento, la promoción y empoderamiento tecnológico de los ciudadanos a través del contacto con las comunidades de saberes tecnosociales libres de su ciudad.

El Día de la Libertad del Software es un encuentro Abierto al Público y sin animo de lucro, basado en las potencialidades del Trabajo colaborativo, ajustado a los lineamientos de la Software Freedom International, organización gestora y promotora de este encuentro a nivel mundial.

Cuándo es ?

Sábado 18 de septiembre de 2010 desde las 9 am. hasta las 5pm.

Dónde es ?

Tecnoparque SENA Manizales, Sector Industríal, Km. 10 vía al Magdalena.

Cuál es su contenido ?

PRESENTACIÓN COMUNIDADES DE TRABAJO
HorarioNombre¿Quien es el Presentador?
10:00 – 11:00OpenSUSE Colombia: comunidad de cara a las problemáticas de accesibilidad digital.Andrés Ricardo Hernandez (Bogotá)
11:15 – 13:00Mozilla Colombia: Proyecto de Traducción Español Colombia. Creando ComunidadGloria Meneses (Bogotá)
14:00 – 15:00Colombia PHP: Comunidad Colombiana de desarrolladores PHP
15:05 – 16:00Fundación VisonteFundación Visonte (Manizales)
16:00 – 17:00Fedora ColombiaJuan Botero (Manizales)
CONFERENCIAS
HorarioNombre¿Quien es el Conferencista?
10:00 – 11:00Software Libre: pensando la tecnología mas allá del comando y el clickFarid Amed (Bogotá)
11:15 – 13:00Proyectos Musicales con Software Libre: ¡WART. Ama la música, éste es tu mundo!Pio Hefner (Bogotá)
14:00 – 15:00Trueque digital: Compartir conocimientos, compartir saberes digitales.David Ramírez (Bogotá)
15:05 – 16:00CONFERENCIA POR CONFIRMAR
16:00 – 17:00CONFERENCIA POR CONFIRMAR
MESA REDONDA
HorarioNombre¿Quien es el Coordinador?
10:00 – 11:00Mujeres y TecnologíaComunidad FossChix-Co (Cali-Bogotá)
11:15 – 13:00Tecnologías y jurídicas del control digital: Abordando el A.C.T.A Acuerdo comercial anti-falsificación "todos pagan, todos pierden"Fundación Casa del Bosque (Bogotá)
14:00 – 15:00TEMÁTICA POR CONFIRMAR
15:05 – 16:00La Cultura libre en el contexto de la sociedad de la información: aproximaciones a una critica del consumoDavid Ramírez (Bogotá)
TALLERES
HorarioGrupoQuien es el Tallerista?
SIN DEFINIRJoomla – Introducción a la Creación de Portales Dinámicos con Joomla!Farid Amed (Bogotá)
SIN DEFINIRImplementación de plataformas musicales con WordPressPio Hefner (Bogotá)
SIN DEFINIRAprendiendo a crear modelos tridimensionales con Blender 3DDiego Quevedo (Bogotá)
SIN DEFINIROpenOFFICE la Suite Ofimatica Libre. Aproximaciones para superar la barreraSonia Liliana Cruz (Bogotá)
SIN DEFINIRGnome – Entorno Escritorio de GNU LinuxCristian Gómez (Manizales)
SIN DEFINIRQue hay de nuevo en Java 7Juan Botero (Manizales)
SIN DEFINIRElastixJuan Diego Polanco (Manizales)

Más información.

Instalar un composite manager con LXDE en un equipo de bajo perfil

Introducción.

El día de hoy necesitaba realizar algunas pruebas con Linux en un equipo de bajo perfil.  Primero probé con Fluxbox como manejador de ventanas pero me pareció poco elaborado para el tipo de usuario que lo iba a utilizar.  En otras ocasiones había utilizado XFCE con buenos resultados, sin embargo quería probar algo que consumiera aún menos recursos.

Así fue como finalmente llegué a probar LXDE con muy buenos resultados hasta ahora.  Es mas simple que XFCE pero es lo mínimo que necesitaba.

Para simplificar su uso decidí instalarle un dock y se me ocurrió probar nuevamente a Docky, antes parte de Gnome-do.  Esta aplicación es muy interesante, especialmente por su integración con la segunda, sin embargo no acostumbra a ser de mi preferencia por la forma como agrupa los íconos de las instancias abiertas de la misma aplicación, aumentando el número de clics necesarios y obligando a utilizar frecuentemente el clic derecho que en mi netbook me resulta un tanto incómodo (problemas de diseño de Dell).

El problema surge en este momento ya que Docky requiere de la instalación de un composite manager que LXDE no trae por defecto y Compiz es demasiado pesado para las limitaciones de hardware que tenía.  Así que encontré la existencia de Xcompmgr el cual es mucho mas liviano y cumple su tarea.

Procedimientos de instalación.

Instalación de Docky.

$ sudo aptitude install docky

Adicionalmente es aconsejable instalar también Gnome-do ya que agrega una funcionalidad interesante que agiliza el trabajo en el escritorio.

$ sudo aptitude install gnome-do gnome-do-docklets gnome-do-plugins

Instalación de Xcompmgr.

$ sudo aptitude install xcompmgr

Finalmente es necesario indicarle a LXDE que debe utilizar al Xcompmgr como su composite manager.  Para hacer esto es necesario realizar el siguiente paso.

$ sudo vi /etc/xdg/lxsession/Mint/autostart

(agregar)
@xcompmgr

Enlaces.

Iniciar GNU/Linux Debian 5 en modo sólo texto

Introducción.

Generalmente no es necesario ni conveniente que los servidores ejecuten, menos automáticamente, un servidor de ventanas por básicamente dos razones: aumentan la probabilidad de problemas de seguridad y el mayor consumo de recursos (procesamiento y memoria RAM).

Como se ha visto anteriormente, es posible realizar esto de múltiples maneras según la distribución de GNU/Linux que se utilice.  Para este caso, Debian, se plantea el desactivar el inicio automático del GDM.

Procedimiento.

Desactivar el inicio automático.

# update-rc.d -f gdm remove

Reemplace el gdm por el administrador de login que utilice como xdm o kdm si no utiliza GNOME.

Iniciar manualmente el sistema de ventanas.

En cualquier momento es posible iniciar manualmente el sistema de ventanas mediante la ejecución del siguiente comando.

$ startx

Esta ejecución no realiza ningún tipo de cambios en la configuración así que este inicio será temporal, la próxima vez que se reinicie el servidor lo hará nuevamente en modo texto.

Activar el inicio automático.

Si se desea revertir el cambio en la configuración y permitir que el login grafico y el sistema de ventanas se inicien automáticamente ejecute el siguiente comando.

# update-rc.d -f gdm defaults

Nuevamente, ajuste el nombre del administrador de login según el administrador de ventanas que utilice.

Enlaces.

Como instalar las fuentes adicionales en GNU/Linux Ubuntu 10.04

Introducción.

No había notado la necesidad de instalar las fuentes complementarias en GNU/Linux hasta que me dí cuenta que el contenido de mi blog no se estaba viendo bien desde mi netbook con el sistema operativo recién instalado.  En él utilizo bastante la fuente Courier New para el código fuente, los comandos del shell y la salida estándar.  Esta no estaba apareciendo de ancho constante sino que aparecía de manera muy similar al resto del texto.

La solución por supuesto fue instalar las fuentes adicionales (MS Core Fonts) y el contenido del blog empezó a aparecer correctamente.

Instalación del paquete de fuentes.

Para hacer esto es necesario que se encuentre activo el componente Universe de los repositorios.

$ sudo aptitude install msttcorefonts

Regenerar el caché de las fuentes.

$ sudo fc-cache -fv

Como determinar la versión de GNU/Linux de un equipo

Introducción.

En muchas ocasiones es necesario conocer que distribución de GNU/Linux y que versión de la misma se encuentran ejecutándose en una máquina específica.  Debido a los cambios inducidos por las actualizaciones no siempre se cuenta con la versión que se instaló inicialmente.

Estos son los métodos mas comúnes para determinar esta información.

Determinar la distribución y versión de Linux.

El método genérico.

Aplica a todas las distribuciones de Linux.

$ cat /etc/issue

Linux Mint 9 Isadora \n \l

Para los RedHat.

Este método aplica también para las distribuciones basadas en RedHat como Fedora, CentOS y Scientific Linux.

$ cat /etc/redhat-release

Scientific Linux SL release 5.5 (Boron)

Para los Fedora.

$ cat /etc/fedora-release

Fedora release 13 (Goddard)

Para los Debian.

Este método aplica también para las distribuciones basadas en Debian como Ubuntu y Mint.

$ cat /etc/debian_version

5.0.5

Para Ubuntu.

$ lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.04.1 LTS
Release: 10.04
Codename: lucid