[How to] Configurar rsync con ssh en Windows XP con cwRsyncServer para hacer Backups de Ubuntu a Windows.

Imagen de Huelva
0 puntos

Hola, normalmente cuando queremos hacer copias masivas y recurrentes de seguridad usamos el rsync. No suele haber excesivos problemas en su uso y esta muy bien documentado. El problema me ha surgido cuando he querido hacer una copia de seguridad de cosas criticas fuera del servidor Linux, a unos 600 km (por eso de si sale todo ardiendo) y sobre una maquina windows XP pro.

CLIENTE: (ubuntu 8.10) -----> rsync -----> Internet ----> rsync server (con y sin ssh) SERVIDOR (Windows XP)

A priori si queremos sacar los datos por rsyncd (rsync con contraseña y sin encriptar) lo mas recomendable es instalar en la maquina windows el programita gratuito "DeltaCopy" http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp que le permitirá al usuario de windows configurar el rsync a golpe de ratón, lo cual es realmente fácil. El problema es que delta copy no trae por defecto el servidor ssh (aunque he leído virguerias por ahi). Como es tan fácil configurarlo como indicar el nombre de la configuración del rsync, poner el directorio, usuario y contraseña pues no me meto mas en explicarlo.

La única particularidad en windows para rsyncd es poner el ClientCharset utf8

INSTALACIÓN RSYNC CON SSH EN XP

Cuando queremos instalar el rsync con ssh la cosa se complica, yo lo he probado todo y lo mas fácil de instalar es el cwRsyncServer 2.1.5 que trae todo integrado. La versión 3 es bastante mas complicado ya que no viene integrado, y las otras opciones como es el cygwin pues también se complica bastante, aunque todos utilizan el cygwin como base.

Así pues nos lo bajamos el cwRsyncServer 2.1.5 de http://sourceforge.net/projects/sereds/files/cwRsync/
Si no lo encontráis os dejo el archivo aquí:
https://mega.co.nz/#!1IRgxSrJ!dzYFzmFYQVdknynGQmpQvU7tJ_Vmf7g2X_OU4A3pX6c

He visto que han salido versiones nuevas, por lo que he visto las versiones recientes no tienen SSH, así que instalar la 2.1.5.

EDITO: Me he percatado de que en unos ordenadores funcionaba bien y en otros mal. Por lo visto se debe a que la versión de rsync que trae el csRsync 2.1.5 es inferior a 3.0.0 y tiene un bug por tanto tengo que modificar este tutorial.

Por otro lado en este caso hay que usar ClientCharset cp1252

Le damos al botón de instalar y se instala por defecto en C:\Archivos de programa\cwRsyncServer que no es mal sitio.MUY IMPORTANTE COPIAR USUARIO Y CONTRASEÑA

EDITO: una vez instalado la versión 2.1.5 con ssh instalermos la ultima versión disponible de csRsyn
https://www.itefix.no/i2/content/cwrsync-free-edition

En el momento de editar este tutorial era la 4.0.5 y no tuve problemas, como antes os cuelgo el archivo por aqui no vaya a ser que desaparezca
https://mega.co.nz/#!FFpFRTbR!Fx2X1gcaM1xK4xAeViGjxwnw0f4CqjNqbxJT4SnogWI

La única precaución es poner el mismo usuario y contraseña que antes, por eso de no tener de todo repartido.

Si vamos a los servicios de windows veremos que hay dos nuevos servicios, el Openssh SSHD y el RsyncServer. Los podemos arrancar independientemente (según queramos acceder solo por ssh o solo por rsyncd o de ambas maneras) y para que al iniciar windows arranquen ambos entramos en el servicio lo arrancamos y lo ponemos en auto.

Realmente tenemos dos servicios independientes, el Rsyncserver coge los ficheros de configuración C:\Archivos de programa\cwRsyncServer y el Openssh en referencia a rsync los coje de C:\Archivos de programa\cwRsyncServer\home\elusuario siendo el usuario normalmente "Administrador" y lo haremos así para este ejemplo. Se supone que poniendo los archivos rsyncd.conf en ambas carpetas ya basta, pues lo malo del asunto es que no acaba aquí, pero vamos por partes

CONFIGURACIÓN DEL RSYNCD

Concepto previo:

