Impossibile far funzionare rsync in modalità daemon-over-ssh


11

Sto provando a configurare rsync per copiare i dati da un server ogni giorno. Al fine di rendere il sistema il più limitato possibile, sto cercando di utilizzare la modalità descritta nella pagina man come: "UTILIZZANDO LE FUNZIONI RSYNC-DAEMON TRAMITE UN COLLEGAMENTO A TELECOMANDO"

Quindi ho inserito un file chiamato rsyncd.conf nella cartella principale di root:

[root]
path = /
read only = true

e ho provato a copiare / etc / passwd come test:

rsync -vv -e ssh myserver::root/etc/passwd .

Ma ottengo quanto segue:

opening connection using: ssh myserver rsync --server --daemon . 
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [receiver=3.0.3]

Il motivo per cui sto facendo tutto questo è che una volta che lo faccio funzionare, ho intenzione di limitare l'accesso specificando il comando

rsync --server --daemon .

in ~ / .ssh / authorized_keys


Cosa è registrato / var / log / secure o / var / log / messaggi sul server ricevente?
Dave Cheney,

Era: rsync: impossibile aprire il file di configurazione "/etc/rsyncd.conf": nessun file o directory (2) Grazie, ciò ha portato a una soluzione, che posterò come risposta.
rjmunro,

Risposte:


11

Sembra che ci sia un bug nella documentazione o nell'implementazione di rsync. man rsync dice:

Rsync supporta la connessione a un host tramite una shell remota e quindi la generazione di un server "daemon" monouso che prevede di leggere il suo file di configurazione nella home directory dell'utente remoto.

ma durante la connessione a root, secondo / var / log / messages, stava cercando in /etc/rsyncd.conf il file di configurazione (la posizione standard per un file rsyncd.conf quando non usato su SSH.

Ho dovuto forzare il server SSH per utilizzare il giusto file di configurazione aggiungendo

command="rsync --config=/root/rsyncd.conf --server --daemon ."

a /root/.ssh/authorized_keys.

Il motivo per cui non ho semplicemente impostato la configurazione nella posizione predefinita è che non volevo che qualcuno avviasse accidentalmente un normale demone rsync - voglio solo che un demone abbia così tanto accesso quando ha la chiave ssh corretta.


5

rsync in modalità demone non è ciò che consiglierei se si desidera bloccarlo il più possibile. Si desidera limitare il comando per l'esecuzione di una chiave SSH e richiamare il comando di copia utilizzando tale chiave.

Per scoprire a quale comando limitare la chiave, eseguire la riga di comando rsync appropriata con una leggera modifica nel comando ssh:

rsync -avz -e 'ssh -v' stuff somewhere:/place

Vedrai una riga nell'output di debug come:

debug1: Sending command: rsync --server -vlogDtprze.iLs . /place

Quel comando esatto è ciò che si desidera limitare la chiave per poter essere eseguita in .ssh / authorized_keys:

command="rsync --server -vlogDtprze.iLs . /place" ssh-dss AAAASSHKEY=

3
Voglio essere in grado di eseguire diversi backup di sola lettura di parti del sistema, ad esempio backup di posta elettronica e database SQL ogni giorno, ma altre cose una volta alla settimana. Avrei bisogno di un comando specifico e di una chiave specifica per ogni possibile backup e non sarei in grado di eseguire backup extra ad hoc con la stessa infrastruttura.
rjmunro,

2
Abbastanza giusto - Prendo "Al fine di rendere il sistema il più limitato possibile" abbastanza letteralmente :)
MikeyB,

1
È possibile inserire più comandi in uno script e passare allo script i parametri come input di prima riga.
alecco,

1
c'è un modo per generare il comando seriale senza dover passare attraverso le informazioni di debug? '-vlogDtprze.iLs'
qodeninja,
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.