Instalación de Samba como Controlador de Dominio

January 9th, 2008

Instalación de Samba como Controlador de Dominio

¿Qué es Samba?

Samba es una suite de aplicaciones Unix que habla el protocolo SMB (Server Message Block). Muchos sistemas operativos, incluídos Windows y OS/2, usan SMB para operaciones de red cliente-servidor. Mediante el soporte de este protocolo, Samba permite a los servidores Unix entrar en acción, comunicando con el mismo protocolo de red que los productos de Microsoft Windows. De este modo, una máquina Unix con Samba puede enmascararse como servidor en tu red Microsoft y ofrecer los siguientes servicios:

• Compartir uno o más sistemas de archivos.
• Compartir impresoras, instaladas tanto en el servidor como en los clientes.
• Ayudar a los clientes, con visualizador de Clientes de Red.
• Autentificar clientes logeándose contra un dominio Windows.
• Proporcionar o asistir con un servidor de resolución de nombres WINS.

El objeto de este artículo es hacer que nuestra máquina Unix sea un Controlador de Dominio (PDC) de un dominio Windows para poder beneficiarnos de todas sus caracterísiticas: autentificación de usuarios, scripts de inicio de sesión, perfiles móviles, directivas de sistemas, etc…

Dominio Windows

Un Dominio Windows va un paso más allá. Es un grupo de trabajo de máquinas SMB que tienen una añadido: un servidor que actúa como controlador de dominio. Debes tener un controlador de dominio para poder tener un dominio Windows.

Controlador de Dominio

El controlador de dominio es el centro nervioso de un dominio Windows, tal como un servidor NIS lo es del servicio de información de una red Unix. Los controladores de dominio tienen una serie de responsabilidades. Una de las que te va a implicar a ti es la autentificación. La autentificación es el proceso de garantizar o denegar a un usuario el acceso a recursos compartidos o a otra máquina de la red, normalmente a través del uso de una password.

Cada controlador de dominio usa un security account manager (SAM) para mantener una lista de combinaciones nombre_usuario-contraseña. El controlador de dominio entonces forma una central repositoria de passwords que están enlzadas a nombres de usuarios (una password por usuario), lo cual es más eficiente que mantener en cada máquina cliente centenares de passwords para cada recurso de red disponible.

En un dominio Windows, cuando un cliente no autorizado solicita acceso a los recursos compartidos de un servidor, el servidor actúa y pregunta al controlador de dominio si ese usuario está autentificado. Si lo está, el servidor establecerá una conexión de sesión con los derechos de acceso correspondientes para ese servicio y usuario. Si no lo está, la conexión es denegada. Una vez un usuario es autentificado por el controlador de dominio, una ficha especial de autentificación será retornada al cliente, de manera que el usuario no necesitará relogearse a otros recursos en ese dominio. En éste punto, el usuario se considera “logeado” en el dominio.

Un Vistazo a la Distribución Samba

Como mencionamos antes, Samba actualmente contiene varios programas que sirven para diferentes propósitos. Vamos a introducirnos en cada uno de ellos brevemente y veremos cómo funcionan. La mayoría de los programas que vienen con la distribución de Samba se centran en sus dos demonios. Echemos un vistazo a las responsabilidades de cada demonio:

smbd
El demonio smbd es responsable de manejar los recursos compartidos entre la máquina servidora Samba y sus clientes. Proporciona servicios de archivos, impresión y visualización a los clientes SMB a través de una o más redes. smdb controla todas las notificaciones entre el servidor Samba y los clientes de red. En adición, es responsable de la autentificación de usuarios, bloqueo de recursos y la compartición de datos a través del protocolo SMB.

nmbd
El demonio nmbd es un sencillo servidor de nombres que imita la funcionalidad de los servidores WINS y de resolución de nombres NetBIOS. Este demonino está a la escucha de peticiones para el servidor de nombres y proporciona la información apropiada cuando se le llama. También proporciona listas de visualización del Entorno de Red y participa en las elecciones de los visualizadores.

La distribución de Samba también está acompañada por un pequeño grupo de herramientas tipo línea de comandos Unix:
smbclient
Un cliente tipo FTP Unix que puede ser usado para conectar a recursos compartidos por Samba.

