Muchas gracias por tu gran respuesta, Francisco Aunque, no me acaba de quedar claro algo...
El 10/02/14 09:20, Francisco SG escribió: ... > En la máquina que realiza el backup habrás definido una "conexión ssh" > con root que usa una clave que se usa exclusivamente para eso asociada > con el host remoto. Correcto! > En el host remoto la conexión está limitada para realizar exclusivamente > el backup del modo que comentas: > PermitRootLogin forced-commands-only Exacto! > Y en el authorized_keys lo que defino junto a la clave es lo siguiente: > from="xxxxxxxxxxx",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/local/bin/valida-rsync.sh" > ssh-dss... Bueno, no puedo especificar con el "from=xxx" ya que sería una IP dinámica, pero por lo demas... > El "truquito" viene de http://troy.jdmz.net/rsync/#validate-rsync se > trata de un script que hace de wrap para rsync validando la conexión, > pero hace no mucho descubrí que el propio paquete de rsync trae un > script en perl con el mismo fin, que es más flexible y que está > instalado en /usr/share/doc/rsync/scripts/rrsync.gz y puedes usar de un > modo muy similar, por ejemplo: > > from="xxxxxxxxxxx",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/local/bin/rrsync > -ro proyectos" ssh-rsa... ... El parametro en "~/.ssh/authorized_keys" seria... command="/usr/local/bin/rrsync -ro /" ssh-dss ... Yo no capisco nada de Perl (si al menos fuera Python...). Tengo que definir la variable SSH_ORIGINAL_COMMAND? y supongo que los parametros tambien, no? #!/usr/bin/perl # Name: /usr/local/bin/rrsync (should also have a symlink in /usr/bin) # Purpose: Restricts rsync to subdirectory declared in .ssh/authorized_keys # Author: Joe Smith <[email protected]> 30-Sep-2004 # Modified by: Wayne Davison <[email protected]> use strict; ... # The client uses "rsync -av -e ssh src/ server:dir/", and sshd on the server # executes this program when .ssh/authorized_keys has 'command="..."'. # For example: # command="rrsync logs/client" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAzGhEeNlPr... # command="rrsync -ro results" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAmkHG1WCjC... # # Format of the envrionment variables set by sshd: # SSH_ORIGINAL_COMMAND=rsync --server -vlogDtpr --partial . ARG # push # SSH_ORIGINAL_COMMAND=rsync --server --sender -vlogDtpr --partial . ARGS # pull # SSH_CONNECTION=client_addr client_port server_port my $command = $ENV{SSH_ORIGINAL_COMMAND}; die "$0: Not invoked via sshd\n$Usage" unless defined $command; die "$0: SSH_ORIGINAL_COMMAND='$command' is not rsync\n" unless $command =~ s/^rsync\s+//; ... our $short_no_arg = 'ACDEHIKLORSWXbcdgklmnoprstuvxz'; # DO NOT REMOVE ANY our $short_with_num = 'B'; # DO NOT REMOVE ANY # To disable a long-named option, change its value to a -1. The values mean: # 0 = the option has no arg; 1 = the arg doesn't need any checking; 2 = only # check the arg when receiving; and 3 = always check the arg. our %long_opt = ( 'append' => 0, 'backup-dir' => 2, 'bwlimit' => 1, 'checksum-seed' => 1, 'compare-dest' => 2, 'compress-level' => 1, 'copy-dest' => 2, 'copy-unsafe-links' => 0, 'daemon' => -1, 'delay-updates' => 0, 'delete' => 0, 'delete-after' => 0, 'delete-before' => 0, 'delete-delay' => 0, 'delete-during' => 0, 'delete-excluded' => 0, 'existing' => 0, 'fake-super' => 0, 'files-from' => 3, 'force' => 0, 'from0' => 0, 'fuzzy' => 0, 'iconv' => 1, 'ignore-errors' => 0, 'ignore-existing' => 0, 'inplace' => 0, 'link-dest' => 2, 'list-only' => 0, 'log-file' => 3, 'log-format' => 1, 'max-delete' => 1, 'max-size' => 1, 'min-size' => 1, 'modify-window' => 1, 'no-i-r' => 0, 'no-implied-dirs' => 0, 'no-r' => 0, 'no-relative' => 0, 'no-specials' => 0, 'numeric-ids' => 0, 'only-write-batch' => 1, 'partial' => 0, 'partial-dir' => 2, 'remove-sent-files' => $ro ? -1 : 0, 'remove-source-files' => $ro ? -1 : 0, 'safe-links' => 0, 'sender' => 0, 'server' => 0, 'size-only' => 0, 'skip-compress' => 1, 'specials' => 0, 'suffix' => 1, 'super' => 0, 'temp-dir' => 2, 'timeout' => 1, 'use-qsort' => 0, ); ... Un saludo, > El 9 de febrero de 2014, 18:47, Alberto <[email protected] > <mailto:[email protected]>> escribió: > > Hola, > estoy teniendo problemas para algo que creo recordar que ya hice en el > pasado, pero ahora, no se porque, no corre. > > El objetivo es hacer backup de un host remoto sobre uno local. La idea > es hacerlo a traves de RSYNC por SSH. > > Lo hago con un script cuya orden es la siguiente: > > HostLocal# rsync -avuz -e ssh --log-file=$vFilelog --progress --append > --partial --delete --exclude-from=$vFilexclude_remoto HostRemoto:/ > ${vPmbackup}/mnt/REMOTO/ > > El acceso SSH al host remoto no está permitido a root, por razones > obvias, pero para hacer la copia total, por supuesto de forma NO > Interactiva, lo hago a traves de clave pública, y limito el acceso por > configuración de SSH al comando concreto con la directiva... > > [root@remoto]# grep forced-commands-only /etc/ssh/sshd_config > PermitRootLogin forced-commands-only > > Y para utilizarlo, debo especificarlo en el "authorized_keys" de root ( > > [root@vps .ssh]# cat authorized_keys > command="rsync" ssh-dss > ???????????????????????????????????????????????????????????????????? > ???????????????????????????????????????????????????????????????????? > ???????????????????????????????????????????????????????????????????? > ????????????? root@HostLocal > > el problema es que hay que meterle la linea completa (parametros > incluidos) en el "authorized_keys" ya que solo va a aceptar lo que este > ahi, por tanto > todos los parametros no los reconoce. > > Logicamente, no puedo meter todos los parametros, o sea, la linea > completa. Como podeis ver, hay algunos que son variables, en base a la > fecha de la copia y demas, con lo que no tengo forma de meterle la linea > entera, y por tanto, el comando rsync falla. > > Acepto sugerencias. > > Gracias, > un saludo, > > > > -- > To UNSUBSCRIBE, email to > [email protected] > <mailto:[email protected]> > with a subject of "unsubscribe". Trouble? Contact > [email protected] <mailto:[email protected]> > Archive: http://lists.debian.org/[email protected] > > -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

