br-linux

Artigos br-linux.org
Artigos sobre Linux em bom português, originais e com qualidade

Rsync sem senha
Publicado em 17 de abril de 2004

Nosso sempre colaborador Paulino Michelazzo (paulino@michelazzo.com.br) disse:
"Como fazer a sincronização e/ou backup de dados entre máquinas usando SSH sem senha."

Artigo muito bom...

Rsync sem senha


por Paulino Michelazzo - paulino@michelazzo.com.br

Pode parecer estranho o título do tutorial. E é estranho mesmo. Mas pior seria o verdadeiro título como "rsync utilizando SSH sem que você tenha que digitar a senha de acesso todas as vezes que rodar o script". Como este título seria muito grande, resolvi abreviar e explicar ao longo do tutorial.

Todos nós temos a necessidade de fazer cópias de segurança (ou backup) de informações, sejam estas entre estações e um servidor, entre servidores ou até mesmo entre estações. O Linux* conta com várias ferramentas interessantes para estas tarefas, sendo uma delas o rsync, um pequeno aplicativo que permite a cópia de arquivos de uma máquina para outra de forma segura.

Não estarei aqui discutindo como usar o rsync mas sim como permitir que um script acesse um servidor ou outra máquina sem que o usuário tenha que digitar a senha de acesso, podendo assim agendar o script para que seja executado de tempos em tempos.

Como fazer

Para que não seja necessário informar a senha todas as vezes que vamos fazer uma cópia dos arquivos de uma máquina é preciso exportá-la para a máquina remota. Com isso, a máquina local (que irá receber os arquivos), pode sem complicações fazer executar os comandos necessários para a operação.

Para exportar a senha, use os seguintes comandos:


# ssh-keygen -t dsa -f ~/.ssh/id_dsa

# cat ~/.ssh/id_dsa.pub | ssh root@maquina_remota 'cat - >> ~/.ssh/authorized_keys'

# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


A primeira linha faz com que seja criada uma chave DSA e esta seja armazenada no arquivo id_dsa. Observe que neste caso está sendo usado o parâmetro DSA devido ao suporte ao SSH versão 2. Se seus sistemas somente suportam SSH versão 1, mude esta opção para rsa1.

As outras duas linhas colocam a chave criada dentro do arquivo de chaves autorizadas tanto na máquina que serve os arquivos quanto na que recebe. Na segunda linha troque maquina_remota pelo endereço IP da máquina que vai servir os arquivos.


Pronto! Agora podemos criar um script para fazer a cópia dos arquivos:


#!/bin/bash
#
# backup.sh
#Script para fazer copia de arquivos do servidor para a maquina de backup
#
# Criado por Paulino Michelazzo - paulino@michelazzo.com.br
# Versao 1.0 - marco/04
#
#

rsync -avz root@maquina_remota:/origem_dos_dados/ /destino_dos_dados/


E podemos agendar para que este script seja executado todas as madrugadas as 2 da manhã, colocando a seguinte linha dentro do arquivo /etc/crontab

0 2 * * * root /etc/backup.sh


Pronto! Agora todos os dias as 2 da manhã, os arquivos da máquina remota serão copiados, em suas últimas versões/alterações para a máquina de destino (ou local), permitindo que, em caso de qualquer problema, estes possam ser colocados novamente nos seus devidos lugares.


Incrementando o script

Uma reclamação existente é que não existe um arquivo de log para o acompanhamento do que foi feito pelo script. Mas este problema pode ser resolvido com um redirecionamento de saída de tela para um arquivo, da seguinte forma:

#!/bin/bash
#
# backup.sh
#Script para fazer copia de arquivos do servidor para a maquina de backup
#
# Criado por Paulino Michelazzo - paulino@michelazzo.com.br
# Versao 1.0 - marco/04
#
#

SYNC_LOG=/var/log/rsync.log # local onde o arquivo de log sera armazenado
# Delimitador de entrada de log
echo "******************************" >> $SYNC_LOG
date >> $SYNC_LOG
echo "Inicio da sincronizacao" >> $SYNC_LOG
rsync -avz root@maquina_remota:/origem_dos_dados/ /destino_dos_dados/ >> $SYNC_LOG

