Lunes, Diciembre 18, 2006

Túneles por SSH

Un servidor con acceso ssh puede dar mucho más de si de lo que uno se imagina, permite acceder a la máquina no sólo para trabajar contra una terminal, también permite redirigir tráfico desde la máquina a la que nos conectamos. Veamos tres de casos prácticos, muy útiles.

Accediendo remotamente a las X’s: Esta es muy sencilla y muy potente, sólo hay que conectar a la máquina con la opción “-X”.Esta opción permite ejecutar aplicaciones con entorno gráfico, la salida “gráfica” de la aplicación la veremos en nuestra máquina pero la aplicación realmente se está ejecutando en la máquina remota.


tunel para las X's

Accediendo a recursos privados: Si queremos acceder a un recurso que sólo está accesible localmente en una máquina remota, por ejemplo hemos puesto a bajar cosas con ml-donkey en un servidor y queremos acceder a la interfaz web que está escuchando en localhost:8080 (en el puerto 8080 pero sólo con acceso local en la máquina) desde nuestro portátil.

Tunel con ssh

Nuestro servidor está en 192.168.0.1, para poder acceder a la interfaz web vamos a establecer un túnel entre un puerto local de nuestro portátil ( por ejemplo el puerto 2505) a un puerto del servidor. Para este caso nos conectaremos por ssh así:

ssh -L2505:localhost:8080 192.168.0.1

Mientras tengamos la conexión abierta podremos acceder al puerto remoto 8080 conectándonos a nuestro puerto local 2505. En este ejemplo abriríamos un firefox y teclearíamos como dirección “http://localhost:2505″ ya tendríamos acceso al servidor web del ml-donkey.

Accediendo a recursos utilizando el servidor como puente: Esta es una variante del anterior, cuando usamos la opción “-L” no estamos limitados a establecer conexiones locales al servidor al que nos conectamos, podemos utilizar el servidor para acceder a un recurso de otra máquina.

Por ejemplo en la universidad si una máquina genera mucho tráfico de salida la máquina es penalizada durante un tiempo, sin embargo las máquinas dadas de alta como servidores no tienen esa restricción.

Si tenemos cerca una máquina con ssh dada de alta como servidor podemos usarla como puente, en este caso para subir ficheros de gran tamaño a la página web:

# En una terminal(1): Establecemos primero el tunel
ssh -L8022:www.pplux.com:22 mi_servidor_puente
# En otra terminal(2): ahora subimos todos los zips  al servidor real
scp -P8022 *.zip localhost:ruta_donde_lo_quiero_dejar

Lo que hemos hecho es:

  • Nos conectamos al servidor_puente por ssh y establecemos un tunel entre el puerto local 8022 y el puerto 22 de la máquina real a la que me quiero conectar.
  • Después en otra terminal ejecutamos un scp con el puerto 8022 en la máquina local y todo el tráfico será reenviado a la máquina real (www.pplux.com) a través del servidor puente.

Sencillo, no? :)

posteado por PpluX @ 1:01 pm tags:linux/unix, recetas  

Sábado, Junio 3, 2006

Instalando las páginas de man para OpenGL

No tengo ni idea de en qué paquete de Ubuntu se encuentran las páginas de man de OpenGL. Así que, dado que las páginas existen en un ftp de SGI, aquí os dejo un script para instalarlas.

Bájate el script(man-gl.sh) y dale permisos de ejecución ( chmod +x man-gl.sh) y ejecútalo como root (en las ubuntu con sudo ./man-gl.sh).

truco: si usas vim, cuando estás en modo comando al pulsar ‘K’ (k mayúscula) te abrirá la página del man de la palabra sobre la que esté el cursor, y ahora también las páginas de OpenGL :)

#!/bin/bash
URI=ftp://ftp.sgi.com/sgi/opengl/doc/
DEST=/usr/local/man/man3
# Creamos si no existe el directorio donde iran las paginas
[ -d ${DEST} ] || mkdir -p ${DEST}
# nos movemos a /tmp y a trabajar
cd /tmp
wget ${URI}mangl.tar.Z
wget ${URI}manglu.tar.Z
uncompress mangl.tar.Z
uncompress manglu.tar.Z
tar -xvf mangl.tar
tar -xvf manglu.tar
for i in $(find release -iname "*.3gl"); do
    mv $i $DEST
done
mandb
rm -rf /tmp/release
posteado por PpluX @ 8:12 pm tags:OpenGL, linux/unix  

Jueves, Enero 19, 2006

Organizando librearías propias o compiladas

Personalmente no me gusta nada instalar librerías con el típico:

./configure; make; make install

Ya que de esta forma todos los programas/librerías acaban juntos en /usr/local mezclados y es un mareo cuando quieres actualizar, o quitarlos. Además necesitas ser root de la máquina para hacerlo, cosa que no siempre es posible

La solución es relativamente sencilla, compilar con :

 ./configure --prefix=/home/miUsuario/proyectos/nombre_libreria; make; make install 

De esta forma el programa/librería se instalará en tu home, en un directorio común “proyectos” y con un directorio para ella sola “nombre_libreria”. Para que todo funcione sólo hace falta un detalle más, ajustar las rutas para que el ld(linker) y el bash encuentren tanto las librerías como los binarios añadiendo estas lineas al .bashrc

EXT_DIR=$HOME/proyectos
[ -d $EXT_DIR ] && EXT_LIBS=$(find $EXT_DIR -maxdepth 2 -type d -iname "lib")
[ -d $EXT_DIR ] && EXT_BIN=$(find $EXT_DIR -maxdepth 2 -type d -iname "bin")
for i in $EXT_LIBS; do
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$i
done
for i in $EXT_BIN; do
    export PATH=$PATH:$i
done

¿Fácil no?, si alguien se pierde que haga uso de los comentarios que para eso están :D

posteado por PpluX @ 4:26 pm tags:Programación, linux/unix  
« Entradas anteriores

Gestionado con WordPress