Iulian <[EMAIL PROTECTED]> scria la data de 10 Decembrie 2004:
> On Thu, 2004-12-09 at 15:57, Marius Stan wrote:
> > Iulian wrote:
> >
> > >nu vreau neaparat ssh. Orice solutie prin care sa pot automatiza
> > >procesul este buna.
> > >
> > pe server:
> > cat /etc/xinetd.d/rsync
> > # default: off
> > # description: The rsync server is a good addition to am ftp server, as it \
> > # allows crc checksumming etc.
> > service rsync
> > {
> > disable = no
> > socket_type = stream
> > wait = no
> > user = root
> > server = /usr/bin/rsync
> > server_args = --daemon
> > log_on_failure += USERID
> > }
> > plus in /etc/rsyncd.conf:
> >
> > hosts deny = 0.0.0.0/0
> > [gateway]
> > path = /var/backup/etc
> > hosts allow = ip.of.client
> >
> > pe client folosesti intr-un cron job o comanda de genul:
> > rsync -raz --delete-after --delete /etc rsync://ip.of.server/var/backup/etc
>
> Cam asta doream.
[...]
Nu asta doresti. rsync vine cu gaurile lui de securitate (multe si
mari in ultimul timp) si nu vrei sa-l pui sa asculte pe retea, mai ales
fara chroot si hosts allow. Era mult mai buna ideea pe care ai avut-o
la inceput, sa tunelezi rsync-ul prin ssh (care oricum este deschis).
Pentru asta ai de rezolvat doua probleme:
(1) cum faci ssh fara parola din script-ul de sincronizare de pe client;
(2) cum limitezi operatiile care se pot face in felul asta pe server
doar la rsync.
Pentru (1), pe masina client generezi (ca root) o cheie ssh fara
parola, pe care o pui intr-un fisier separat de celelalte chei:
ssh-keygen -b 1024 -t dsa -N '' -f /root/.ssh/rsync
Copiezi cheia publica pe server:
ssh -l root server.example.com \
"umask 077 ;
test -d .ssh || mkdir .ssh ;
cat >> .ssh/authorized_keys" \
< /root/.ssh/rsync.pub
In scriptul care face sincronizarea faci ceva de tipul urmator:
rsync -qrpzC --timeout=3600 \
--password-file=/etc/rsync.passwd \
--rsh="ssh -l root -i /root/.ssh/rsync" \
/etc [EMAIL PROTECTED]::etc
(parola este, evident, doar o masura de precautie suplimentara).
Pentru (2), editezi pe server fisierul
/root/.ssh/authorized_keys
unde cauti linia cheii pe care ai copiat-o de pe client, si ii adaugi in
cap o incantatie de tipul asta:
command="/usr/bin/rsync --server --daemon .",
from="1.2.3.4",no-port-forwarding,no-X11-forwarding,
no-agent-forwarding,no-pty ssh-dss ...
(totul pe o singura linie, la inceputul liniei, fara spatii dupa
virgule).
In urma acestor operatii nu mai trebuie sa mai lasi rsync sa asculte
pe retea. HTH.
Salutari,
Liviu Daia
--
Dr. Liviu Daia http://www.imar.ro/~daia
---
Detalii despre listele noastre de mail: http://www.lug.ro/