Não é possível fazer o rsync funcionar no modo daemon-over-ssh

9

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 man page como: "USANDO AS RECURSOS DO RSYNC-DAEMON ATRAVÉS DE UMA CONEXÃO REMOTA-SHELL"

Então, eu coloquei um arquivo chamado rsyncd.conf na pasta inicial raiz:

[root]
path = /
read only = true

e tentou copiar o / etc / passwd como um teste:

rsync -vv -e ssh myserver::root/etc/passwd .

Mas 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 eu funcione, planejo restringir o acesso especificando o comando

rsync --server --daemon .

em ~ / .ssh / authorized_keys

    
por rjmunro 08.05.2009 / 17:54

2 respostas

9

Parece haver um bug na documentação ou na implementação do rsync. man rsync diz:

Rsync supports connecting to a host using a remote shell and then spawning a single-use “daemon” server that expects to read its config file in the home dir of the remote user.

mas ao se conectar ao root, de acordo com o / var / log / messages, ele estava procurando em /etc/rsyncd.conf para o arquivo de configuração (o local padrão para um arquivo rsyncd.conf quando não usado por SSH.

Eu tive que forçar o servidor ssh a usar o arquivo de configuração correto adicionando

command="rsync --config=/root/rsyncd.conf --server --daemon ."

para /root/.ssh/authorized_keys.

O motivo pelo qual eu não coloquei a configuração no local padrão é que eu não queria que alguém acidentalmente iniciasse um daemon rsync normal - eu só quero que um daemon tenha tanto acesso quando tiver o ssh correto chave.

    
por 12.05.2009 / 20:11
5

O rsync no modo daemon não é o que eu sugeriria se você quisesse bloqueá-lo o mais possível. Você deseja restringir o comando que uma chave SSH pode executar e invocar o comando copy usando essa chave.

Para descobrir para qual comando restringir a chave, execute a linha de comando rsync apropriada com uma pequena modificação no comando ssh:

rsync -avz -e 'ssh -v' stuff somewhere:/place

Você verá uma linha na saída de depuração, como:

debug1: Sending command: rsync --server -vlogDtprze.iLs . /place

Esse comando exato é o que você deseja restringir a chave para poder executar em .ssh / authorized_keys:

command="rsync --server -vlogDtprze.iLs . /place" ssh-dss AAAASSHKEY=
    
por 08.05.2009 / 19:01

Tags