Después de conseguir acceder por SSH a un servidor remoto de manera completamente automática usando autentificación por claves podemos usar esa ventaja para realizar backups de nuestras webs alojadas en servidores remotos. Solo nos hace falta que el servidor tengo instalado rsync (aparte de tener acceso mediante SSH, claro).

La manera más fácil es crear un simple script en bash y ejecutarlo automáticamente con cron.

Ver ejemplo del script

En la variable DATE guardamos la fecha actual, la usaremos para no sobreeescribir la base de datos y tener una copia de cada dia. Luego en HOST guardamos los datos de conexión SSH y en RUTA el directorio (local) donde queremos guardar la copia de los archivos de la web.

Luego, mediante rsync, sincronizamos los archivos y antes de sobrescribir o borrar un archivo en el PC destino lo guardamos en una carpeta con la fecha por si acaso. Después volcamos la base de datos con mysql. Entonces volveremos para copiar el archivo que hemos creado en el paso anterior y para acabar comprimimos en gzip el archivo SQL para ahorrarnos espacio en el disco (antes hemos usado la compresión en rsync para ahorrar transferencia).

Ahora pasamos a meter el script en cron para no volvernos a preocupar de el.
chmod +x backup
ln -s backup /etc/cron.daily/backup

No hay que olvidar de cambiar las variables HOST, RUTA y los datos de usuario, contraseña y nombre de la base de datos del backup con mysqldump.

Estás en un pc pero, ¿no tienes ningún cliente de correo a mano? y además… ¿tu cuenta de correo no tiene webmail? no estás perdido, siempre puedes utilizar el método pr0 para acceder a tus e-mails, con una consola telnet.

En Windows puedes hacer Inicio > Ejecutar > telnet y en Linux puedes escribir “telnet” en cualquier shell. Seguidamente te aparecerá el prompt de telnet y allí podrás escribir “open direcciondetuservidor.com pop3″.

Tras escribir eso verás algo como:

+OK Hello there.

Entonces escribes USER seguido de tu nombre de usuario:

USER user@email.dom

Aparecerá:

+OK Password required.
Entonces escribes PASS y seguidamente tu contraseña:

PASS unapassword

Si todo ha ido bien aparecerá:

+OK logged in.

Ahora puedes hacer “LIST” para ver la lista de mensajes, “RETR nummensaje” para ver un mensaje, “TOP nummensaje lineas” para ver un determinado número de líneas de cierto mensaje, “DELE nummensaje” para borrar un mesaje, “RSET” para marcar los mensajes como no leídos y “QUIT” para salir.

Por fin podrás leer tus correos como un pr0.

Desde hace un tiempo estoy utilizando una herramienta bastante útil para conocer qué dominios están alojados en cierto servidor. Se trata de “Reverse IP“, proporcionada por DomainTools. Esta herramienta permite, dada una dirección IP u host, averiguar cuantos dominios tiene alojados ese servidor. Es decir, si pones “www.pcfrikis.com” verás como aparecen otras webs como por ejemplo www.fitti.org, ya que comparten el mismo hospedaje.

Esto es posible porque DomainTools posee una base de datos con todos los dominios y periódicamente resuelve sus direcciones, es decir, transforma loquesea.com en una IP y la almacena en una base de datos. De esta forma tienen una relación de IP’s-dominios y pueden saber qué dominios están asociados a una IP. Si no es el método que utilizan almenos es una forma posible de hacerlo.

Ayer me encontraba con el problema de que para poder usar el rsync para realizar backups mediante un tunel SSH necesitaba que la autentificación fuera completamente automática y que no requiriera la acción del usuario para introducir la contraseña.

Para conseguir esto use la autentificación mediante claves. Este sistema consiste en crear nuestro par de claves y meter en el servidor al que deseamos conectaros nuestra clave publica. De esta manera al conectarnos se “compara� la clave publica (servidor) con la privada (nuestro PC).

El sistema es facil. Primero creamos las claves publicas si no están creadas ya (lo más probable es que lo esten), podemos elegir entre el cifrado DSA o RSA para SSH2 y RSA1 para SSH1.

Las claves suelen estar en ~/.ssh bajo el nombre de id_rsa/id_rsa.pub o id_dsa/id_rsa.pub (la extensión pub indica que es la clave publica). Si no están allí crearemos el par de claves con ssh-keygen -t rsa (o -t dsa). La contraseña la debemos dejar en blanco.

Ahora subir nuestra clave publica (*.pub) al servidor mediante FTP, SCP como queramos:
scp user@host.com:~/.ssh/id_rsa.pub ./ (el ejemplo es valido si estamos dentro del server y queremos copiar el archivo que esta en nuestro PC, de lo contrario las rutas irán invertidas).

Y para acabar solo debemos guardar nuestra clave publica en el archivo authorized_keys. Lo más fácil es:
cat id_rsa.pub >> /.ssh/authorized_keys

Ahora borramos el archivo ir_rsa.pub que hemos subido y procedemos a probar que podemos conectarnos sin contraseña.

Hay que tener en cuenta que nuestro user y root de nuestro PC no tienen las mismas claves por lo que si es para ejecutar un script mediante cron el cual lo ejecuta root debemos usar las claves de root que se encuentran en /root/.ssh. Por ultimo comentar que ~ se refiere a /home/user.