Posteado por: Jesus | 27 marzo, 2008

Conexión con SSH sin contraseña

Llevo unos días dando vueltas a un script para hacer un backup de varios servidores, sobre un disco duro externo. El backup es tanto de un ordenador local, como de un ordenador remoto.

Después de algún problema, parece que ya esta funcionando.

Uno de los problemas ha sido ejecutar rsync sobre ssh sin pedir contraseñas. En muchas paginas sale muy bien explicado como hacer este proceso, pero he encontrado otro modo mas sencillo.

Lo primero es generar las claves de ssh:

jesus@local:~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/jesus/.ssh/id_dsa):
Created directory '/home/jesus/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jesus/.ssh/id_dsa.
Your public key has been saved in /home/jesus/.ssh/id_dsa.pub.
The key fingerprint is:
62:19:4d:7a:39:bc:11:3f:52:21:4a:6b:32:0b:ed:8f jesus@local

Ahora sólo queda transferir la clave pública al servidor remoto, al que queremos conectarnos mediante ssh. Para eso tenemos el programa ssh-copy-id que hace el trabajo:

jesus@local:~$ ssh-copy-id -i .ssh/id_dsa.pub jesus@remoto
jesus@local's password:
Now try logging into the machine, with "ssh 'jesus@remoto'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

Mas sencillo imposible, la verdad que no conocia el comando ‘ssh-copy-id‘.

El Script del Backup, ha quedado de momento de esta manera:

#!/bin/sh
# Direccion IP del Servidor
BSERVER=1.2.3.4
# Fichero de configuracion archivos NO backup
EXCLUIR=/etc/backup/excluir.conf
# Fichero de Password para Backup
PASSWORD_FILE=/etc/backup/password.rsync
#OPCIONES
OPS="--ignore-errors --delete-excluded --exclude-from=$EXCLUIR --password-file=/etc/backup/password.rsync -av --delete --numeric-ids --stats --timeout=3600"
#QUE BACKUP HACEMOS
BACKUP=home
#DONDE ALMACENAMOS EL BACKUP
DESTINO=/media/backup
#DONDE GUARDAMOS EL BACKUP
CARPETA=CARPETA-DESTINO
#COMPROBAMOS SI ESTA MONTADO EL DISCO DURO
if df |grep -q $DESTINO
then
#Directorio montado
echo 'Comezamos Ordenador Local...'
rsync $OPS $BSERVER::$BACKUP $DESTINO/$CARPETA/
echo 'Fin de Ordenador Local ...'
echo 'Comenzamos Ordenador Remoto...'
chown usuario.grupo-remoto /media/usbdisk/grupo-remoto/usuario -R
su - usuario -c "rsync $OPS --progress -z -e 'ssh -c blowfish-cbc' usuario@grupo-remoto: $DESTINO/BACKUP/"
chown usuario.grupo-remoto /media/usbdisk/grupo-remoto/usuario -R
echo 'Fin de grupo-remoto'
umount $DESTINO
sync
else
# Carpeta no montada
#exit -1
echo 'Creando punto de montaje.'
mkdir $DESTINO
mount -t ext3 /dev/sde1 $DESTINO
if df |grep -q $DESTINO
then
echo 'Comenzamos Servidor ...'
rsync $OPS $BSERVER::$BACKUP $DESTINO/$CARPETA/
echo 'Fin de Servidor ...'
echo 'Comenzamos grupo-remoto ...'
chown usuario.grupo-remoto /media/usbdisk/grupo-remoto/usuario -R
su - usuario -c "rsync $OPS --progress -z -e 'ssh -c blowfish-cbc' usuario@grupo-remoto: $DESTINO/BACKUP/"
chown usuario.grupo-remoto /media/usbdisk/grupo-remoto/usuario -R
echo 'Fin de grupo-remoto'
umount $DESTINO
sync
if df |grep -q $DESTINO
then
echo 'Carpeta Montada???.'
else
echo 'Borrando punto de montaje.'
rm -rf $DESTINO
fi
else
# NO PODEMOS HACER EL BACKUP
echo 'Error: no se puede realizar el backup,carpeta destino NO MONTADA.'
exit -1
fi
fi

Anuncios

Responses

  1. No esta mal pero deberias ponerlo mas ordenado


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: