remoto clave ssh passwords rsync

clave - cómo pasar la contraseña para el comando rsync ssh



rsync remoto (11)

Necesito hacer rsync por ssh y quiero hacerlo automáticamente sin necesidad de pasar la contraseña para ssh manualmente.


Aunque ya lo hayas implementado,

también puede usar cualquier implementación de expect (encontrará alternativas en Perl, Python: pexpect, paramiko, etc.)


Automáticamente ingrese la contraseña para el comando rsync es difícil. Mi solución simple para evitar el problema es montar la carpeta de la que se realizará la copia de seguridad. Luego use un comando rsync local para hacer una copia de seguridad de la carpeta montada.

mount -t cifs //server/source/ /mnt/source-tmp -o username=Username,password=password rsync -a /mnt/source-tmp /media/destination/ umount /mnt/source-tmp



Otra posibilidad interesante: 1. generar el par de claves RSA o DSA (como se describió) 2. poner la clave pública en el servidor (como ya se describió) 3. ejecutar:

rsync --partial --progress --rsh="ssh -i dsa_private_file" host_name@host:/home/me/d .

Nota: -i dsa_private_file que es su clave privada RSA / DSA

Básicamente, este enfoque es muy similar al descrito por @Mad Scientist, sin embargo, no tiene que copiar su clave privada a ~ / .ssh. En otras palabras, es útil para tareas ad-hoc (acceso de una sola vez sin contraseña)


Puede evitar la solicitud de contraseña en el comando rsync configurando la variable de entorno RSYNC_PASSWORD en la contraseña que desea usar o utilizando la opción --password-file.


Si no puede usar una clave pública / privada, puede usar expect:

#!/usr/bin/expect spawn rsync SRC DEST expect "password:" send "PASS/n" expect eof if [catch wait] { puts "rsync failed" exit 1 } exit 0

Deberá reemplazar SRC y DEST con los parámetros de fuente y destino rsync normales, y reemplazar PASS con su contraseña. ¡Solo asegúrese de que este archivo esté almacenado de forma segura!


Siguiendo la idea publicada por Andrew Seaford, esto se hace usando sshfs:

echo "SuperHardToGuessPass:P" | sshfs -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]:/mypath/ /mnt/source-tmp/ -o workaround=rename -o password_stdin rsync -a /mnt/source-tmp/ /media/destination/ umount /mnt/source-tmp


Use la utilidad del proveedor de contraseñas sshpass "no interactiva ssh password"

En Ubuntu

sudo apt-get install sshpass

Comando para rsync

/usr/bin/rsync -ratlz --rsh="/usr/bin/sshpass -p password ssh -o StrictHostKeyChecking=no -l username" src_path dest_path


Utilizo un archivo VBScript para hacer esto en la plataforma Windows, me sirve muy bien.

set shell = CreateObject("WScript.Shell") shell.run"rsync -a [email protected]:/Users/Name/Projects/test ." WScript.Sleep 100 shell.SendKeys"Your_Password" shell.SendKeys "{ENTER}"


el siguiente funciona para mi

SSHPASS=''myPassword'' /usr/bin/rsync -a -r -p -o -g --progress --modify-window=1 --exclude /folderOne -s -u --rsh="/usr/bin/sshpass -p $SSHPASS ssh -o StrictHostKeyChecking=no -l root" source-path myDomain:dest-path >&2

Tuve que instalar sshpass


usa una clave ssh:

mira ssh-keygen y ssh-copy-id .

Después de eso, puedes usar un rsync de esta manera:

rsync -a --stats --progress --delete /home/path server:path