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/


Raspunde prin e-mail lui