Algo de Linux: febrero 2009

sábado, 21 de febrero de 2009

Acceso a máquinas remotas vía ssh sin contraseña

A veces, trabajando como administrador, resulta un poco tedioso tener que teclear la contraseña cada vez que nos conectamos a una máquina remota en la que tenemos que trabajar, más aún si tenemos muchos equipos que controlar.

Para conseguir conectarnos vía ssh a estas máquinas, sin que se nos pida la contraseña, podemos crear una clave pública y otra privada con ssh-keygen. Una vez creadas, no tendremos más que añadir la clave pública al fichero authorized_keys del usuario con el que nos conectamos a la máquina remota.

Veamos paso a paso cómo hacerlo:

Primero, generamos en nuestra máquina un par de claves (privada y pública) mediante ssh-keygen:

# ssh-keygen -t rsa

En el directorio .ssh de nuestro home se creará la clave privada (id_rsa) y la pública (id_rsa.pub). Por ejemplo, si mi usuario es adrian, la clave privada se encontrará almacenada en /home/adrian/.ssh/id_rsa y la clave pública en /home/adrian/.ssh/id_rsa.pub

ssh-keygen nos pedirá una frase de paso. La dejaremos en blanco para que no nos la pida al conectarnos al equipo remoto.

Una vez que hemos generado nuestra clave pública y privada, añadimos nuestra clave pública al fichero ~/.ssh/authorized_keys del usuario que va a tener acceso sin clave en la máquina remota.

Para hacerlo, primero copiamos el fichero id_rsa.pub al home del usuario remoto con el que queremos acceder sin contraseña. Por ejemplo:
# scp /home/adrian/.ssh/id_rsa.pub usuario@servidor:~/

Después nos conectamos a la máquina remota:
# ssh usuario@servidor

Y añadimos el contenido del fichero id_rsa.pub al fichero authorized_keys del usuario con el que accedemos en la máquina remota:
# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

Por cierto. Este proceso de copia de nuestra clave pública, podemos hacerlo de un plumazo mediante el comando ssh-copy-id:

# ssh-copy-id -i /home/adrian/.ssh/id_rsa.pub usuario@servidor

Y ya está. A partir de ahora, cada vez que nos conectemos a la máquina remota, tendremos acceso sin tener que teclear la password.

Por cierto, si tenemos muchas máquinas que administrar, podemos usar una máquina de pasarela.

viernes, 13 de febrero de 2009

Ahorrar recursos en el servidor NFS con autofs

Un buen cambio que se ha hecho en nuestros centros, entre otras muchas cosas, ha sido montar autofs en los clientes NFS, con lo que se va a reducir de una manera importante la carga de trabajo del servidor.

Si tenemos un servidor NFS y montamos el home de los usuarios en el archivo fstab, estaremos estableciendo una conexión por máquina con el servidor, cada vez que la máquina cliente arranque. Si tenemos pocos usuarios en el sistema no hay problemas, pero si tenemos muchos, el servidor nfs tendrá una carga mayor de trabajo cuanto mayor sea el número de máquinas encendidas.

Para mejorar el rendimiento de nuestro sistema y hacer que las conexiones nfs de los clientes se establezcan tan sólo cuando un usuario las necesite, podemos contar con una utilidad llamada automount que se encargará de montar y desmontar sistemas de archivos nfs automáticamente, ahorrando recursos.

Podemos ejecutar el comando automount para especificar los montajes. No obstante, es más recomendable especificar los montajes que deben hacerse en una serie de ficheros que usa autofs.

Para instalar autofs no tenemos más que hacer un:
# apt-get install autofs

Al instalarlo, se crearán los siguientes archivos de configuración:
  • /etc/auto.master
  • /etc/auto.misc
  • /etc/auto.net
  • /etc/auto.smb
  • /etc/default/autofs
Se arrancará automounter, cargando asó el módulo del kernel que se encargará de los montajes: autofs4