echo "Fim da sincronizacao" >> $SYNC_LOG
echo "******************************" >> $SYNC_LOG

Com as alterações acima propostas, todas as saídas do script serão redirecionadas para o arquivo /var/log/rsync/log, o qual poderá ser lido com qualquer editor de sua preferência, sendo que as informações relativas a execução do script ficam entre os comentários Início e Fim da sincronização.

Outras mudanças podem acontecer, tais como escolher somente alguns arquivos ou um a inclusão de vários outros diretórios no mesmo script para a operação de backup. Estas mudanças podem ser implementadas por qualquer um da forma que for mais conveniente para cada cenário.

* A grafia está abreviada para Linux, sendo o nome correto GNU/Linux"

Autor: Paulino Michelazzo, link

Email: paulino@michelazzo.com.br

Postado por fuji em abril 17, 2004 12:19 AM

Comentários para "Rsync sem senha"

» Postado por: Everaldo Castro em abril 22, 2004 01:05 PM, 200.150.50.:

    Parabens Paulino!!!
    Tem tempos que uso este recurso e eh muito eficiente, alem de qubrar um galho enorme.
    Aqui vai uma dica para facilitar a exportacao da chave publica:
    ssh-copy-id -i ~/.ssh/id_dsa.pub [usuario@]maquina_remota

    []'s
    Everaldo Castro
    MinaS Livre

 

» Postado por: arnaldo em abril 23, 2004 12:51 AM, 200.140.26.:

    Blz !

    Testei e funcionou tudo certinho,
    meus dedos agradecem pelos milhares de toques economizados !

 

» Postado por: arnaldo em abril 23, 2004 04:48 PM, 200.96.227.:

    Paulino

    Voce sabe me informar como configurar o sshd para aceitar conexões somente por este método ( não admitir logon com nome e senha )

 

» Postado por: Paulino em abril 28, 2004 12:02 PM, 200.158.234:

    Arnaldo, faça assim:

    Verifique se seu servidor tem as seguintes linhas no /etc/ssh/sshd_config

    RSAAuthentication yes
    DSAAuthentication yes

    Depois verifique se o diretório que quer usar está com permissão para seu usuário. Se sim, manda ver :)

    Abraços

 

» Postado por: claudio em maio 3, 2004 01:30 PM, 200.207.217:

    No meu nao funcionou (conectiva 9)
    no cliente recebo a mensagem:
    Permission denied
    unespected EOF in read_timeout
    E no servidor:
    May 3 13:10:55 bdados pam_rhosts_auth[28630]: denied to root@bdados1 as root: bad .rhosts owner
    May 3 13:10:55 bdados in.rshd[28630]: rsh denied to root@bdados1 as root: Permission denied.
    May 3 13:10:55 bdados in.rshd[28630]: rsh command was 'rsync --server --sender -vlogDtprz . /u/logix/prod/*'
    May 3 13:10:55 bdados inetd[689]: pid 28630: exit status 1

 

» Postado por: Leandro em maio 5, 2004 02:37 PM, 200.175.117:

    Parabéns pelo tutorial!

    Faz tempo que procuro algo do tipo, tenho um script de backup usando rsync há tempos, e era muito tedioso ficar esperando para digitar a senha quando pedia. Agora coloquei no cron e está redodondinho!!!

    Valeu Paulino!!

    Leandro

 

» Postado por: Fernando em setembro 23, 2004 12:09 PM, 200.158.122:

    Paulino, meu problema e semelhante.
    O cron do meu conectiva 9 tá com problema. Se eu agenda um zip o tar ele começa a faze-lo e depois de algum tempo encerra a compactação ficando esta pela metade. Sem seguranca.
    Eu compacto direto no servidor.
    Tem alguma dica?
    Abração
    Fernando

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)

Envie seu comentário









Lembrar as informações pessoais?


Atenção: Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum, onde mais pessoas estarão disponíveis para respondê-lo..






Nota: os comentários pertencem a seus respectivos autores e são de responsabilidade de quem os postou. O restante desta nota está disponível sob a licença GNU FDL, exceto se explicitamente declarado em contrário.