smbtar
Un programa para realizar copias de seguridad de datos sitos en los recursos compartidos, similar al comando Unix “tar”.

nmblookup
Un programa que proporciona búsquedas de nombres NetBIOS sobre TCP/IP.

smbpasswd
Un programa que permite a un administrador cambiar las passwords encriptadas usadas por Samba.

smbstatus
Un programa para reportar las conexiones de red actuales hacia los recursos compartidos por el servidor Samba.

testparm
Un simple programa para validar la sintaxis del fichero de configuración de Samba.

testprns
Un programa que testea si varias impresoras son reconocidas por el demonio smbd.

La distribución más estable a la fecha de este artículo es la 3.0.14a y está disponible en la página oficial de Samba

El Fichero de Configuración

La clave para configurar Samba está en un único fichero de configuración: smb.conf. Este fichero de configuración puede ser muy simple o extremadamente complejo. Por el momento, mostraremos cómo crear una configuración basada en un PDC, la cual te permitirá iniciar los demonios Samba y ver que todo está funcionando como debiera.
El proceso de instalación no crea automáticamente un fichero de configuración smb.conf, aunque esto depende de la distribución que estemos usando. Para montar nuestro servidor, usaremos el siguiente fichero. Este debería llamarse smb.conf y estar ubicado en el directorio /usr/local/samba/lib, aunque esta ubicación, una vez mas, dependerá de la distribución.

Iremos explicando cada línea del fichero smb.conf

[global]
; Configuración básica del servidor
workgroup = DOMINIO ; Nombre del Dominio
netbios name = NOMBRE ; Nombre Netbios del servidor
server string = Controlador de Dominio ; Comentario que veremos en “Mi Sitios de Red” con la opción detalles
; Parámetros de visualización
os level = 64 ; indica el nivel de sistema operativo que Samba adoptará en un proceso de elección de visualizador. Si quieres que Samba gane la elección de visualizador maestro, debes establecer el primer nivel superior de S.O. al de cualesquiera otros que puedan existir en tu red
preferred master = yes ; Solicita que Samba establezca el bit de maestro preferido cuando participe en una elección. Esto le da al servidor el status más alto en el grupo de trabajo con respecto al resto de máquinas al mismo nivel de S.O.
domain master = yes ; El visualizador maestro de dominio es una máquina usada para propagar listas de visualización a cada uno de los visualizadores maestros locales existentes en las subredes del dominio.Por lo tanto, debes activar esta opción.
local master = yes ; Especifica si Samba intentará convertirse en el visualizador maestro local para la subred cada vez que arranque Samba

; Configuramos Samba para que sea un servidor WINS
wins support = yes

; Opciones de debug
debug level = 2 ; establece el nivel de depuración (este varía de 0 a 9)
log file = /usr/local/samba/var/log.%U ; ubicación del fichero log, el parámetro %U significa que creará un fichero por cada usuario samba
max log size = 50 ; tamaño del fichero log (kB), una vez superado este tamaño ira creando varios ficheros.

; Configura Samba como un servidor de autenticación para los usuarios dados de alta
security = user

; Acepta contraseñas cifradas
encrypt passwords = yes

; Soporte para controlador de dominio
domain logons = yes

; fichero de logon script para todos los usuarios, estará ubicado en recurso compartido NETLOGON
logon script = logon.bat

; ruta donde se almacenarán los perfiles de usuario
logon path = \\%L\profiles\%U

; Ruta del recuro home y con que unidad se mapeará en nuestro equipo
logon drive = H:
logon home = \\%L\%U

; esto provocara que nmbd haga peticiones para nombres de maquinas usando dns
; si un nombre no es encontrado por wins
dns proxy = yes

; Con esto conseguimos que nuestros clientes sincronizen la hora con el PDC a través del comando net time
time server = yes

; Recurso Home para cada usuario
[homes]
comment = Home Directories
browseable = no ; esta opción establece que el recurso esté oculto en el entorno de red
writable = yes ; el usuario tendrá permisos de escritura

; Recurso Netlogon, donde residirán los scripts de conexión y las directivas del sistemas
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
read only = yes
write list = root ; solo el usuario root tendrá acceso a escribir en este recurso
browseable = no

