Não é possível rsync entre o servidor com um usuário específico

1

Eu tenho duas máquinas Linux e estou tentando sincronizar um arquivo entre os dois usando 'rsync'.

Eu gerou uma chave na máquina do cliente usando:

ssh-keygen -t rsa

Em seguida, copiei a chave pública para os arquivos /home/user1/.ssh/authorized_keys e /home/user2/.ssh/authorized_keys .

Eu sou capaz de rsync um arquivo para user1 usando o próximo comando:

rsync -a /home/user/sendIt.txt [email protected]:/home/user1/

No entanto, quando estou tentando usar o rsync para sincronizar um arquivo com o segundo usuário usando:

rsync -a /home/user/sendIt.txt [email protected]:/home/user2/

Eu recebo este erro:

protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(171) [sender=3.0.6]

Por que posso sincronizar com um usuário, mas não com o outro? Eu devo mencionar que o segundo usuário é projetado para ser usado apenas como um usuário SFTP, e ele é preso em seu diretório home.

Alguma idéia de como corrigi-lo e evitá-lo no futuro? Qualquer ajuda seria apreciada, obrigado.

    
por Dany Lavrov 31.10.2017 / 16:29

3 respostas

1

Você restringiu o acesso do usuário2 apenas ao SFTP. Assim, rsync não é permitido.

Para resolver isso, você teria que desfazer a restrição para SFTP em sshd_config .

Em vez disso - para permitir apenas rsync - você pode escrever um script que verifique se o comando a ser executado é rsync e defina ForceCommand para esse script em sshd_config .

Consulte também esta pergunta / resposta do serverfault.com .

    
por 31.10.2017 / 18:15
0

Como afirmado anteriormente por @sborsky, você não pode rsync porque a configuração do seu servidor está restrita ao SFTP. Você deve, no entanto, poder usar sshfs e montar o diretório remoto localmente e rsync no diretório montado.

    
por 01.11.2017 / 01:35
0

Problema resolvido.

Primeiro, tentei a abordagem ForceCommand , mas isso não funcionou para mim. O que eu acabei fazendo foi criar um diretório dentro do diretório user2 jailed / bind to. Este diretório é de propriedade de user1, e eu consigo rsync arquivos nele.

O processo é o seguinte: user2 foi preso / chrooted usando

Match Group sftponly
        ChrootDirectory /var/ftp
        ForceCommand internal-sftp
        AllowTcpForwarding no

dentro de /etc/ssh/sshd_config .

Este diretório foi ligado ao seu diretório inicial usando:

mount --bind /var/ftp /home/user2/ftp

Então, dentro de /var/ftp/ i:

mkdir tempDir
chown -R user1:user1 tempDir

Depois que os arquivos são sincronizados com o diretório, eles aparecem automaticamente no diretório jail user2 e ele pode lê-los.

    
por 01.11.2017 / 10:00

Tags