Necesito hacer rsync
por ssh
y quiero hacerlo automáticamente sin la necesidad de pasar la contraseña de ssh
forma manual.
111
Debe utilizar un archivo de claves sin frase de contraseña para los inicios de sesión ssh con script. Obviamente, esto es un riesgo para la seguridad, asegúrese de que el archivo de claves esté adecuadamente protegido.
ssh -i
siempre debería ser posible en el lado del cliente. ¿Quiere decir que es posible que el servidor no admita todos los tipos de claves (por ejemplo, ECDSA)? Sin embargo, eso no sería un problema importante, solo un caso de usossh-keygen -t
. ¿Me estoy perdiendo de algo?rsync -e
yssh -i
.Utilice la utilidad de proveedor de contraseñas ssh no interactivo "sshpass"
En Ubuntu
Comando para rsync
fuente
sshpass -p`cat .password` ssh [...]
. Luego, proteja su.password
archivochmod 400 .password
para asegurarse de que solo su usuario pueda leerlo.src_path
debería ser server: path, así:server01.mydomain.local:/path/to/folder
-a
encienda rsync incluye-rlptgoD
, puede acortar el comando de esta manera:rsync -az ...
Puede evitar la solicitud de contraseña en el
rsync
comando estableciendo la variable de entornoRSYNC_PASSWORD
en la contraseña que desea usar o usando la--password-file
opción.fuente
Si no puede usar claves públicas / privadas, puede usar esperar:
Deberá reemplazar SRC y DEST con sus parámetros de origen y destino rsync normales, y reemplazar PASS con su contraseña. ¡Solo asegúrese de que este archivo esté almacenado de forma segura!
fuente
Red Hat Enterprise Linux Server release 5.11 (Tikanga)
Lo hice funcionar así:
fuente
remote_port_ssh
establecería? Parece un marcador de posición para un valor real.Utilice una clave ssh.
Mira
ssh-keygen
yssh-copy-id
.Después de eso, puede usar de
rsync
esta manera:fuente
Otra posibilidad interesante:
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 es necesario que copie su clave privada en ~ / .ssh. En otras palabras, es útil para tareas ad-hoc (acceso único sin contraseña)
fuente
Lo siguiente funciona para mí:
Tuve que instalar
sshpass
fuente
Es difícil ingresar automáticamente la contraseña para el comando rsync. Mi solución simple para evitar el problema es montar la carpeta para respaldarla. Luego use un comando rsync local para hacer una copia de seguridad de la carpeta montada.
fuente
Aunque ya lo ha implementado,
también puede usar cualquier implementación de espera (encontrará alternativas en Perl, Python: pexpect, paramiko, etc.)
fuente
Utilizo un archivo VBScript para hacer esto en la plataforma Windows, me sirve muy bien.
fuente
La solución oficial (y otras) estaban incompletas cuando la visité por primera vez, por lo que volví, años después, para publicar este enfoque alternativo en caso de que otros terminen aquí con la intención de usar un par de claves pública / privada:
Ejecute esto desde la máquina de copia de seguridad de destino, que se extrae de la copia de seguridad de origen a la de destino
rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' [email protected]:/home/user/Server/ /home/keith/Server/
Ejecute esto desde la máquina de origen, que envía la copia de seguridad de origen a destino
rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' /home/user/Server/ [email protected]:/home/user/Server/
Y, si no está utilizando un puerto alternativo para ssh, considere los ejemplos más elegantes a continuación:
Ejecute esto desde la máquina de copia de seguridad de destino, que extrae de la copia de seguridad de origen a la de destino:
sudo rsync -avi --delete [email protected]:/var/www/ /media/sdb1/backups/www/
Ejecute esto desde la máquina de origen, que envía desde la copia de seguridad de origen a destino:
sudo rsync -avi --delete /media/sdb1/backups/www/ [email protected]:/var/www/
Si aún se le solicita una contraseña, debe verificar su configuración de ssh
/etc/ssh/sshd_config
y verificar que los usuarios en el origen y el destino tengan cada uno la clave ssh pública respectiva de los demás enviando cada uno conssh-copy-id [email protected]
.(Nuevamente, esto es para usar pares de claves ssh sin contraseña, como un enfoque alternativo, y no para pasar la contraseña a través de un archivo).
fuente
Siguiendo la idea publicada por Andrew Seaford, esto se hace usando sshfs:
fuente