19 votos

Cómo realizar un seguro rsync entre servidores a través de una red no segura

Básicamente lo que estoy preguntando es, ¿alguien ha llegado a través de un medio por el cual para envolver rsync dentro de ssh.

Con OpenSSH v4.9+ sftp tiene algunas opciones que permiten chroot la conexión entrante y que tal y que es una solución que me gustaría ver, sin embargo estoy atascado con red hat enterprise linux, y ni RHEL4 o RHEL5 son hasta que la versión de ssh.

Mi solución actual es añadir algo como esto para el lado del servidor utilizando el cliente de claves del usuario...

el servidor% cat ~/.ssh/authorized_keys
comando="cd /srv/rsync/etl && tar --exclude './lost+found' -pcf - ./" ssh-rsa...

...y así el cliente se limita a una cosa y sólo una cosa...

cliente% ssh-T-i ${HOME}/.ssh/id_rsa oracle@database.com > sensative.tar

Esto asegura la conexión, así como el servidor (del cliente), sin embargo es ineficiente, ya que todos los archivos se recuperan una y otra vez.

Estoy después de hacer algo similar (o mejor) usando rsync.

18voto

Dave Cheney Puntos 13302

Rsync es compatible con el uso de ssh como medio de transporte

rsync -az /path/to/source username@host:/path/to/destination

algunas versiones anteriores de rsync requieren que se especifique explícitamente ssh

rsync -aze ssh /path/to/source host:/path/to/destination

Una alternativa al uso de rsync es B. C. Pierce Unísono, que tiene una funcionalidad similar a la de rsync, pero mantiene un índice local en ambos extremos para evitar tener que recorrer el sistema de archivos para calcular los deltas

5voto

Xerxes Puntos 3005

Bueno finalmente me di cuenta de esto, pero la solución no es tan elegante como yo esperaba.

Uno en el lado del servidor, es necesario añadir lo siguiente al archivo authorized_keys para el usuario...

no-pty, command="exit"

En el cliente, a continuación, puede crear un túnel de la siguiente manera...

ssh -l username -fNTL 8073:server:873

Una vez que el túnel está establecida, puede rsync como es habitual - el uso de los dos puntos de la sintaxis no es posible - a localhost.

El localhost número de puerto que usted seleccione (8073) son totalmente opcionales, obviamente, sólo recuerda que eso es lo que tienes que rsync para...

rsync --port=8073 -a user@localhost::mySecureStore /srv/some/place/

2voto

17 of 26 Puntos 15941

Usted podría estar interesado en demonio sobre ssh-mode, que es el objeto de esta pregunta:

http://serverfault.com/questions/6367/cant-get-rsync-to-work-in-daemon-over-ssh-mode

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: