domingo, 18 de noviembre de 2012

Tuneles ssh

Muchas veces nos encontramos con el problema de tener que acceder por ssh a una máquina que se encuentra en una red privada, detrás otra máquina con una dirección pública. Es requisito para poder realizar esta acción, poseer un usuario y una contraseña o una llave rsa para la máquina con ip pública como para las máquina en la red interna.
Podemos por ejemplo conectarnos directamente al ssh de la maquina con ip pública ejecutando:

$ ssh -L 22000:maquina-interna:22 usuario@maquina-publica

Dicho comando tiene como resultado que en el puerto número 22000 de nuestra máquina local sera el extremo de entrada de un túnel que tendrá como extremo de salida la maquina que pusimos como máquina-interna en el puerto 22.

Una ves realizado esto tendremos una terminal conectada a la maquina con ip pública y podemos ejecutar

$ ssh usuario2@localhost -p 22000

En este momento usuario2 es el nombre de usuario con el que nos tenemos que conectar a la maquina interna. De esta manera toda la comunicación se realiza mediante el túnel brindándonos acceso al maquina interna.
Un efecto que nos puede interesar evitar, es que al iniciar el túnel nos quede una sesión abierta en una consola (que de ser cerrada, cerrara el túnel). A tal fin  podemos ejecutar el comando ssh en modo foreground de la siguiente manera

$ ssh -fqN -L 22000:maquina-interna:22 usuario@maquina-publica

Una vez que se comprueba que el túnel funciona podemos guardar todas estas configuraciones de modo no tengamos que recordarlas cada ves que necesitamos realizar el tunnel. Para esto editamos el archivo ~/.ssh/config y agregamos las siguientes lineas:

Host <nombre o alias para la maquina>
Hostname <ip o nombre de la maquina pública>
User <usuario de la maquina interna>
Localforward <puerto local> <ip o nombre de la maquina interna>:<puerto destino en la maquina interna>

sábado, 1 de septiembre de 2012

CentOS 6 para GPGPU con CUDA

Instalación del sistema base
La instalación es igual a cualquier otra, no hay mucho que agregar al respecto.

Actualización
Verifico que el sistema este actualizado
yum check-update

Si existen actualizaciones pendientes, actualizo
yum update

Además instalo EPEL (Extra Packages for Enterprise Linux).
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/ARCH/epel-release-6-7.noarch.rpm

reemplazando ARCH por la arquitectura correspondiente i386 o x86_64 según corresponda

Desactivo el arranque de gdm editando /etc/inittab y cambiando al runlevel 3 que me da un modo completo para multiusuario sin necesidad de desperdiciar recursos en el servidor X que no utilizo. Esto es en el caso en que al servidor se accede de forma remota.

Desactivo la carga de nouveau, para esto es necesario crear un script en /etc/modprobe.d/, en mi caso le puse el nombre disable-nouveau.conf, con el siguiente contenido

blacklist nouveau options nouveau modeset=0

Luego abrir /etc/grub.conf y agregar rhgb rdblacklist=nouveau al final de la linea, se muestra a continuación. Esto evita la carga de nouveau en el inicio de ramdisk.

kernel /vmlinuz-2.6.32-71.14.1.el6.x86_64 ro root=UUID=209502fb-f4f0-4755-a275-de807916fb76 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=128M rhgb rdblacklist=nouveau

Esta referencia puede ser útil, http://www.spiderbird.com/2011/02/05/installing-nvidia-driver-under-centos-red-hat-6-0/

A continuación, instalo el driver para desarrollo (dev-driver) de la placa de video y el cuda-toolkit, que son las dos herramientas necesarias para poder desarrollar en cuda. Como opcional puedo compilar el cuda-sdk que son códigos de ejemplo, entre los cuales podemos contar algunos interesantes, como deviceQuery, el cual nos da toda la información acerca de nuestra placa.
Estos paquetes se encuentran en http://developer.nvidia.com/cuda/cuda-downloads
instalo driver nvidia, cuda toolkit, cuda sdk

Una vez finalizado lo anterior, solo me resta setear las variables de entorno. En caso que lo quiera hacer para todos los usuarios debo agregar un archivo en /etc/profile.d/, en mi caso gpu.sh, con el siguiente contenido, en este caso /usr/local/cuda es el directorio donde esta instalado.

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH

si solo quiero setearlas para un usuario, debo poner las mismas lineas en .bashrc en el home del usuario.

lunes, 20 de febrero de 2012

Red Hat Cloud

Un link interesante sobre servicios en la nube que ofrece Red Hat

http://diariolinux.com/2012/01/25/openshift-computacion-gratuita-en-la-nube-de-redhat/

domingo, 18 de diciembre de 2011

Largamos

A pedido de joaco(focojoaco.blogspot.com), que tanto rompió con que arme un blog, acá está. La idea básico va a ser presentar las soluciones a distintos problemas que se me presentan.
Saludos a todos y que lo disfruten.