Sincronizza su ssh con accesso root su entrambi i lati


14

Ho un server Ubuntu più vecchio e un server debian più recente e sto migrando i dati da quello vecchio a quello nuovo. Voglio usare rsync per trasferire i dati attraverso per rendere la migrazione finale più facile e veloce rispetto al processo tar / scp / untar equivalente.

Ad esempio, voglio sincronizzare le cartelle home una alla volta con il nuovo server. Ciò richiede l'accesso come root ad entrambe le estremità poiché non tutti i file sul lato sorgente sono leggibili dal mondo e la destinazione deve essere scritta con le autorizzazioni corrette in / home. Non riesco a capire come dare accesso alla radice rsync su entrambi i lati.

Ho visto alcune domande correlate, ma nessuna corrisponde esattamente a ciò che sto cercando di fare.

Ho installato e lavorato sudo su entrambi i server.

Risposte:


14

In realtà NON è necessario consentire l'esecuzione di autenticazione root tramite SSH per eseguire rsync come suggerisce Antoine. L'autenticazione del trasporto e del sistema può essere eseguita interamente sugli account utente purché sia ​​possibile eseguire rsync con sudo su entrambe le estremità per leggere e scrivere i file.

Come utente sul tuo server di destinazione puoi aspirare i dati dal tuo server di origine in questo modo:

sudo rsync -aPe ssh --rsync-path='sudo rsync' boron:/home/fred /home/

L'utente che si esegue come su entrambi i server avrà bisogno dell'accesso senza password * sudo al binario rsync, ma NON è necessario abilitare l'accesso ssh come root ovunque. Se l'utente che stai utilizzando non corrisponde all'altra estremità, puoi aggiungere user @ boron: per specificare un altro utente remoto.

In bocca al lupo.

* oppure dovrai aver inserito la password manualmente nella finestra di timeout.


5
Sebbene questa sia una vecchia domanda, vorrei aggiungere una parola di ATTENZIONE a questa risposta accettata. Secondo la mia comprensione, consentire "sudo rsync" senza password equivale ad aprire l'account di root per l'accesso remoto. Questo perché con questo è molto facile ottenere l'accesso completo alla radice, ad esempio perché tutti i file di sistema possono essere scaricati, modificati e sostituiti senza password.
Ascurion

3

Se i tuoi dati non sono molto sensibili, puoi usare tare socat. Nella mia esperienza questo è spesso più veloce di rsyncover ssh.

Hai bisogno socato netcatsu entrambi i lati.

Sull'host di destinazione, vai alla directory in cui desideri inserire i tuoi dati, dopo l'esecuzione:
socat TCP-LISTEN:4444 - | tar xzf -

Se l'host di destinazione è in ascolto, avviarlo sulla sorgente come:
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

Per questa configurazione è necessaria una connessione affidabile tra i 2 server.


Buon punto. In un ambiente affidabile, otterrai molta velocità non crittografando. Potrebbe non importare su file di piccole dimensioni, ma con GB di dati lo farà.
inizio

2

Ok, ho messo insieme tutti gli indizi per ottenere qualcosa che funzioni per me.

Consente di chiamare i server "src" e "dst".

Impostare una coppia di chiavi per root sul server di destinazione e copiare la chiave pubblica sul server di origine:

dest $ sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:

Aggiungi la chiave pubblica alle chiavi autorizzate di root sul server di origine

src $ sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys

Di nuovo sul server di destinazione, sposta i dati con rsync:

dest $ sudo -i
dest # rsync -aP src:/home/fred /home/
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.