Estou tentando configurar o rsync para copiar os dados de um servidor todos os dias. Para tornar o sistema o mais restrito possível, estou tentando usar o modo descrito na página do manual como: "USANDO OS RECURSOS DO RSYNC-DAEMON ATRAVÉS DE UMA CONEXÃO COM SHELL REMOTO"
Então eu coloquei um arquivo chamado rsyncd.conf na pasta raiz:
[root]
path = /
read only = true
e tentou copiar o / etc / passwd como um teste:
rsync -vv -e ssh myserver::root/etc/passwd .
Mas eu recebo o seguinte:
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]
A razão pela qual estou fazendo tudo isso é que, uma vez que funcione, pretendo restringir o acesso especificando o comando
rsync --server --daemon .
em ~ / .ssh / allowed_keys
Respostas:
Parece haver um erro na documentação ou na implementação do rsync. man rsync diz:
mas ao conectar-se ao root, de acordo com / var / log / messages, ele procurava no arquivo /etc/rsyncd.conf (o local padrão para um arquivo rsyncd.conf quando não usado no SSH.
Eu tive que forçar o servidor ssh a usar o arquivo de configuração correto adicionando
para /root/.ssh/authorized_keys.
A razão pela qual não coloquei a configuração no local padrão é que não queria que alguém iniciasse acidentalmente um daemon rsync normal - só quero que um daemon tenha tanto acesso quando tiver a chave ssh correta.
fonte
O rsync no modo daemon não é o que eu sugeriria se você quiser travá-lo o mais apertado possível. Você deseja restringir o comando que uma chave SSH tem permissão para executar e chamar o comando copy usando essa chave.
Para descobrir a qual comando restringir a chave, execute a linha de comando rsync apropriada com uma pequena modificação no comando ssh:
Você verá uma linha na saída de depuração, como:
Esse comando exato é o que você deseja restringir a chave para poder executar .ssh / allowed_keys:
fonte