Come installare Rsync senza password con SSH su UNIX / Linux?


19

Come posso impostare un rsync tra due host senza fornire alcuna password?

linux  ssh  rsync 

Questo dovrebbe essere molto utile: blogs.oracle.com/jkini/entry/how_to_scp_scp_and
Tom

Maverick143 ha fornito una risposta, ma questa domanda non appartiene davvero a StackOverflow poiché ha poco a che fare con la programmazione. SuperUser.com sarebbe stato più pertinente.
Martin,

Risposte:


30

Di seguito l'articolo di The Geek Stuff :

1. Test rsync su ssh (con password):

Esegui una rsync per assicurarti che richieda la password per il tuo account sul server remoto e che copi correttamente i file sul server remoto.

L'esempio seguente sincronizzerà la cartella locale /home/test con la cartella remota /backup/test(sul 192.168.200.10server).

Questo dovrebbe chiederti la password del tuo account sul server remoto.

rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/

2. ssh-keygen genera le chiavi.

Ora imposta in sshmodo che non richieda la password quando esegui ssh. Utilizzare ssh-keygensul server locale per generare chiavi pubbliche e private.

$ ssh-keygen

Inserisci passphrase (vuoto per nessuna passphrase):

Inserisci di nuovo la stessa passphrase: Nota: quando ti viene chiesto di inserire la passphrase, premi il tasto Invio e non inserire alcuna password qui.

3. ssh-copy-id copia la chiave pubblica nell'host remoto

Utilizzare ssh-copy-id, per copiare la chiave pubblica sull'host remoto.

ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.200.10

Nota: quanto sopra chiederà la password per l'account utente sull'host remoto e copierà automaticamente la chiave pubblica nella posizione appropriata. Se ssh-copy-id non funziona per te, usa il metodo di cui abbiamo discusso in precedenza per impostare la password ssh meno login.

4. Eseguire rsync su ssh senza password

Ora dovresti essere in grado di inviare ssh all'host remoto senza inserire la password.

ssh user@192.168.200.10

Eseguire di nuovo rsync, questa volta non è necessario immettere alcuna password.

rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/

Questo bene aiuta meglio. troy.jdmz.net/rsync/index.html
MangeshBiradar

5
Cancella copia e incolla da thegeekstuff.com/2011/07/rsync-over-ssh-without-password dovresti fare riferimento all'autore originale.
Lawrence Cherone,

Se devi usare un altro utente, puoi farlo quando esegui ssh-copy-id: ssh-copy-id -i ~ / .ssh / id_rsa.pub user@192.168.200.10
Finni McFinger

1

Genera la chiave pubblica in ServerA

$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:

La chiave pubblica verrà generata e archiviata

~/.ssh/id_rsa.pub

Copia la chiave pubblica nell'host remoto

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100

O

  • Apri id_rsa.pub, copia il contenuto
  • Accedi a ServerB usando lo stesso utente nel comando rsync
  • In ServerB, aggiungere il contenuto a ~/.ssh/authorized_keys. Crea il file se non esiste. Assicurarsi che la modalità file sia 700.

0

Tutti questi suggerimenti rsync non riescono a utilizzare l'ultima versione di agosto 2017 su Ubuntu 16.04 LTS. Nessuno di loro funziona.

Tutti condividono anche la carenza di richiedere un demone rsync in esecuzione sul file server.

Questa risposta funziona con un NAS Linux generico

QUI SONO I PASSI:
1) UTILIZZARE rsync come mostrato di seguito. (in una directory sotto / mnt o / media che hai creato o su un dispositivo che monti. Non importa quale) 2) TRASFERISCI i file CON scp come mostrato di seguito. Anche FileZilla funzionerà.

Tutto questo (tranne FileZilla) può funzionare in cron senza una password.


Questa configurazione funziona molto bene. L'unica volta in cui è necessaria la password è quando si configura l'id iniziale ssh-copy per configurare gli accessi senza password RSA. Quindi lo si programma in FileZilla una volta. Successivamente, giorno per giorno, non si verificano richieste di password. Questo è facile. E la parte migliore è che puoi usare tutti i vantaggi del programma rsync.

Questa risposta spiega come utilizzare rsync stesso senza una password.

Inoltre, non è necessario installare ancora un altro demone (rsync) su entrambi i sistemi.

Se non l'hai già fatto, fai come segue:

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver

e provalo con questo:

ssh NASserver

e forse qualcosa del genere:

scp myfile myusername@NASserver:Documents

Ho un secondo disco rigido, quindi uso rsync per copiare il disco di avvio in una sottodirectory su sdb1 (montato sotto / mnt ed escluso da rsync).

Se non si dispone di un disco rigido fisico e si dispone di spazio sufficiente, è sufficiente creare una sottodirectory in / mnt (o / media) e utilizzarla.

Fintanto che la directory è esclusa, non importa se si trova su un'unità separata o meno.

Ecco lo script di backup:

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

Dopo che rsync usa uno script:

Creo sempre una nuova directory sul server NAS di destinazione: / mnt / fullsys / mysystem in modo che vengano trasferiti solo i file pertinenti.

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

Ecco! Ci vuole un po 'ma poi è fatto.

Entrambi gli script possono funzionare bene in cron.


L'alternativa è utilizzare FileZilla per inviarlo manualmente al server NAS.

Dal momento che possono esserci delle eliminazioni, sempre make a new directory and enter ittramite FileZilla sull'HDD da 1 TB di destinazione, quindi vengono trasferiti solo i file pertinenti.

Solo al termine del trasferimento rimuovo la versione precedente.

Ecco. Successo.


-1

segnare l'utente in indirizzo sarebbe meglio

ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100

2
Sebbene ciò possa rispondere alla domanda, sarebbe una risposta migliore se tu potessi fornire qualche spiegazione sul perché lo faccia.
David Post

Anche la sintassi. Credo che questo sia usato come una sostituzione di comando qualcosa del genere: rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)quindi tutto excludese così via --delete. Non l'ho ancora fatto funzionare ma questo è il più vicino che abbia mai visto. Presumibilmente devi farlo anche se puoi già sshe scpal server di destinazione e il demone rsync deve essere in esecuzione perché non utilizza il normale formato sftp. Sto ancora cercando.
SDsolar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.