El rsync trabaja con el cywing (emulador de linux en windows), cuando estamos en windows y nos metemos dentro del sistema "linux virtual" estamos realmente en C:\Archivos de programa\cwRsyncServer y para salirnos fuera hay que seguir la ruta virtual mas la real "/cygdrive/"+"t/Backup"

Programamos el rsyncd.conf (para cada servicio) quedando una pinta como esta:


use chroot = false
strict modes = false
log file = rsyncd.log
pid file = rsyncd.pid
host allow = *
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[PRUEBA]
path = /cygdrive/t/Backup
read only = false
transfer logging = yes
auth users = Administrador
secrets file = /cygdrive/c/rsyncd.secrets

el secrets file para ssh no hace falta, pero para el rsyncd si, y es un archivo muy simple "Administrador:clave" con un enter al final, si no, no lo lee. y ya ta, muy facil y normalmente no da problemas.

CONFIGURACION DEL SSH

En la instalación se suponía que se habían generado unas claves para el ssh pero las que ha generado no valen ya que son del usuario que instala en windows no del que recibe en linux.

Para la certificación en ssh sin tener que teclear cada vez que se accede desde una máquina remota, básicamente hay que generar claves en el lado Host (el que interroga) y Server (el que tiene el servicio abierto y espera), después se coje la clave publica del Host (id_rsa.pub) y se coloca en authorized_keys del Server, al conectar por primera vez el host registrará en su know_hosts una clave del server...

El comando para generar las claves es ssh-keygen -t rsa te pones como usuario del que va a generar la consulta en el linux, lo ejecutas y te da en su carpeta /home/usuario/.ssh/ las dos claves, se supone que copias la publica en el archivo authorized_keys (a veces es authorized_keys2) del server y resuelto.

Particularmente no permitiría la autentificación con usuario, solo por certificado, al fin y al cabo esto es windows y es cuestión de tiempo que nos entren por fuerza bruta, aqui no hay programitas para cerrar el puerto. Con el certificado es casi imposible entrar.

PROBLEMAS

La configuracion del ssh, se hace con los ususarios de windows, y por tanto hay que Sincronizar los usuarios de linux (que realmente esta corriendo dentro de la maquina de windows) y windows: por tanto en una consola de linux que viene con el cwRsyncServer ejecutar

mkpasswd -cl > /etc/passwd
mkgroup --local > /etc/group

Otro problema es que por error de instalación no crea los directorios de los usuarios "server", basicamente el Administrador o el usuario que reciba el ssh. Hay que crear el el directorio de instalación de cwRsyncServer/home/Administrador/.ssh/ para que ahí dentro se pueda dejar un archivo el authorized_keys


mkdir /home/Administrador
mkdir /home/Administrador/.ssh

También hay que descomentar la linea "AuthorizedKeysFile .ssh/authorized_keys" del fichero "sshd_config" que esta en el directorio /etc/ (dentro del direcotorio de instalacion del cwRsyncServer)

El ssh no funcionara si hay excesivos permisos de las carpetas y archivos, por tanto hay que limitarlo con chmod

$ chmod 700 /home/administrador
$ chmod 700 /home/administrador/.ssh
$ chmod 600 /home/administrador/.ssh/authorized_keys

El último problema es el de los propietarios, resulta que si todos los directorios y archivos del usuario virtual linux que están dentro de windows (C:\Archivos de programa\cwRsyncServer\home\"usuario")que en mi caso son: Administrador, .ssh y el archivo authorized_keys tienen que ser del usuario del server con el que tratamos de entrar (Administrador en nuestro caso) si no pues tampoco funciona, normalmente hay que cambiarlo desde la consola con el comando


chown -R nuevopropietario /rutadelarchivo

Todos estos trucos son relativamente evitables si vamos a utilizar el usuario que ha intalado todo y si con ese usuario creamos la carpeta del usuario en C:\Archivos de programa\cwRsyncServer\home\ y posteriormente creamos el archivo y los directorios desde el mismo usuario de windows. Lo que no nos quita nadie es el tema de permisos y el de sincronizar los usuarios de windows y linux.

Y con todo esto debiera de funcionar después de un reinicio del servicio, vamos que ahora ya podemos ejecutar el comando para generar las claves ssh-keygen -t rsa desde la consola linux.

Por defecto nos guardará las llaves en /documents and settings/propietario/ssh, estas llaves no las necesitamos usar (copiar).

