Quiero configurar un trabajo RSync que se conecte a través de SSH.
Tengo mi computadora ( backup@myhost ) y el host remoto ( test@remhost ) y necesito hacer una copia de seguridad de la carpeta ~/something con todo su contenido. La prueba de usuario ssh solo tiene acceso de LECTURA a todos los archivos y carpetas en la carpeta ~/. Quiero usar rsync para copiar la carpeta test@remhost:~/something a la carpeta backup@myhost:~/bak.
Para ello utilizo el siguiente comando a través de BASH en Ubuntu 11.10 (Oneiric):
rsync -avz -e ssh test@remhost:~/something/ ~/bak/
Después de presionar enter me sale esto:
test@remhost's password:
Escribo la contraseña y el rsync funciona.
Quiero realizar el comando anterior para ingresar automáticamente la contraseña y pasarla como parámetro o ingresarla automáticamente e iniciar el trabajo.
Intenté ejecutar rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/
pero todavía me pide la contraseña y es molesto.
No quiero oír hablar de ningún tipo de claves (RSA, DSA o cualquier otra). Sólo quiero un comando simple que me permita iniciar sesión y hacer el trabajo.
EDITAR:Un posible escenario podría ser que la autenticación de clave pública esté deshabilitada y no pueda cambiar esto. Por ejemplo, si usa OpenSSH, necesitará privilegios de root en el servidor para poder editar el archivo sshd_config
y agregar PubkeyAuthentication yes
.
EDITAR:Esto es lo que finalmente funcionó para mí:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Tenga en cuenta que este método no se considera seguro ya que envía la contraseña en texto sin formato y es vulnerable a ataques de intermediario. Se recomienda utilizar la autenticación de claves para mayor seguridad.
Respuesta1
tal vez intente paso ssh.
Parece bastante simple de usar... también está disponible a través de apt.
Estaba buscando algo como esto antes de copiar mis claves, pero como ya tengo mi clave en todos los lugares que necesito, no me he tomado el tiempo para probar esto.
Sin embargo, tenga en cuenta el descargo de responsabilidad en ese tutorial con respecto a la visibilidad de su contraseña.
Para todos los que necesitan hacer esto:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Respuesta2
Una variación de su solución que es más segura frente a las amenazas de seguridad es almacenar su contraseña en un archivo con permisos estrictos y usar la -f
bandera con shpass
:
sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/
La diferencia es que enumerar los procesos en ejecución no mostrará su contraseña en la línea de comando, ahora solo mostrará la ruta al archivo en el que se encuentra su contraseña.
Respuesta3
No puedo imaginar ninguna situación en la que la autenticación de clave pública sin frase de contraseña no sea la mejor solución para los inicios de sesión automatizados ssh/rsync.
De todos modos expect
debería haber una manera de lograr lo que quieres hacer. No puedes canalizar la contraseña a ssh, pero esto es algo muy similar. Cómo hacerlo, se responde.aquí en stackoverflow.
Respuesta4
Esto también funciona:
system <<~ "RSYNC";
rsync \\
--rsh="sshpass -p '$password' ssh -p 22" \\
--archive \\
--verbose \\
--progress \\
--partial \\
--human-readable \\
"$directory" \\
"$options{host}:${directory}"
RSYNC
es decir. Pasando sshpass
en --rsh
lugar de delante dersync
Este método junto con el uso de la SSHPASS
variable de entorno se describe en la sección Ejemplos del manual: