Come posso impostare un rsync tra due host senza fornire alcuna password?
Come posso impostare un rsync tra due host senza fornire alcuna password?
Risposte:
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
(sul192.168.200.10
server).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
ssh
modo che non richieda la password quando esegui ssh. Utilizzaressh-keygen
sul 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/
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
~/.ssh/authorized_keys
. Crea il file se non esiste. Assicurarsi che la modalità file sia 700.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 it
tramite 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.
segnare l'utente in indirizzo sarebbe meglio
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)
quindi tutto excludes
e 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à ssh
e scp
al server di destinazione e il demone rsync deve essere in esecuzione perché non utilizza il normale formato sftp. Sto ancora cercando.