; Recurso Profiles, donde se almacenara la informacion de los perfiles móviles de cada usuario
[profiles]
comment = User profiles share
path = /var/lib/samba/profiles
browseable = no
read only = no
create mask = 0600 ; Las máscaras de archivos ayudan a definir los permisos que un archivo o directorio recibirá en el momento de ser creado.
directory mask = 0700

Creación de cuentas de máquina y de usuario

Tendremos que crear una cuenta de máquina por cada equipo que queramos introducir en el dominio, la cuenta de máquina estará formada por una cuenta de usuario unix y una cuenta de usuario samba y a diferencia de la cuenta de usuario esta tendrá el símbolo dolar

Creamos la cuenta de máquina unix ,la introducimos en el grupo machines y no le asignamos una shell

# /usr/sbin/useradd -g machines -d /dev/null -c “machine nickname” -s /bin/false machine_name$

Bloqueamos la cuenta unix para evitar el acceso a una shell

# passwd -l machine_name$

Creamos la cuenta samba, la opcion –m indica que se trata de una cuenta de tipo máquina

#smbpasswd -a -m machine_name

También tendremos que crear una cuenta unix y una cuenta samba por cada usuario que demos de alta en el dominio,

# useradd userid
# passwd -l userid
# smbpasswd -a userid
Enter Password:

Una vez hecho esto, nos vamos a los PC’s Windows e iremos agregándoles en el dominio, para ello introduciremos el nombre del dominio, nos pedirá una contraseña con derechos para agregar máquinas al dominio, esta será de le root que previamente habremos creado su cuenta samba.

Una vez que lo hallamos añadido nos pedirá que reiniciemos la máquina con lo que quedará lista para iniciar una sesión en el dominio.

Ya tenemos un contralador de dominio listo, todo el resto de configuracion se basa en el fichero smb.conf que podra ser tan complejo como queramos, para cualquier ampliación de este fichero tenéis los siguientes enlaces:
http://us3.samba.org/samba/docs/man/Samba-HOWTO-Collection/.
http://es.tldp.org/Manuales-LuCAS/USANDO-SAMBA/usando-samba-html/

Instalación de Samba como PDC

January 9th, 2008

Instalación de Samba como PDC.

Primero necesitamos un controlador primario de dominio. Esta máquina será la que albergará la base de datos que usuarios que van a compartir todos los equipos de la red y que va a permitir iniciar sesiones de trabajo tanto en máquinas Linux como en máquinas Windows.

El primer paso para crear un PDC funcional en Samba es entender qué parámetros son necesarios en el fichero smb.conf. En el siguiente ejemplo podemos encontrar un caso de smb.conf para actuar como PDC. Lo ponemos primero para los impacientes y más tarde se describen los parámetros.

[global]
netbios name = jefe
workgroup = IESBEZ
passdb backend = tdbsam
os level = 33
preferred master = yes
domain master = yes
local master = yes
security = user
domain logons = yes
logon path = \\%N\perfil\%u
logon drive = H:
logon home = \\servidor\%u\perfil
logon script = %u.bdat
add user script = /usr/sbin/useradd -d /dev/null -s /bin/false -g samba -M %u
add user to group script = /usr/sbin/groupmod -m “%u” “%g”
add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev /null -s /bin/false %u
delete user script = /usr/sbin/userdel “%u”
delete group script = /usr/sbin/groupdel “%g”
delete user from group script = /usr/sbin/groupmod -x “%u” “%g”
set primary group script = /usr/sbin/usermod -g “%g” “%u”
passwd program = /usr/sbin/passwd %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*
unix password sync = Yes
[netlogon]
path = /var/samba/netlogon
read only = yes
write list = root
[profiles]
path = /var/samba/perfil
read only = no
create mask = 0600
directory mask = 0700

El resto sería la descripción de los servicios que queremos que comparta el servidor.

A continuación vamos a describir las opciones fundamentales mostradas en este ejemplo:
passdb backend

Aquí indicamos que tipo de base de datos tiene que usar Samba para guardar las datos de los usuarios y los grupos. Hemos obtado por poner “tdbsam”, pero también podríamos haver usado smbpasswd, el sistema clásico de versiones antiguas de Samba o ldapsam, para tener los datos en un directorio LDAP. La entrada guest (invitado) es la cuenta por omisión y está incluida de forma predeterminada, no es necesario añadirla explícitamente. Si vamos a usar un Contoladores Secundarios de Dominio (BDC), la única elección lógica es usar LDAP para que el passdb backend se pueda distribuir, pero esto se tratará en otro documento distinto. En este casos los ficheros tdbsam y smbpasswd no se pueden distribuir y en consecuencia no se deberían usar.