El archivo /etc/auto.master es el principal fichero de automount. Contiene una serie de líneas que se refieren a cada punto de montaje, con una estructura como la siguiente:

Si nos fijamos en el fichero auto.master nada más instalar autofs, veremos que aparecen unas líneas comentadas. Por ejemplo:
/misc /etc/auto.misc --timeout=60

La línea anterior no se va a ejecutar puesto que está comentada, pero quiere decir: Todo lo que está en auto.misc hay que montarlo en /misc y desmontarlo si no se usa cuando lleve sin usarse 60 segundos.

Otro ejemplo típico e interesante: Podemos querer que el directorio home se automonte para los usuarios. Entonces, añadiremos una línea como la siguiente al fichero /etc/auto.master:
/home /etc/auto.home

Luego, crearemos el fichero /etc/auto.home con la cadena de montaje. Por ejemplo:

* -fstype=nfs4,intr,rsize=0192,wsize=8192 servidor:/home

Esta línea hace que si cualquier usuario intenta acceder bajo el directorio local /home se produzca un montaje del servidor servidor:/home en /home.

Por cierto, se me olvidaba: Como autofs se instala como demonio, podemos iniciarlo, pararlo, reiniciarlo... con:
# /etc/init.d/autofs {start|stop|restart|reload|status|getmounts|active}

jueves, 12 de febrero de 2009

unalz: Una herramienta linux para descomprimir ficheros .alz

ALZip es una herramienta que mucha gente ha usado en windows durante tiempo para comprimir/descomprimir archivos. Esta herramienta ha sido gratuita, excepto para uso comercial hasta antes del 1 de Diciembre de 2008. Pero, para nuevas versiones a partir del 1 de Diciembre de 2008, la empresa cambió la licencia, dejando de ser gratuita y pasando a ser una herramienta de pago para todo uso, ya sea personal o comercial.

Para los que usamos linux, hay una utilidad que nos permite descomprimir los archivos .alz: unalz. Por cierto, es una herramienta de línea de comando que tendremos que usar desde un terminal.

A mí me ha sido muy útil cuando me han enviado algún fichero comprimido en este formato.

Veamos algunos ejemplos de uso:

Si queremos descomprimir un archivo, el comando a ejecutar será algo así:
# unalz ficherocomprimido.alz

Si el fichero a comprimir tiene password, ejecutaremos el comando de la siguiente manera:
# unalz -pwd passworddelarchivo ficherocomprimido.alz

Si tan sólo queremos listar los ficheros que contiene el fichero comprimido:
# unalz -l ficherocomprimido.alz

Y si queremos especificar un directorio destino:
# unalz -d directoriodestino ficherocomprimido.alz

Éstas son las opciones más comunes. No obstante, hay algunas opciones más que podéis consultar con man.

miércoles, 11 de febrero de 2009

Dalle: Una herramienta multiplataforma para partir/unir archivos

Ayer necesitaba unir una serie de archivos y no me servía el hacha de linux (hoz). Buscando un poco por ahí, encontré Dalle, una herramienta multiplataforma compatible con los siguientes formatos:
  • Astrotite
  • Axman 3
  • Easy File Splitter
  • File Splitter
  • Genérico
  • Hacha (1, 2 y Pro)
  • KamaleoN (1 y 2)
  • MaxSplitter
  • SplitFile
  • Zip
La página del proyecto es: http://dalle.sourceforge.net

Para descargarlo: http://sourceforge.net/project/showfiles.php?group_id=95720

Como no es algo que use habitualmente, no necesito instalarlo. Así que descargué la versión ejecutable desde aquí: http://downloads.sourceforge.net/dalle/dalle-bin-0.7.8.zip?modtime=1206388293&big_mirror=0

Descomprimí el archivo:
# unzip dalle-bin-0.7.8.zip

Entré en el directorio que se crea al descomprimir:
# cd dalle-bin-0.7.8

Y ejecuté dalle-gtk:
# ./dalle-gtk.exe

Por cierto, este conjunto de aplicaciones están escritas en C. Para ejecutarlas deberemos tener instalado mono.