Lo que si necesitamos para poder entrar en la máquina XP es copiar la id_rsa.pub de la máquina que pretende entrar en la nuestra dentro del fichero authorized_keys del /home/Administrador/authorized_keys. Si es el backuppc pues la del backuppc, si es el root del servidor linux pues esa, vamos cualquier usuario que pretenda entrar por ssh.

Comandos Rsync:
como no es el objeto de este tutorial explicar el funcionamiento del rsync me limito a poner los comandos rsync que yo utilizo desde linux sin ssh y con ssh.

rsyncd

/usr/bin/rsync --verbose --archive --recursive --update --delete --force --compress --password-file=/home/BackupRemotoConfig/rsync.secrets --stats --progress --files-from=/home/BackupRemotoConfig/listabackup --exclude-from=/home/BackupRemotoConfig/listaexcluirbackup /media/sda3/ Administrador@direcciondelxp::PRUEBA

consiste en hacer el rsync cogiendo el listado de carpetas a mandar del archivo "listabackup", excluyendo los archivos o directorios que vienen listados en "BackupRemotoConfig".

rsync ssh

/usr/bin/rsync -e ssh --verbose --archive --recursive --update --delete --force --compress --stats --progress --files-from=/home/BackupRemotoConfig/listabackup --exclude-from=/home/BackupRemotoConfig/listaexcluirbackup /media/sda3/ Administrador@direcciondelxp::PRUEBA

Ahora mandamos todo encriptado pero en la configuracion del rsyncserver no ponemos exclusividad de usuario y contraseña

rsyncd ssh
/usr/bin/rsync -e ssh --verbose --archive --recursive --update --delete --force --compress --stats --progress --password-file=/home/BackupRemotoConfig/rsync.secrets --files-from=/home/BackupRemotoConfig/listabackup --exclude-from=/home/BackupRemotoConfig/listaexcluirbackup /media/sda3/ Administrador@direcciondelxp::PRUEBA

Es la suma de los dos anteriores, lo mandamos encriptado pero además con usuario y contraseña, la verdad es que no tiene sentido si no es porque en el servidor tengamos enlaces simbólicos en vez de archivos para tenerlo todo unificado con la misma configuración mandase o no codificado. Yo lo utilizo para facilitarle al usuario de XP la configuración ya que la hace desde el programa DeltaCopy y se la copio para el uso de en cwRsyncServer ssh.

Todo estos consejos también son validos para hacer backups de windows con Backuppc en ubuntu (muy recomendable) ya que puedes configurar el backuppc con "rsync ssh" o bien con "rsyncd" y funiona perfectamente, aunque lógicamente lo mas facil es usar "rsyncd" y el programita DeltaCopy

P.D.
Por cierto, "Huelva" no es el nick por el que la gente me conoce, yo me suelo llamar "SuperCurro" pero no se que pasa en ubuntu.es que no me llegan los correos de la web a mi cuenta y no hay manera de contactar con el administrador para corregirlo.

Salu2

Imagen de Huelva
+1
0
-1

Me he encontrado con un problema que deriva (tras noches de estudios) de la versión rsync del cwRsync 2.1.5

El truco para arreglarlo está chupao... se machaca con la última versión del cwRsync que nos deja el ssh anterior. (chupao cuando lo sabes, cuando no sabes que es lo que falla son varias noches sin dormir).

Salu2 desde Valencia.

+1
0
-1

Ubuntu 8.10 -> 14.04

Imagen de Huelva
+1
+1
-1

Bueno, le tocó el turno a W8. Nada de lo de arriba funciona, básicamente porque no reconoce el authorized_keys... así que he tenido que probar muchas cosas.

La guía básica
http://www.larsavery.com/blog/how-to-install-sshd-secure-shell-server-on...

Con estos extras
http://www.taringa.net/posts/linux/15562479/Configuracion-de-OpenSSH-en-...
Enter the value of CYGWIN for the daemon: [] binmod ntsec

http://www.davemalpass.com/cygwin-install-on-windows-8-ssh-host-config-a...

por ultimo cree authorized_keys en el .ssh del usuario dandole los permisos
Curro@Pc-Game ~/.ssh
$ chmod 600 authorized_keys

y modifique el sshd_config

PasswordAuthentication no
PermitEmptyPasswords no

como remate final comprobemos

http://everythingshouldbevirtual.com/windows-8-cygwin-sshd-issue

+1
+1
-1

Ubuntu 8.10 -> 14.04