Es posible indicar una lista de valores para este parámetro, por ejemplo:

passdb backend = tdbsam:/etc/samba/private/passdb.tdb smbpasswd:/etc/samba/smbpasswd

Si ponemos varias bases de datos, estas se consultan en el mismo orden en el que se especifican, pero tenemos que tener en cuenta que los nuevos usuarios siempre se añaden a la primera base de datos especificada.
Parámetros del control del dominio

Los parámetros os level, preferred master, domain master, security, encrypt passwords y domain logons juegan un papel central para asegurar el control del dominio y las sesiones de red.

El parámetro os level tiene que tomar un valor superior a 32. Un controlador de dominio tiene que ser el examinador principal. El valor de parámetro controla el nivel en que se anuncia samba a si mismo para la elección de examinador.

Un controlador de dominio tiene que tener el modo de seguridad como user, tiene que admitir contraseñas cifradas compatibles con Microsoft y tiene que proporcionar el servicio de sesiones del dominio (domain logons). La contraseñas cifradas tienen que estar activadas.
Parámetros de entorno

Los parámetros logon path, logon home, logon drive y logon script definen los valores que determinan el entorno que ayudan a facilitar las operaciones de sesión y de control automático y de red.

logon path indica el directorio home donde se guardan los ficheros de perfiles (NTuser.dat para windows NT). A diferencia de versiones previas, no influye en los perfiels de W9X. Para gesionar los perfieles en Win 9X tenemos que usar logon home.

Esta opción toma las sustituciones estándar, por ejemplo %u para el nombe de usuari o %m para el nambre de máquina cliente, lo que permite tener script de conexión para cada usuario o máquina. También especifica el directorio desde el cual se cargan los contenidos de las carpetas “escritorio”, “menú inicio”, “programas” y “entorno de red” tal y como queremos que se muestren en los clientes Windows NT.

El usuario debe poder leer el servicio y la ruta para que las preferencias y los directorios se carguens en los clientes Windows NT. El recurso dtiene que tener permiso de escritura, al menos la primera vez que el usuario se conecta, para que los clientes Windows NT puedan crear el fichero user.dat y otros directorios. Los directorio y cualquiera de los contenidos, pueden, si es necesario en nuestro caso, ponerse como sólo lectura. No es conveniente que el fichero NTuser.dat se haga de sólo lectura, renómbrelo como NTuser.man para llevar a cabo los efectos deseados ( MANdatory profile que impide su escritura).

logon home especifica la ubicación del directorio home cuando se conectan estaciones Win95/98 a un PDC Samba. Esto le permite hacer:

C:\>NET USE H: /HOME

desde la línea de órdenes, o desde un script albergado en el servidor para poder montar en la máquina cliente el directorio personal que tiene el usuario en el servidor, por ejemplo.

Esta opción, al igual que vimos en el anterior paráemtro, toma las sustituciones normales, permitiendole tener scripts distintos por usuario o máquina.

Este parámetro se puede usar con Win9X para asegurarse que los perfiles se almacenan en un subdirectorio del directorio personal del usuario. Esto se hace de la siguiente forma:

logon home = \\servidor\%u\perfil

Tenga en cuenta que esta opción sólo es válida si Samba está configurado como logon server.

logon drive especifica la ruta local al cual se conectarán los directorios home las estaciones de trabajo NT. Tenga en cuenta que esta opción sólo es válida si Samba está configurado como logon server.

logon script especifica el fichero de lotes (.bat) o fichero de comandos NT (.cmd) que el cliente tiene que cargar y ejecutar cuando se conecta correctamente al dominio. El fichero debe tener el estilo de fin de línea de DOS (cr/lf). Se recomienda usar un editor estilo DOS para crear este fichero. El script debe ser relativo al path del servicio [netlogon]. Si el servicio [netlogon] especifica un path de /var/samba/netlogon y logon script = CONEX.BAT, entonces el fichero que se carga será:

