¿Cómo puedo configurar un rsync entre dos hosts sin proporcionar ninguna contraseña?
¿Cómo puedo configurar un rsync entre dos hosts sin proporcionar ninguna contraseña?
Respuestas:
A continuación se muestra el artículo de The Geek Stuff :
1. Pruebe rsync sobre ssh (con contraseña):
Haga una rsync para asegurarse de que solicite la contraseña de su cuenta en el servidor remoto y copie con éxito los archivos en el servidor remoto.
El siguiente ejemplo sincronizará la carpeta local
/home/test
con la carpeta remota/backup/test
(en el192.168.200.10
servidor).Esto debería pedirle la contraseña de su cuenta en el servidor remoto.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
2. ssh-keygen genera claves.
Ahora configúrelo
ssh
para que no solicite una contraseña cuando realice ssh. Úselossh-keygen
en el servidor local para generar claves públicas y privadas.$ ssh-keygen
Ingrese la frase de contraseña (vacía para ninguna frase de contraseña):
Ingrese la misma frase de contraseña nuevamente: Nota: Cuando le solicite que ingrese la frase de contraseña simplemente presione la tecla Intro y no ingrese ninguna contraseña aquí.
3. ssh-copy-id copia la clave pública al host remoto
Use
ssh-copy-id
, para copiar la clave pública al host remoto.ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.200.10
Nota: lo anterior solicitará la contraseña de la cuenta de usuario en el host remoto y copiará la clave pública automáticamente en la ubicación adecuada. Si ssh-copy-id no funciona para usted, use el método que discutimos anteriormente para configurar la contraseña de ssh sin iniciar sesión.
4. Realice rsync sobre ssh sin contraseña
Ahora, debería poder enviar ssh al host remoto sin ingresar la contraseña.
ssh user@192.168.200.10
Realice el rsync nuevamente, esta vez no debería pedirle que ingrese ninguna contraseña.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
Genarate la clave pública en ServerA
$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
La clave pública se generará y almacenará en
~/.ssh/id_rsa.pub
Copiar clave pública al host remoto
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100
O
~/.ssh/authorized_keys
. Crea el archivo si no existe. Asegúrese de que el modo de archivo sea 700.Todas estas sugerencias de rsync fallan al usar la última versión en agosto de 2017 en Ubuntu 16.04 LTS. Ninguno de ellos funciona.
También comparten la deficiencia de requerir que se ejecute un demonio rsync en el servidor de archivos.
Esta respuesta funciona con un NAS genérico de Linux
AQUÍ HAY PASOS:
1) USE rsync como se muestra a continuación. (a un directorio bajo / mnt o / media que haya creado o en un dispositivo que monte. No importa cuál) 2) TRANSFERIR archivos CON scp como se muestra a continuación. FileZilla también funcionará.
Todo esto (excepto FileZilla) puede funcionar en cron sin una contraseña.
Esta configuración funciona muy bien. La única vez que necesita la contraseña es cuando configura el ssh-copy-id inicial para configurar los inicios de sesión sin contraseña de RSA. Luego lo programa en FileZilla una vez. Después de eso, día a día, no se solicitan contraseñas. Esto es facil. Y la mejor parte es que puede usar todos los beneficios del programa rsync.
Esta respuesta explica cómo usar rsync sin una contraseña.
Además, no hay necesidad de instalar otro demonio (rsync) en ninguno de los sistemas.
Si aún no lo has hecho, haz esto:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver
y probarlo con esto:
ssh NASserver
y tal vez algo como esto:
scp myfile myusername@NASserver:Documents
Tengo un segundo disco duro, así que uso rsync para copiar el disco de arranque en un subdirectorio en sdb1 (montado bajo / mnt y excluido de rsync).
Si no tiene un disco duro físico y tiene suficiente espacio disponible, simplemente cree un subdirectorio en / mnt (o / media) y úselo.
Mientras el directorio esté excluido, no importa si está en una unidad separada o no.
Aquí está el script de respaldo:
cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo " BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem
DESPUÉS de rsync use un script:
Siempre hago un nuevo directorio en el servidor NAS de destino: / mnt / fullsys / mysystem para que solo se transfieran los archivos relevantes.
ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem
Voila! Lleva un tiempo pero luego se hace.
Ambos scripts pueden funcionar bien en cron.
La alternativa es usar FileZilla para enviarlo al servidor NAS manualmente.
Como puede haber eliminaciones, siempre a
make a new directory and enter it
través de FileZilla en el disco duro de 1 TB de destino, por lo que solo se transfieren los archivos relevantes.
Solo cuando finaliza la transferencia elimino la versión anterior.
Voila Éxito.
marcar al usuario en la dirección sería mejor
ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)
luego todo excludes
y --delete
etc. Todavía no lo he hecho funcionar, pero esto es lo más cercano que he visto. Se supone que tiene que hacer esto incluso si ya se puede ssh
y scp
que el servidor de destino, y las necesidades demonio rsync estar funcionando, ya que no utiliza el formato SFTP normal. Todavía estoy buscando