minicom: Acceso a switches, routers... por el puerto de consola

minicom es una herramienta muy útil que nos permite conectarnos por el puerto serie/usb a un switch, un router, etc... para configurar el dispositivo a través del puerto de consola.

El caso es que, hoy en día, la mayoría de dispositivos ya incorporan un interfaz accesible vía web, pero, en ocasiones, por las circunstancias que sean, no tenemos más remedio que acudir a la consola. Por ejemplo: Hoy mismo estaba haciendo pruebas de configuración de uno de los switches 3com que tengo que preparar, y como me llaman muchas veces, al volver, había reiniciado el switch y no recordaba la configuración de red que le había puesto, por lo que ya no podía acceder vía web. Para poder volver a entrar he usado minicom y he restaurado la configuración de red a través del puerto de consola.

Una cosa a tener en cuenta para usar el puerto de consola, es que la mayoría de cables son serie y, si queremos utilizar un portátil para configurar el dispositivo, como los portátiles ya no suelen tener puerto serie, tendremos que usar un adaptador usb-serial.

Por cierto, si vamos a usar el cable usb-serial, podemos comprobar si se ha cargado el módulo necesario con el comando: lsusb.

Para instalar minicom, no tenemos más que hacer un:

# apt-get install minicom

Una vez instalado, lo lanzamos directamente desde un terminal:

# minicom

Al ejecutarlo nos aparecerá una salida como la siguiente:

Welcome to minicom 2.3

OPCIONES: I18n
Compilado en Feb 24 2008, 16:35:15.
Port /dev/ttyS0

Presione CTRL-A Z para obtener ayuda sobre teclas especiales

Pulsamos Enter y nos pedirá login.

Introducimos el login y nos pedirá el password.

Introducimos el password y ya veremos el menú de configuración del dispositivo.

Ahora bien, como tendremos que configurar puerto, verlocidad, paridad, control de flujo..., lo mejor es que la primera vez lo lancemos con el parámetro -s (de setup):

# minicom -s

Nos aparecerá un menú de configuración de minicom. Vamos a "Configuración de la puerta Serial", indicamos la configuración que deseamos para conectar. Por ejemplo: En los switches que estoy configurando, me indica que debo configurar la aplicación de emulación de terminal con los siguientes valores: 38,400 baud, 8 data bits, no parity and 1 stop bit. Flow control should be disabled. Pues nada, vamos pulsando las letras de las opciones y vamos configurando los valores. Al final, veremos que nos queda algo así:

A - Dispositivo Serial : /dev/ttyS0
B - Localización del Archivo de Bloqueo : /var/lock
C - Programa de Acceso :
D - Programa de Salida :
E - Bps/Paridad/Bits : 38400 8N1
F - Control de Flujo por Hardware: No
G - Control de Flujo por Software: No

Una vez configurado, guardamos los ajustes y en sucesivas ocasiones lo lanzamos sin -s.

Por cierto, si usamos un puerto usb, lanzamos minicom especificando el puerto:

minicom -o /dev/ttyUSB0

Al ejecutarlo nos aparecerá una salida como la siguiente:

Welcome to minicom 2.3

OPCIONES: I18n
Compilado en Feb 24 2008, 16:35:15.
Port /dev/ttyUSB0

Presione CTRL-A Z para obtener ayuda sobre teclas especiales

Y ya podremos instroducir login y password para acceder.

Una última cuestión sobre combinación de teclas. Pulsando:
- Ctrl+A, Z accedemos a la ayuda. (Ctrl+A,soltamos,Z)
- Ctrl+A, Q salimos. (Ctrl+A,soltamos,Q)

Ah, se me olvidaba: A los administradores nos encanta trabajar desde terminales, sobre todo, porque en muchos casos no hay más remedio y es preferible estar acostumbrado.
Para aquellos que prefieran usar una aplicación de emulación de terminal en modo gráfico (tipo Hyperterminal) pueden instalar gtkterm o cutecom.