/var/samba/netlogon/CONEX.BAT

El contenido del fichero está enteramente a disposición del administrador. Se puede poner NET TIME \\SERVIDOR /SET /YES, para forzar a cada máquina que sincronice su reloj con el del servidor. Otro que se podría añadir sería NET USE U: \\SERVER\PROGRAMAS para las utilidades de uso común. Observe que es particularmente importante no permitir acceso de escritura al servicio [netlogon] o de escritura sobre los ficheros de lotes, o le permite a los usuarios modificar arbitrariamente los ficheros batch y comprometer la seguridad. Esta opción también toma las sustitucions estándar, permitiéndole tener scritps de logon separados para cada usuario o máquina.
Gestión de cuentas

Parte de la gestión del controlador del dominio se puede realizar de forma remota. Hay situaciones en las que el PDC tiene que añadir una cuenta d eusuari o grupo nueva y tenemos que enesñarle a hacerlo. Por ejemplo, cada máquina que se agrega al dominio necesita una cuenta de máquina en el servidor y lo ideal es que se cree automáticamente. También es posible, desde un cliente NT, añadir o eliminar grupos o usuarios. Los siguientes parámetros no facilitan el desarrollo de todas estas acciones.

add user script: Esta opción permite a Samba crear los usuarios UNIX requeridos bajo demanda cuando, porejemlo, un usuario del dominio que no está dado de alta en el servidor SAMBA accede al servidor Samba. Por ejemplo, podríamos poner:

add user script = /usr/sbin/useradd -d /dev/null -s /bin/false -g samba -M %u

add machine script: Esta opción se ejecutará cuando agregue una máquina a su dominio. Los nombres de máquina terminan en “$”. Por ejemplo, nos podría servir:

add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev /null -s /bin/false %u

El resto de los parámetros tienen una características similares:

add user to group script = /usr/sbin/groupmod -m “%u” “%g”
delete user script = /usr/sbin/userdel “%u”
delete group script = /usr/sbin/groupdel “%g”
delete user from group script = /usr/sbin/groupmod -x “%u” “%g”
set primary group script = /usr/sbin/usermod -g “%g” “%u”

El recurso NETLOGON

El recurso NETLOGON, como ya hemos visto en la descripción de los parámetros de configuración del PDC. Juega un papel central en las sesiones de dominio y en el soporte de la pertenencia al dominio. Este recurso está presente en todos los controladores de dominio Microsof. Se usa para proporcionar guiones o scripts de conexión, almacenar ficheros de políticas de grupo (NTConfig.POL) y otras herramientas que pueden ser necesarias para procesar las sesiones. Es un recuros esencial en un controlador de dominio.
Recurso PROFILES

Este recurso se usa para guardar los periles del escritorio. Cada usuario tiene que tener un directorio en la raíz de este recurso. Este directorio tiene que tener permiso de escritura para el usuario y tiene que tener permiso de lectura global.
Gestión de los usuarios del dominio

Primero creamos un grupo para incluir a todos los usuarios de Samba que vamoms a compartir en la red:

groupadd samba

Con esto hemos creado un grupo llamado samba en el cual vamos a integrar a todos los usuarios

Ahora tenemos que agregar los usuarios al dominio en la máquina con samba. En primer lugar es necesario, para la base de datos de usuarios que hemos elegido, que cada usuario de Samba tenga una correspondencia con un usuario Unix. Entonces ejecutaremos:

useradd -s /bin/false -g samba usuario

Si el usuario tuviera que hacer ciertas operaciones con el servidor podríamos asignarle otra shell, es decir cambiamos /bin/false por /bin/bash

Una vez que tenemos creado el usuario Unix, agregamos ese usuario a Samba:

smbpasswd -a usuario

y con esto hemos terminado la configuración del servidor.

Ahora reiniciamos Samba:

/etc/init.d/smb restart

LogWatch: el reporte de logs

November 6th, 2007

Una práctica recomendable como buen administrador es revisar los logs del sistema para comprobar el buen funcionamiento del mismo. Esta tarea es bastante pesada porque en un sistema servidor habrá mucha actividad y estos ficheros pueden llegar a crecer bastante día a día. Como no podía ser menos alguien creó una herramienta que nos facilitara enórmemente esa tediosa labor. LogWatch es una analizador de logs que se ejecuta cada noche y te envía un correo con los resultados.

