¿Cómo configurar Rsync sin contraseña con SSH en UNIX / Linux?


19

¿Cómo puedo configurar un rsync entre dos hosts sin proporcionar ninguna contraseña?

linux  ssh  rsync 


Maverick143 ha proporcionado una respuesta, pero esta pregunta realmente no pertenece a StackOverflow ya que tiene poco que ver con la programación. SuperUser.com habría sido más relevante.
Martin

Respuestas:


30

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 el 192.168.200.10servidor).

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 sshpara que no solicite una contraseña cuando realice ssh. Úselo ssh-keygenen 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/


55
Copie y pegue claramente desde thegeekstuff.com/2011/07/rsync-over-ssh-without-password , debe hacer referencia al autor original.
Lawrence Cherone

Si necesita utilizar un usuario diferente, puede hacerlo cuando realice la ssh-copy-id: ssh-copy-id -i ~ / .ssh / id_rsa.pub user@192.168.200.10
Finni McFinger

1

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

  • Abra id_rsa.pub, copie el contenido
  • Inicie sesión en ServerB con el mismo usuario en el comando rsync
  • En ServerB, agregue los contenidos a ~/.ssh/authorized_keys. Crea el archivo si no existe. Asegúrese de que el modo de archivo sea 700.

0

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 ittravé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.


-1

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

2
Si bien esto puede responder la pregunta, sería una mejor respuesta si pudiera proporcionar alguna explicación de por qué lo hace.
DavidPostill

También la sintaxis. Creo que esto se usa como una sustitución de comando algo como esto: rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)luego todo excludesy --deleteetc. 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 sshy scpque el servidor de destino, y las necesidades demonio rsync estar funcionando, ya que no utiliza el formato SFTP normal. Todavía estoy buscando
SDsolar
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.