es tan simple de instalar: apt-get install logwatch y listo..!!

y estas son algunas de las lineas para configurar:

para imprimir en pantalla todo el rango de los logs de sistema, que
encuentre en /var/log:

logwatch --print --detail High --archives --range All

para imprimir en pantalla solo el ultimo dia:

logwatch --print --detail High --archives --range Today

para que el reporte sea guardado a un archivo:

logwatch --save logwatch.txt --detail High --range Today

para que sea enviado por mail:

logwatch --save logwatch.txt --mailto fulanito@dominio.com.ar --detail
High --range Today

y la caracteristica completa, la podes revisar aqui:

http://linux.die.net/man/8/logwatch

Script para espacio de disco

November 6th, 2007

cuantas veces, nos paso que nos quedamos sin espacio de disco ? o armar algo para que nos informe via mail, o a traves de un archivo el espacio libre del disco ?

con este script simple, podremos solucionarlo y armarlo como querramos:


#!/bin/sh

df -hP | grep '^/dev/' | \
sed 's/\([^[:space:]]\{20,\}\)\(.*\)/\1\n \2/’

como resultado (ejemplo):


/dev/hda2 5.5G 1.6G 3.7G 30% /

Escanear todos los puertos con nmap

August 31st, 2007

Ayuda Memoria :

Para escanear todos los puertos de una maquina :

# nmap -sS -p0-65535 -P0 -T4 --osscan_limit --osscan_guess --host_timeout 15m --max-retries 0 --min_parallelism 100 --max_parallelism 500 -O -oX -V [IP]

asi de simple, asi de fuerte. :P

scp y ssh sin contraseña

August 17th, 2007

A la máquina a la cual nos queremos conectar le llamaré servidor, y la máquina que usamos para conectarnos cliente.

En la máquina cliente tenemos que generar el par de llaves: pública y privada. Para hacerlo hacemos:


ssh-keygen -t rsa

y nos pedirá la llave privada. Esa llave puede ser diferente a cualquiera anterior, y tiene que ser difícil. Solo lo tendremos que escribir una vez “al día”, a la sesión, etc.

Sólo quien tiene la llave privada puede encriptar el “flujo” para que sea desencriptado por nuestra clave pública residente en el servidor. Esa es una forma que el servidor sabe seguro que somos realmente nosotros quien está conectado a él.

Veremos algo así:

demos@tux:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demos/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demos/.ssh/id_rsa.
Your public key has been saved in /home/demos/.ssh/id_rsa.pub.
The key fingerprint is:
da:a1:f3:22:sd:1a:fc:hc:71:s:21:n4:j5:11:g5:0i demos@tux

(Cuando nos pide el fichero podemos presionar Enter)
Hacemos un chmod -R .ssh para asegurarnos que id_rsa sólo lo podamos leer nosotros (Debian ya pone los permisos de id_rsa bien por defecto).

Hecho eso tenemos que enviar el id_rsa.pub a la máquina servidor y añadirle el contenido en el fichero $HOME/.ssh/authorized_keys. P. ej., en la máquina servidor hacemos:


cat id_rsa.cliente >> $HOME/.ssh/authorized_keys

(o sencillamente con un copiar-pegar en nuestro editor de texto)

Para tener las ideas claras, en authorized_keys tenemos las llaves de quien nos puede conectar a nosotros (si nosotros queremos conectar de servidor a cliente tenemos que hacer el key-gen -t rsa en el servidor y ponerlo en el authorized_keys del cliente.

En el fichero de configuración (/etc/ssh/sshd_config)del servidor tenemos que tener al menos:


Protocol 2
PubkeyAuthentication yes

Entonces un /etc/init.d/ssh restart (para que relea el fichero de configuración)y desde cliente podemos hacer ssh servidor, nos pedirá la “passphrase” introducida anteriormente y entraremos en servidor. Si tenemos servidor1, servidor2, servidor3… entraremos en cualquier servidor con la misma “passphrase”. Si no hemos puesto nada de “passphrase” podremos entrar en cualquier servidor sin tecler nada (ssh servidor)

Ahora usaremos el ssh-agent y ssh-add para no tener que poner cada vez la “passphrase”.


demos@tux:~$ ssh-agent /bin/bash

Eso lo que hace es ejecutar un /bin/bash pero ssh-agent nos guardará las llaves privadas para los hijos de /bin/bash (todo lo que ejecutemos a partir de ese Bash)

Entonces hacemos:


demos@tux:~$ ssh-add
Enter passphrase for /home/demos/.ssh/id_rsa:
Identity added: /home/demos/.ssh/id_rsa (/home/demos/.ssh/id_rsa)
demos@tux:~$

A partir de ese momento podemos hacer ssh servidor y entraremos al servidor sin que nos pida ninguna contraseña. Evidentemente tambien funciona scp fichero servidor:~ (para copiar fichero al $HOME del servidor).

Si queremos tener esa capacidad en todo el entorno X, podemos, o bien hacer el ssh-agent /bin/bash despues de arrancar (o de forma automática, etc.) o bien ponemos en nuestro $HOME/.xinitrc algo como:


demos@tux:~$ cat .xinitrc
ssh-agent /usr/X11R6/bin/icewm

De esa forma, dentro de todo nuestro escritorio/gestor de ventanas tendremos activado el ssh-agent y con un sólo ssh-add añadimos nuestra llave privada.

(En caso que quisieramos que un proceso que no es hijo del ssh-agent tenga acceso a las llaves tendriamos que ponerle las variables de entorno $SSH_AUTH_SOCK y SSH_AGENT_PID hacia el mismo valor que a los hijos de ssh-agent.)

Tambien podemos poner un icono que ejecute:


xterm -T "ssh servidor" -bg black -fg lightgray -e ssh servidor

y de esa forma tenemos con un solo click una xterm en un servidor remoto sin más preocupaciones.

Si nos ausentamos del escritorio y queremos que ssh-agent olvide nuestra llave, hacemos:


demos@tux:~$ ssh-add -D
All identities removed.

ssh-agent soporta varias identidades y ssh-add tiene más opciones (bloquear las identidades, dar un período de tiempo, etc.) pero lo podéis ver en el man o en la misma ayuda de los programas, ya que para un uso normal no hará falta.

para mas info:

Bulma: SSH con contraseña pública/privada
blog de Enrique Barbeito García
OpenSSH Public Key Authentication

Comprobar conectividad

August 15th, 2007


#!/bin/sh
# Respuesta $? (0 si todo es OK)
UNO=`ping -c 1 google.com.ar`
echo $?

Redirigir a /dev/null y 2>&1 para que los errores stderr (2) vayan al mismo sitio que la stdout (1):

UNO=`ping -c 1 google.com.ar`
echo $?

PEPE =`ping -c 1 yo.com.ar > /dev/null 2>&1`
echo $?

Obtener IP actual

August 15th, 2007


#!/bin/sh
# Obtener la ip actual
IP_ARA=`/sbin/ifconfig eth0 | grep 'inet ' | awk -F '[ :]+’ ‘{print $4}’`
echo $IP_ARA

Búsqueda avanzada

August 15th, 2007

Hacer un guion de shell que muestre todos los ficheros del directorio $2 que contengan la palagra que se le pase como argumento $1:


#!/bin/bash

# $1 patron
# $2 directorio en el que buscar

echo -e "******* busca.sh *******"

grep -r $1 $2* | cut -f1 -d: | sort -u
tot=`grep -r $1 $2* | cut -f1 -d: | sort -u | wc -l`

echo -e "************************"
echo -e " $tot ocurrencias encontradas"
echo -e "******* busca.sh *******"

Redimensionando imágenes

August 15th, 2007

Si hay algo que me molesta es la monotonía de tareas en masa. Cuando hay un directorio lleno de fotos enormes que reducir de tamaño podemos hacer 2 cosas coherentes: Programar una macro que automatice el proceso de redimensionado de imágenes siempre y cuando dicho software lo soporte (ni lo sé ni me interesa) o usar el poder de la consola tirando de convert:

# cd ~/masde1000fotos/
# for f in `ls`; do convert $f -resize 510x383 $f; done

Concretamente estamos pasando fotos de 1280×960 a un tamaño relativamente considerable: 510×383 (conservando las proporciones).